DoubleCloud 即将停止运营。利用限时免费迁移服务迁移到 ClickHouse。立即联系我们 ->->

博客 / 社区

chDB 加入 ClickHouse 家族

author avatar
Alexey Milovidov 和 Tanya Bragin
2024 年 3 月 6 日

今天,我们很高兴地宣布,由 ClickHouse 提供支持的嵌入式 SQL OLAP 引擎 chDB 现在已成为 ClickHouse 的一部分。chDB 的创建者和主要贡献者 Auxten 将与我们联手,专注于 chDB 的发展,并将其与 ClickHouse 生态系统更紧密地集成。

什么是 chDB?我们是如何走到这一步的?

ClickHouse 以其可扩展的分析数据库而闻名,该数据库使用客户端-服务器架构,但实际上我们一直都有 ClickHouse Local,一个包含 ClickHouse 的 CLI 工具。

人们 在 2023 年初意识到了 ClickHouse Local 并非常喜欢它,但我们也收到了一些反馈,他们希望能够将 ClickHouse Local 与他们在数据管道和数据分析中使用的其他工具集成。

大约在同一时间,Auxten 开始着手开发 chDB,其目标是能够将 ClickHouse 作为“开箱即用”的 Python 模块使用。

您可以使用 chDB 对本地或远程存储的所有 ClickHouse 支持格式和来源中的数据进行内存分析。您也可以选择将数据持久化到本地 ClickHouse 实例中,chDB 使用与 ClickHouse Local 相同的存储格式,这意味着它们的数据库可以互换。下图显示了与其他 ClickHouse 变体相比,chDB 的工作方式。

chDB Image 4 updated 2.png

我们对 chDB 印象深刻,并联系了 Auxten,告诉他我们非常喜欢他的工作,并希望帮助推广它。这导致了 Alexey 在 23.7 版本发布通话 中提到了 chDB,以及随后在 2023 年 8 月发布的 关于 chDB 的介绍性博客文章。几周后,Auxten 撰写了 chDB - 一辆自行车上的火箭发动机,他在其中介绍了 chDB 的设计决策和实现细节。

从那以后的几个月里,我们看到对 chDB 的兴趣越来越浓厚,一直与 Auxten 紧密合作,并逐渐看到了将合作提升到一个新的水平的机会。

如果我是 chDB 用户,这条消息意味着什么?

如果您是 chDB 的现有用户,这对您来说是个好消息。Auxten 现在将全职投入到 chDB 的开发中,而不仅仅是在业余时间进行开发。这意味着我们将能够更快地修复错误/问题,并添加新功能和集成。

chDB 很快将被集成到 ClickHouse 的持续集成管道中,这将使 chDB 能够紧密地遵循 ClickHouse 的发布计划。

我们将把 chDB 文档迁移到 ClickHouse 文档旁边,并将在我们的入门指南中突出显示 chDB。

我们还将寻找将 chDB 与数据工程生态系统中其他部分更好地集成的途径,因此如果您对我们应该从哪里开始有任何意见,请告诉我们!

接下来会发生什么?

我们的目标是创造一种无缝的体验,无论您是在笔记本电脑上分析 Parquet 文件,使用 Python 生态系统中的其他工具创建数据管道,还是构建一个实时数据仓库来为您的用户提供数据产品。

我们希望能够达到这样的程度,即在不同 ClickHouse 变体之间切换只需要很少的努力。

我们不知道这究竟会是什么样子,我们需要您的帮助来弄清楚。以下是我们下一步要做的事情的待办事项列表中的一些内容。

  1. 提升性能,尤其是在 Pandas DataFrame 和 Arrow Buffer 上
  2. 跟上最新的 ClickHouse 版本
  3. 与更多编程语言和数据源更好地集成

但也许您有更好的想法!我们很乐意听取您在 chDB Github 讨论 上的意见。

立即开始使用 chDB

同时,如果您还不熟悉 chDB,我们想提供一个简单的示例来激发您的兴趣。chDB 在 PyPi 上发布,可以使用 pip 包管理器进行安装。我们还将安装 Pandas 和 pyarrow,因为我们也会使用它们。

pip install chdb pandas pyarrow

安装完成后,我们可以打开一个 Python REPL、Jupyter Notebook 或类似工具,并导入以下模块。

import chdb

现在让我们看看如何查询 Hugging Face midjourney-messages 数据集,该数据集包含有关 2023 年几个月内由 Mid Journey 生成式 AI 服务生成的图像的元数据。该数据集包含 5500 万行,分布在 55 个 Parquet 文件中。

以下查询将返回图像数量以及最小/最大大小、宽度和高度。

chdb.query("""
FROM url('https://hugging-face.cn/datasets/vivym/midjourney-messages/resolve/main/data/0000{00..55}.parquet')
SELECT count(), COLUMNS(width, height, size) APPLY(max), COLUMNS(width, height, size) APPLY(min)
SETTINGS max_http_get_redirects=1
""", "Vertical")

Row 1:
──────
count():     55082563
max(width):  18928
max(height): 16128
max(size):   24498571
min(width):  32
min(height): 56
min(size):   312

如果我们想要持久化这些 Parquet 文件中的数据,我们也可以这样做。

from chdb import session as chs

sess = chs.Session("midjourney.chdb")
sess.query("CREATE DATABASE MidJourney")
sess.query("""
CREATE TABLE MidJourney.images
Engine = MergeTree
ORDER BY (size, height, width)
AS
SELECT *
FROM url('https://hugging-face.cn/datasets/vivym/midjourney-messages/resolve/main/data/0000{00..55}.parquet')
SETTINGS max_http_get_redirects=1, schema_inference_make_columns_nullable=0
""")

这将大约需要 4 分钟才能下载数据并将其导入 ClickHouse。然后,我们可以重复上述查询。

sess.query("""
FROM MidJourney.images
SELECT count(), COLUMNS(width, height, size) APPLY(max), COLUMNS(width, height, size) APPLY(min)
""", "Vertical")

希望这能让你对 chDB 的功能有所了解,但请 查看文档,获取更多示例。我们期待着了解您如何将这种紧凑而强大的方式用于您的本地项目中!

阅读有关 chDB 历史以及创建者 Auxten 视角的更多信息,查看他的文章

分享此文章

订阅我们的新闻简报

及时了解功能发布、产品路线图、支持和云服务!
正在加载表单…
关注我们
Twitter imageSlack imageGitHub image
Telegram imageMeetup imageRss image