新年快乐!和你们许多人一样,ClickHouse 的我们也休息了一段时间,并正在利用一月份的时间赶上进度和制定计划。为了帮助您思考 2023 年可以使用 ClickHouse 做些什么,请查看本月我们与 dbt Labs 和 Grafana 联合举办的网络研讨会、我们在假期前发布的 22.12 版本中的新功能、如何在 ClickHouse 中使用加密以及一份入门阅读清单,助您开启新的一年。
顺便说一句,如果您正在我们的网站上阅读本文,您是否知道您可以每月通过电子邮件接收新闻通讯?在此注册。
即将举行的活动
在您的日历上标记以下虚拟活动
网络研讨会:使用 dbt 在 ClickHouse 中转换数据
时间? 1 月 24 日星期二下午 2 点 GMT / 下午 3 点 CET
如何加入? 在此注册
演讲者: dbt Labs、Datricks、ClickHouse
ClickHouse v23.01 发布网络研讨会
时间? 1 月 25 日星期三上午 9 点 PST / 晚上 6 点 CET
如何加入? 在此注册
网络研讨会:大规模实时 SQL 分析:使用 ClickHouse 和 Grafana 的开源 GitHub 活动案例
时间? 1 月 26 日星期四晚上 6 点 CET / 上午 9 点 PST
如何加入? 在此注册
演讲者: Grafana、ClickHouse
网络研讨会:ClickHouse Cloud 入门
时间? 1 月 26 日星期四下午 1 点 PST
如何加入? 在此注册
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 连接器 具有完全一次交付语义的官方 ClickHouse Kafka Connect Sink 现在处于 Beta 阶段。试用一下!
- 使用架构和编解码器优化 ClickHouse 通过在表定义上做一些工作,您通常可以在减少存储的同时显着加快查询速度。看看我们是如何在这里做到的。
- 加速您的 ClickHouse 查询 提高查询速度的另一种方法是使用投影并指定良好的排序键(主索引)。与我们一起完成一个示例。
- 系统表以及 ClickHouse 内部机制的窗口 监控 ClickHouse 时,您的首选应该是系统表。有很多系统表,它们为您提供有关 ClickHouse 几乎所有操作的详细信息。阅读我们的入门指南。
- 基本监控查询:第 1 部分(INSERT) 和 第 2 部分(SELECT)。这些文章将帮助您开始监控两种最重要的查询类型:插入和选择。
- 使用 ClickHouse 构建 2023 年可观测性解决方案 - 第 1 部分 - 日志 越来越多的公司选择 ClickHouse 来存储其可观测性数据。在本系列文章的第一部分中,我们将向您展示如何将 ClickHouse 用于日志。
- 使用 clickhouse-local 提取、转换和查询本地文件中的数据 不想运行数据库但仍想使用 ClickHouse?使用无头 ClickHouse (clickhouse-local)!它是查询任何地方(包括本地文件)数据的最佳工具之一。我们认为每位数据工程师都应该安装它。
- 在 ClickHouse 中生成随机数据 是否曾经需要生成一些随机数据?我们多次需要这样做,因此 ClickHouse 内置了许多功能来帮助您。阅读一下并将您的数据生成外包给 ClickHouse。
- HIFI 从 BigQuery 迁移到 ClickHouse HIFI 正在为全球音乐创作者提供财务分析。他们最初使用 BigQuery,但对其按查询定价感到不满,因此他们转而使用 ClickHouse。
感谢您的阅读,我们下个月再见。
ClickHouse 团队