博客 / 产品

ClickHouse Newsletter 2023 年 4 月刊:轻量级删除

author avatar
ClickHouse 团队
2023 年 4 月 25 日 - 8 分钟阅读

您注意到我们的新外观了吗?我们借此机会更新了我们的网站,刷新了我们的品牌,并且目前正在设计周边产品。请密切关注网站,或参加您附近的活动,以获得购买一些新的 ClickHouse 装备的机会!

我们重新调整了本月新闻稿的顺序,以便更快地进入本月查询,但通常的阅读列表和即将举行的活动出现在底部。

顺便说一下,如果您正在我们的网站上阅读本文,您是否知道您可以每月通过电子邮件在您的收件箱中收到每期新闻稿?在此处注册

ClickHouse v23.3

  • 22 个新功能。
  • 14 项性能优化。
  • 61 个错误修复。

您可以在 v23.3 博客文章中详细了解所有功能,如果您有兴趣,请不要忘记注册 23.4 版本发布电话会议(欢迎提问与解答)。

轻量级删除现已正式发布 (Jianmei Zhang 和 Alexander Gololobov)

这种删除数据的方法现在代表了从 ClickHouse 中删除数据的首选和最有效方式。通过 DELETE FROM table 语法公开,用户可以指定条件来删除特定行。

Grafana 中的追踪

作为我们在 ClickHouse 上构建可观测性解决方案的 近期博客文章的一部分,我们专注于追踪,并意识到在我们的官方 Grafana 插件中对其渲染可以显著改进。通过一些小的更改,最新版本现在支持使用 Grafana 中的 Traces PanelExplore view 可视化追踪。

并行副本 (Nikita Mikhailov)

通过 并行副本,数据可以由同一分片的多个副本并行处理。这允许查询性能扩展,因为不同的数据子集可以由多个 ClickHouse 主机并行处理。

本月查询 - “轻量级删除”

轻量级删除有可能影响用户从根本上处理 ClickHouse 中数据不可变的情况。在本月的查询中,我们探讨了在增量更新物化表时如何使用轻量级删除。

我们经常看到用户使用复杂的模式,需要通过 JOIN 操作将多个表物化到一个新表中,以加速后续查询。在数据仓库用例中,此表通常代表一个模型。这种“反规范化”过程通常在 ClickHouse 中通过使用 INSERT INTO SELECT 查询 链接 来实现,其中 join 的结果被插入到目标表中。我们在下面可视化了这一点

materialized-target.png

除了简化后续查询之外,这种方法还可能显著提高查询性能。虽然这解决了数据静态的情况,但如果源表发生更改,则需要更多考虑。如果源表仅附加,则可以通过简单的条件轻松更新反规范化表,该条件标识任何更改。例如,这可以是源表上的时间戳列,用于标识新行。使用此条件,我们可以通过重新执行 INSERT INTO SELECT 将新行流式传输到目标表。

Update-materializedsimple.png

如果源表受到更新和重复项的影响,事情会变得稍微复杂一些。在这种情况下,用户可能会将新行流式传输到临时表 (1)。然后可以将目标表流式传输到新表中,并检查以省略临时表中的结果 (2) - 这假设存在唯一的行标识符(下面的 id)。然后将临时表中的行插入到新表中 (3)。此新表随后可以作为模型的最新版本公开,例如,使用 EXCHANGE 语句 链接。下面显示了这个相当复杂的过程

old-incremental.png

此过程需要复制数据的完整副本才能更新目标表。历史上,这在 ClickHouse 中比 删除 Mutations 更受欢迎,后者比简单的追加操作产生 更高的资源成本。然而,轻量级删除的到来为简化此过程提供了可能。下面我们展示了新行仍然如何流式传输到临时表 (1)。但是,此临时表现在可用于从现有目标表中删除行(使用新的 DELETE 语法),然后再插入新行。这避免了复制数据,并提供了一种更快的方式来更新物化模型。

delete-incremental.png

注意:此处的临时表可能只是一个子查询。使用表可确保该过程不受内存限制。

上述逻辑仍然相当复杂:肯定有一种方法可以封装此过程并使其更简单?本新闻稿的读者,同时也是 dbt 用户,将立即认识到上述用例是“增量物化” - dbt 中的一种简单模型类型。因此,dbt-clickhouse 插件 利用了上述完全相同的过程,现在推荐使用轻量级删除方法。

轻量级删除的用例不仅限于增量模型...支持处理 Kafka tombstone 消息 吗?我们很想听听轻量级删除如何改变了您的工作流程!

阅读列表

我们精选了一些您可能错过的精彩阅读,包括

  1. Apache Parquet 与 ClickHouse 深入探讨 - 第 1 部分 - 自 2013 年作为 Hadoop 的列式存储发布以来,Parquet 几乎已成为一种普遍的文件交换格式,可提供高效的存储和检索。在本博客系列中,我们将探讨如何使用 ClickHouse 读取和写入此格式,然后再更详细地深入研究 Parquet。对于更有经验的 Parquet 用户,我们还将讨论用户在使用 ClickHouse 编写 Parquet 文件时可以进行的一些优化,以最大限度地提高压缩率,以及最近为优化使用并行化的读取性能而进行的一些开发。
  2. 我作为连续创业公司产品经理的旅程 - 在这篇文章中,我们的产品副总裁 Tanya Bragin 分享了她的职业生涯故事。用她自己的话来说,“我经常被问到我是如何决定成为创业公司的产品经理的,以及多年来我学到了什么。事实是,我生活中没有这样的计划 - 我有点偶然地进入了产品管理职业。但我一路走来学到了一些东西,我将尝试在本博客中总结重点。”
  3. 加速 ClickHouse 中的 LZ4 - 此博客最初发布于 2019 年。我们编辑并重新发布,以纪念 LZ 算法系列的作者:Abraham Lempel 和 Jacob Ziv,他们最近去世了。人们很容易认为每个新功能都是新颖的。每个新版本的发布都将改变市场。然而,作为一个行业,我们站在巨人的肩膀上。Jacob 对信息论(超越压缩算法)的贡献是,并且仍然是,对几代从业者和研究人员的鼓舞。
  4. 使用 ClickHouse 和 Hex 构建实时分析应用程序 - 作为世界上最快的分析数据库,我们一直在寻找工具来帮助我们的用户快速轻松地实现他们在 ClickHouse 之上构建应用程序的梦想。因此,当 Hex.tech 宣布 ClickHouse 作为数据源可用时,我们很高兴看到构建实时应用程序的潜力。在这篇博客文章中,我们将探讨我们如何收集数据并使用 Hex.tech 为我们的应用程序“ClickHub”构建了一个简单的概念验证。

即将举行的活动

在您的日历上标记以下活动

ClickHouse v23.4 版本发布网络研讨会
4 月 26 日星期三 @ 太平洋夏令时上午 9 点 / 欧洲中部夏令时下午 6 点
在此注册

纽约市 ClickHouse Cloud 入门研讨会(名额有限!)
4 月 26 日星期三 @ 东部夏令时上午 10 点
在此注册

曼哈顿 ClickHouse 春季聚会
4 月 26 日星期三 @ 东部夏令时下午 5:30
在此注册

Supabase + ClickHouse:结合 OLTP 和 OLAP 世界的最佳优势
5 月 2 日星期二 @ 太平洋夏令时上午 8:00
在此注册

慕尼黑 AWS ClickHouse 入门研讨会(名额有限!)
5 月 3 日星期三 @ 欧洲中部夏令时上午 9 点
在此注册

使用 ClickHouse 和 Hex 构建实时分析应用程序
5 月 10 日星期三 @ 太平洋夏令时上午 9 点 / 欧洲中部夏令时下午 6 点
在此注册

柏林 ClickHouse 聚会
5 月 16 日星期二 @ 欧洲中部夏令时下午 6 点
在此注册

巴塞罗那 ClickHouse 聚会
5 月 23 日星期二 @ 欧洲中部夏令时下午 6 点
在此注册

感谢您的阅读,我们下个月再见!

分享这篇文章

订阅我们的新闻稿

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