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

博客 / 产品

ClickHouse 2022年12月通讯:化解您的所有难题

author avatar
Christoph Wurm
2022年12月13日

projector.jpg

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

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

还可以查看我们的假期阅读清单。如果您只阅读最专业的文章,我们为您准备了这篇关于 ClickHouse 中 JIT 编译的25 页博客文章

顺便说一句,如果您在我们的网站上阅读此内容,您是否知道可以将每个月通讯作为电子邮件接收至您的收件箱?在此处注册。

##ClickHouse Cloud 现已正式发布

像往常一样,我们喜欢快速交付产品。因此,我们的 ClickHouse Cloud 托管服务正式发布版本及时赶上了圣诞节。我们添加了许多功能,包括 SOC 2 II 型合规性、正常运行时间状态和服务级别协议、AWS Marketplace 中的可用性、价格更低的开发层、交互式 SQL 控制台、免费的ClickHouse 学院培训,以及启用了 PostgreSQL 和 MySQL 引擎、字典和 SQL UDF。

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

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

即将举行的活动

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

6 小时 ClickHouse 研讨会 (2 x 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 点
  • 如何参加?在此处注册。

特拉维夫聚会

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

西雅图聚会

  • 何时?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. 路径中的递归通配符在文件系统或 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 中的用户定义函数 现在这些函数已在 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 团队

分享此文章

订阅我们的新闻

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