博客 / 产品

ClickHouse Newsletter 2022 年 9 月刊:删除数据让您感觉更好

author avatar
Christoph Wurm
2022 年 9 月 15 日 - 7 分钟阅读

ClickHouse 的这个月令人兴奋。我们发布了 Lightweight Deletes,这是 2022 年最受期待的 ClickHouse 功能之一。我们即将公开启动 ClickHouse Cloud(在此处注册以获得提前访问权限:here)。

继续阅读有关 ClickHouse 22.8 LTS(长期支持)版本中的时髦功能、新 DELETE 查询的简单示例以及上个月 ClickHouse 相关报道的综述。

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

即将举行的活动

标记您的日历

ClickHouse v22.9 版本发布网络研讨会

  • 时间? 9 月 22 日星期四上午 9 点(太平洋标准时间)/ 晚上 6 点(欧洲中部夏令时间)
  • 如何加入? 在此处注册:here

硅谷 ClickHouse Meetup

  • 内容? 与其他用户一起聚会,听取 PostHog、Grafana 和 Barracuda 如何使用 ClickHouse。
  • 地点? 加利福尼亚州圣何塞
  • 时间? 9 月 28 日星期三下午 6 点(太平洋标准时间)
  • 如何加入? 在此处注册:here.

AWS re:Invent

  • 内容? 许多 ClickHouse 团队成员将参加 re:Invent!有兴趣与我们会面,一起喝一杯,聊聊 ClickHouse 吗?请告知我们!
  • 地点? 内华达州拉斯维加斯
  • 时间? 2022 年 11 月 29 日 - 12 月 3 日

ClickHouse v22.8 LTS

我们的新长期支持版本发布了许多新功能

  1. DELETE 查询 终于来了!Lightweight Deletes 是我们在 2022 年路线图中最受请求的功能之一,我们在提前数月的情况下交付了它。每当您当前使用 ALTER TABLE … DELETE 时,您都应该在几乎所有情况下切换到 DELETE FROM … WHERE。它执行起来便宜得多,但仍然是异步的(设置 mutations_sync = 2 以等待查询完成)。
  2. 扩展日期范围 Date32DateTime64 现在支持 1900 年到 2299 年的日期(之前为 1925 年到 2283 年)。
  3. 来自 S3 的并行分布式插入 ClickHouse 已经可以在单台机器上非常快速地插入数据(通常每秒数百万行)。但是,如果您有一个机器集群,您现在可以并行地在所有机器上从 S3 插入数据。甚至可能达到每秒数十亿行?应该有人尝试一下。
  4. JSON 日志记录 ClickHouse 现在可以以 JSON 格式输出其日志。这应该使其更容易摄取到日志管理软件中并进行查询。当然,您也可以摄取到 ClickHouse 中。
  5. [推断日期和数字](https://github.com/ClickHouse/ClickHouse/pull/39186 使用模式推断时,您现在可以告诉 ClickHouse 尝试从字符串中推断日期和数字。
  6. 查询参数 现在可以在交互模式下设置。例如,要定义名为 user 的参数,只需使用 SET param_user = alexey
  7. 更多 Pretty 格式 这里还有 7 个,使总数达到近 70 个。我个人喜欢 PrettyMonoBlock,但所有格式都非常“漂亮”。

请查看 发布网络研讨会幻灯片录像,请升级 - 这是一个长期支持版本。

本月查询:删除数据让您感觉更好

对于本月,让我们保持简单。并且略带讽刺意味,只是一点点。

如果 ClickHouse 22.8 中有一个您绝对必须尝试的新功能,那就是新的 DELETE 查询。到目前为止,在 ClickHouse 中删除特定行的唯一方法是使用 ALTER TABLE table DELETE WHERE cond 语句。它将异步重写所有包含与条件匹配的行的数据文件。由于 ClickHouse 中的数据文件默认情况下可以达到 150 GB,因此这非常昂贵,并可能导致大量的 CPU 和内存使用。

新的 DELETE 查询采用了不同的方法。它不是立即物理删除所有数据,而是仅使用隐藏列将指定的行标记为已删除。数据仍然存在,但它在查询中被透明地过滤掉。实际上,所有查询都使用附加条件 WHERE _deleted = false 执行。稍后,当 ClickHouse 在后台合并文件时,它将在合并过程中删除任何标记为已删除的行。

让我们看看新的 DELETE 查询有多么有用。

为了好玩,让我们创建一个包含稳定币投资组合的表(cost 是 2022 年 1 月 1 日每枚硬币的购买成本,price 是 2022 年 8 月 26 日的价值)

CREATE TABLE mymoney engine = MergeTree ORDER BY coin AS
SELECT 'USDC' AS coin, 1000 AS amount, 1.0002 AS cost, 0.9999 AS price
UNION ALL SELECT 'USDT', 1000, 1.0001, 1.00
UNION ALL SELECT 'USTC', 1000, 1.00, 0.0275

让我们计算一下我们的投资组合回报率

SELECT sum(amount * cost) cost, sum(amount * price) value,
value - cost gain_loss, 1 - value / cost pct  FROM mymoney

我们损失了 32% 的资金!发生了什么事?事实证明,TerraUSD (USTC) 并非如此 “稳定” 的稳定币

但这没关系,DELETE 查询将处理这个问题

SET allow_experimental_lightweight_delete = 1
DELETE FROM mymoney WHERE coin = 'USTC'

现在我们的投资组合回报率看起来好多了。如果事情真的如此简单就好了……

阅读角

我们一直在阅读的内容

  1. Cloudflare 博客:使用 ClickHouse 进行日志分析 除了使用 ClickHouse 提供实时 HTTP 和 DNS 分析(链接链接),Cloudflare 还使用 ClickHouse 存储内部日志。通过从 Elasticsearch 迁移到 ClickHouse,他们能够消除抽样,并在节省成本的同时提供快速查询。

  2. ClickHouse Grafana 插件 - 2.0 版本发布 我们流行的 ClickHouse Grafana 插件 2.0 版本,现在支持 HTTP 连接和 JSON 数据类型以及其他更改。快来看看!

  3. 探索海量的真实世界数据集:ClickHouse 中 100 多年的天气记录 将一个多世纪的天气数据加载到 ClickHouse 中是什么样的,以及如何使用它。

  4. 将数据导入 ClickHouse - 第 1 部分第 2 部分 将 Hacker News 数据导入 ClickHouse 并对其运行一些有趣查询的演练。

  5. 使用 Decodable 的 Change Stream 功能将 MySQL CDC 导入 ClickHouse Decodable 在此视频中展示了如何将数据从 MySQL 同步到 ClickHouse。

  6. 新的 ClickHouse 采用者:本月的一个有趣的补充,欢迎 Nintendo 模拟器 Dolphin。也欢迎开源广告拦截器 AdGuard 和非营利项目 OONI。也把自己添加进去吧!

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

ClickHouse 团队

分享这篇文章

订阅我们的新闻通讯

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