博客 / 社区

chDB 加入 ClickHouse 家族

author avatar
Alexey Milovidov 和 Tanya Bragin
2024 年 3 月 6 日 - 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 相同的存储格式,这意味着它们的数据库是可互换的。下图显示了 chDB 与其他 ClickHouse 变体的比较工作方式。

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 数据集,该数据集包含 Mid Journey Generative AI 服务在 2023 年几个月内生成的图像的元数据。该数据集包含 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 做什么,但查看文档以获取更多示例。我们期待了解您如何在这个紧凑而强大的方式中使用 ClickHouse 在您的本地项目中!

阅读更多关于 chDB 的历史,以及创建者 Auxten 的观点,在他的文章中

分享这篇文章

订阅我们的新闻资讯

随时了解功能发布、产品路线图、支持和云产品信息!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。