博客 / 产品

ClickHouse Newsletter 2022 年 12 月刊:项目化解您的所有难题

author avatar
Christoph Wurm
2022 年 12 月 13 日 - 9 分钟阅读

projector.jpg

我们都非常激动地分享,ClickHouse 的官方托管服务 ClickHouse Cloud 现已正式发布并可用于生产环境。如果您希望专注于使用 ClickHouse 而不是管理它,请试用一下。与往常一样,我们随时为您提供帮助!

继续阅读以了解 ClickHouse Cloud 中的新功能、未来几天和几周内即将举行的活动、ClickHouse 22.11 中的新增功能,以及投影如何帮助您在不更改查询的情况下加速查询。

并查看我们的节日阅读清单。如果您只阅读最技术的文章,我们为您准备了关于 ClickHouse 中 JIT 编译的这篇 25 页博客文章

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

##ClickHouse Cloud 现已正式发布

像往常一样,我们喜欢快速交付成果。因此,我们的 ClickHouse Cloud 托管服务的 GA 版本就在这里,正好赶上圣诞节。我们添加了许多功能,包括 SOC 2 Type II 合规性、正常运行时间状态和 SLA、在 AWS Marketplace 中的可用性、价格更低的开发层级、交互式 SQL 控制台、免费的 ClickHouse Academy 培训,并且我们启用了 PostgreSQL 和 MySQL 引擎、字典和 SQL UDF。

如果您刚开始使用 ClickHouse,或者需要托管您的非生产开发、暂存和 QA 环境,请查看我们新的且经济实惠的开发层级,价格低至每月 50 美元。

在此处查看我们的定价,阅读发布博客文章,并在 https://clickhouse.cloud/signUp 注册免费试用。

即将举行的活动

在您的日历上标记以下虚拟和现场活动

6 小时 ClickHouse 工作坊(2 次 3 小时)
内容?如果您是 ClickHouse 的新手,这正是为您准备的。在两天内进行的两个 3 小时课程中,我们将带您了解所有基础知识,从数据建模到查询优化
何时?

  1. 在此处注册参加 12 月 14 日星期三太平洋标准时间上午 8 点/欧洲中部时间下午 5 点和 12 月 15 日星期四太平洋标准时间上午 8 点/欧洲中部时间下午 5 点的活动。
  2. 在此处注册参加 1 月 4 日星期三太平洋标准时间上午 9 点和 1 月 5 日星期四太平洋标准时间上午 9 点的活动。
  3. 在此处注册参加 1 月 18 日星期三格林威治标准时间上午 10 点和 1 月 19 日星期四格林威治标准时间上午 10 点的活动

ClickHouse v22.12 发布网络研讨会

  • 时间? 12 月 15 日星期四太平洋标准时间上午 9 点/欧洲中部时间下午 6 点
  • 如何加入? 在此处注册

特拉维夫 Meetup

  • 时间? 1 月 16 日星期一晚上 6 点(在此处注册
  • 演讲者: ServiceNow、Contentsquare、CHEQ、ClickHouse

西雅图 Meetup

  • 时间? 1 月 18 日星期三上午 11 点(在此处注册
  • 演讲者: 待公布

##ClickHouse v22.11

我们的每月定期版本中包含许多新功能 - 本月还附带一篇专门的博客文章

  1. 复合时间间隔 您现在可以一次组合不同的间隔,例如 INTERVAL '1 HOUR 1 MINUTE 1 SECOND'SELECT '2023-01-30'::Date + (INTERVAL 1 MONTH - INTERVAL 2 DAY)。您能猜到第二个语句的结果吗?
  2. 路径中的递归 glob 在文件系统或 S3 中使用 ** 进行递归目录遍历。例如,要读取 S3 存储桶中的所有 Parquet 文件,请使用 FROM s3('https://mybucket.s3.us-east-1.amazonaws.com/**/*.parquet')
  3. 插入期间重试 keeper 当与 ClickHouse Keeper 或 ZooKeeper 的 keeper 连接暂时丢失时,长时间运行的插入有时可能会失败。我们有一个新的设置 insert_keeper_max_retries,可以为 keeper 操作启用重试,以防止整个插入查询失败。
  4. Hudi 和 DeltaLake 表引擎表函数,用于查询和摄取来自“数据湖”的数据。
  5. 只读 S3 磁盘 您可以直接在只读模式下从 S3 附加 MergeTree 表。这是一项实验性功能。
  6. 类型内部的对象 (JSON) 实验性的 Object(也称为 JSON)类型现在可以包装在其他类型中,例如 Array(JSON)

查看发布网络研讨会幻灯片录像,请升级,除非您想停留在长期支持 (LTS) 版本上。

每月查询:项目化解您的所有难题

今天,我们将了解一个非常有用的 ClickHouse 功能,您可能没有充分利用它:投影。

当所有数据都来自同一张表时,投影是物化视图更方便的替代方案。物化视图查询可以包含子查询或字典查找,因此目标表将包含来自多个来源的数据。与物化视图类似,投影被定义为查询,但此查询的结果保存在同一张表(但隐藏)中。

当 ClickHouse 收到对带有投影的表中的数据的查询时,它将首先分析应该使用原始数据还是投影数据来回答查询。将选择需要读取和处理的数据量较少的数据。

例如,考虑一个包含指标名称和值的简单表

CREATE TABLE metrics
(
	timestamp DateTime64 CODEC(Delta, Default),
	name LowCardinality(String),
	value Float64
) ENGINE = MergeTree()
ORDER BY (name, timestamp)

请注意数据类型的两个优化

  1. 我们没有按原样存储 timestamp,而是使用增量编码,其中仅存储一个值与下一个值之间的差异。我们预计大多数值会非常相似(相同的年、月、日、小时等),因此这将大大减少此列所需的存储空间。
  2. 同样,我们没有按原样存储指标名称,而是使用 LowCardinality 字典编码来存储名称映射和指向它们在数据中出现的位置的指针。我们只期望有限数量的唯一指标,因此这也将大大减少存储空间。

另请注意我们如何先按指标名称然后按时间戳对数据进行排序。这将使查找单个指标的查询非常快。以下查询查找最新的温度读数

SELECT name, argMax(value, timestamp) val_max FROM metrics
WHERE symbol = 'TEMP' GROUP BY symbol
 
┌─name───┬─val_max─┐
│ TEMP   │     179 │
└────────┴─────────┘
 
1 row in set. Elapsed: 0.009 sec. Processed 73.73 thousand rows, 1.38 MB (8.01 million rows/s., 150.32 MB/s.)

请求所有指标的最新值速度慢 100 倍

SELECT name, argMax(value, timestamp) val_max
FROM metrics GROUP BY symbol
255 rows in set. Elapsed: 0.902 sec. Processed 220.01 million rows, 6.08 GB (259.38 million rows/s., 6.74 GB/s.)

为了加快此查询速度,我们可以添加一个始终存储指标最新值的投影

ALTER TABLE metrics ADD PROJECTION latest_values
(SELECT argMax(value, timestamp) GROUP BY name)

为了立即提供数据,我们可以像这样物化投影

ALTER TABLE metrics MATERIALIZE PROJECTION latest_values
SETTINGS mutations_sync = 1

现在让我们再次运行相同的查询

SELECT name, argMax(value, timestamp) val_max
FROM metrics GROUP BY symbol
255 rows in set. Elapsed: 0.007 sec. Processed 255 rows, 156.13 KB (1.42 million rows/s., 84.33 MB/s.)

获取所有指标的最新值比获取单个指标的最新值更快!我们所要做的就是添加一个投影。无需更改我们的查询甚至表结构。

试用一下投影吧!我们相信其中一些投影对您的数据将很有用。

节日阅读清单

为您准备的一些阅读材料

  1. ClickHouse Cloud 现已正式发布 对于 ClickHouse 用户来说,这是一个非常激动人心的时刻,官方 ClickHouse 托管服务已正式发布并完全可用于生产环境。请在此帖子中阅读所有相关信息。

  2. ClickHouse Cloud 中的用户自定义函数 我们的团队重新回顾了 UDF,因为它们现在在 ClickHouse Cloud 中可用。

  3. 使用字典加速查询 深入解释如何使用字典来加速 ClickHouse 中的查询,并附带示例。

  4. ClickHouse 中的 JIT 这是我们一段时间以来读到的最具技术性的文章之一,我们自己的 Maksim Kita 深入探讨了 JIT 编译以及它在 ClickHouse 中的实现方式。

  5. 用于 Git 提交序列的窗口函数和数组函数 这篇关于分析 Git 提交的博客文章中包含一些非常好的窗口函数和数组函数的可视化解释。

  6. 我们如何使用 ClickHouse 分析数百万次构建的趋势 BuildBuddy 将其趋势页面从 MySQL 迁移到 ClickHouse - 一个查询从耗时 24 分钟(!)缩短到 ClickHouse 中的 0.317 秒!

  7. 在 ClickHouse 中使用分区 关于使用分区以及它们如何加速查询的快速入门。也请查看此处的其他帖子!

感谢您的阅读,我们明年再见。

ClickHouse 团队

分享此帖子

订阅我们的新闻通讯

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