新年快乐!和你们许多人一样,ClickHouse 的团队也休假了一段时间,并利用一月份进行回顾和计划。为了帮助您思考如何在 2023 年使用 ClickHouse,请查看我们本月与 dbt Labs 和 Grafana 联合举办的网络研讨会,我们假期前在 22.12 版本中发布的新功能,如何在 ClickHouse 中使用加密,以及一份让您开始新年的阅读清单。
顺便说一下,如果您正在我们的网站上阅读这篇文章,您是否知道可以将每月的通讯作为电子邮件接收至您的收件箱? 在此注册。
即将举行的活动
请将以下虚拟活动的日期标记在您的日历上
网络研讨会:使用 dbt 在 ClickHouse 中转换数据
时间: 1 月 24 日星期二下午 2 点格林尼治标准时间/下午 3 点中欧时间
如何加入: 在此注册
演讲者:dbt Labs、Datricks、ClickHouse
ClickHouse v23.01 版本发布网络研讨会
时间: 1 月 25 日星期三上午 9 点太平洋标准时间/下午 6 点中欧时间
如何加入: 在此注册
网络研讨会:大规模实时 SQL 分析:使用 ClickHouse 和 Grafana 分析开源 GitHub 活动的故事
时间: 1 月 26 日星期四下午 6 点中欧时间/上午 9 点太平洋标准时间
如何加入: 在此注册
演讲者:Grafana、ClickHouse
网络研讨会:ClickHouse Cloud 入门
时间: 1 月 26 日星期四下午 1 点太平洋标准时间
如何加入: 在此注册
ClickHouse v22.12
我们在 12 月份的版本中发布了许多优秀的更新。请查看 博客文章
- 优雅哈希连接 一种新的连接类型,它将要连接的表拆分为存储桶,然后逐个连接这些存储桶,从而大幅减少内存使用量(以速度较慢为代价)。试一试,还可以查看 ClickHouse 支持的所有其他连接算法 此处。
- 异步插入去重 现在异步插入被去重,因此如果您发送相同数据两次,ClickHouse 仅接受一次。
- 密码复杂度 ClickHouse 现在可以对用户密码强制执行密码复杂度规则 - 密码的长度要求以及是否必须包含任何特定字符类型。如果您在 ClickHouse 中创建用户,您可能应该配置此项,这样人们就不会只设置“asdf”。
- GROUP BY ALL 按 ALL 分组将按 SELECT 语句中所有不属于聚合函数的列进行分组。一个方便的简写,因此您无需手动指定它们。
- 带下划线的数字 有时指定
1_000_000
比1000000
更容易(如果您像我一样,您在输入前三个零后会短暂停顿一下,以确保自己输入正确)。虽然在这种情况下,您也可以使用1e6
。 - 从 MergeTree 异步读取 在速度较慢的磁盘上,尤其是像对象存储(S3 等)这样的远程存储,读取数据可能需要一些时间。因此,发送多个并行读取请求是有意义的,以减少收集查询所有数据所需的时间。新的设置允许指定 ClickHouse 将发出多少个并行请求,使您能够显着加快某些查询的速度,尤其是在较小的机器上。这在使用基于对象存储的 ClickHouse Cloud 时尤其有用。
请查看 版本发布网络研讨会幻灯片 和 录制,如果您不想停留在 长期支持 (LTS) 版本 上,请升级。如果您正在使用 ClickHouse Cloud,您已经在使用新版本。
本月的查询:防患于未然
在本节中,我们喜欢探索 ClickHouse 中鲜为人知但可能非常有用的功能。其中一项功能是内置加密和解密。假设您有一个客户表,其中包含潜在的敏感信息,例如客户地址
CREATE TABLE customers
(
id String,
address String
)
ENGINE = MergeTree
ORDER BY id
您可以像这样加密地址,而不是将它们存储为明文
INSERT INTO customers
SELECT 1, encrypt('aes-128-cbc', '35 Highcombe, London,SE7 7HT', 'donotusethisword')
结果数据将不可读
SELECT * FROM customers FORMAT Values
('1','��kg`�\0�\0"��́Xf����ĭ\n0�Ą.\f�')
除非您拥有正确的密钥
SELECT id, decrypt('aes-128-cbc', address, 'donotusethisword')
FROM customers FORMAT Values
('1','35 Highcombe, London,SE7 7HT')
啊,但是我听到你说,如果某些用户不应该能够看到某些列,最好 REVOKE
他们对这些列的访问权限。你当然是对的,但也许他们应该能够访问某些值,但不能访问其他值,这取决于他们是否能够访问密钥。默认情况下,如果解密失败,ClickHouse 将抛出异常。如果这种情况有时是预期的(当用户对某些值有有效密钥,而对其他值没有有效密钥时),您可以使用 tryDecrypt
,它将对无法解密的值返回 NULL
,并允许查询继续。
INSERT INTO customers
SELECT 2, encrypt('aes-128-cbc', '31 Richmond Court, Ellesmere Port,CH65 9EA', 'usesomeotherword')
SELECT id, tryDecrypt('aes-128-cbc', address, 'usesomeotherword') address
FROM customers WHERE address IS NOT NULL
('2','31 Richmond Court, Ellesmere Port,CH65 9EA')
本机数据库加密是一种直接且低成本的提高数据安全性的方法。它不像使用外部密钥管理系统那么安全,但外部密钥管理系统并不总是可用或易于设置。
新年阅读清单
一些阅读资料,让您以全新的姿态开始新的一年。
- ClickHouse 22.12 版本发布 我们在假期前发布的精彩圣诞版本发布博客文章。如果您正在使用连接,您应该看看新的优雅哈希连接!
- 宣布新的官方 ClickHouse Kafka 连接器 具有 exactly-once 传输语义的官方 ClickHouse Kafka 连接器接收器现已进入测试阶段。试一试!
- 使用架构和编解码器优化 ClickHouse 通过对表定义进行一些调整,您通常可以同时显着减少存储量并加快查询速度。请查看我们是如何做到的。
- 为您的 ClickHouse 查询加油 另一种提高查询速度的方法是使用投影并指定良好的排序键(主索引)。让我们一起浏览一个示例。
- 系统表和 ClickHouse 内部信息窗口 监控 ClickHouse 时,您首先应该查看系统表。有很多系统表,它们提供了有关 ClickHouse 执行的几乎所有操作的详细信息。在此阅读我们的入门教程。
- 必备监控查询:第 1 部分 (INSERT) 和 第 2 部分 (SELECT)。这些文章将帮助您开始监控两种最重要的查询类型:插入和选择。
- 2023 年使用 ClickHouse 构建可观察性解决方案 - 第 1 部分 - 日志越来越多的公司选择 ClickHouse 来存储他们的可观察性数据。在本系列文章的第一部分中,我们将向您展示如何将 ClickHouse 用于日志。
- 使用 clickhouse-local 从本地文件提取、转换和查询数据不想运行数据库,但仍然想使用 ClickHouse?使用无头 ClickHouse (clickhouse-local)!它是查询任何地方(包括本地文件)数据的最佳工具之一。我们认为每个数据工程师都应该安装它。
- 在 ClickHouse 中生成随机数据您是否曾经需要生成一些随机数据?我们已经做过很多次了,因此 ClickHouse 内置了许多功能来帮助您完成此操作。阅读并让 ClickHouse 外包您的数据生成。
- HIFI 从 BigQuery 迁移到 ClickHouse HIFI 为全球音乐创作者提供财务分析。最初使用 BigQuery,但他们对按查询计费感到不满意,因此他们切换到 ClickHouse。
感谢您的阅读,我们下个月再见。
ClickHouse 团队