您知道 ClickHouse 是世界上查询 JSON 文件速度最快的工具吗?此处 有证明!
此外,您是否曾想过 ClickHouse 二进制文件作为图片会是什么样子?嗯,我们想过。它很大,很漂亮 - 而且是灰色的?在此处观看。
本月,请继续阅读 ClickHouse Cloud 的简化定价、即将举行的活动的完整“巡回日历”、ClickHouse 22.10 中的新功能、一些现代数据集炼金术以及您的定期轻阅读材料。
顺便说一句,如果您正在我们的网站上阅读本文,您知道您可以每月在收件箱中收到每期新闻通讯吗?在此处注册。
ClickHouse Cloud - 简化定价
好消息,我们简化了 ClickHouse Cloud 服务的定价。现在我们只收取两项费用:计算和存储。前往定价页面查看详细信息。在接下来的几天内 - 直到 2022 年 11 月 15 日 - 我们额外提供 500 美元的积分。
10 月 27 日,我们直播了官方发布网络研讨会。我们讨论了我们构建 ClickHouse Cloud 的原因和方式,展示了演示并回答了您的问题。在此处观看录像。
巡回日历(又名“即将举行的活动”)
未来几周将充满 ClickHouse 活动。我们希望与您中的许多人亲自会面,无论是虚拟的还是面对面的。看看在哪里可以找到其他 Clickhouse 用户(和我们)
ClickHouse v22.11 版本发布网络研讨会
- 何时? 11 月 17 日星期四上午 9 点(太平洋标准时间)/下午 6 点(欧洲中部夏令时间)
- 如何加入? 在此处注册。
ClickHouse Cloud 入门研讨会
- 内容? 听取我们团队关于如何开始使用 ClickHouse Cloud 的步骤。我们将讨论架构、数据建模、视图、数据摄取和性能调优 - 最后有问答环节。
- 何时? 11 月 10 日星期四上午 10 点(太平洋标准时间)(美洲)
见面会 我们将举办一系列见面会,邀请 ClickHouse 用户和专家进行演讲。请带着您的好奇心和问题前来。也带上一些同事和朋友!
斯德哥尔摩见面会
- 何时? 12 月 1 日星期四下午 6 点(在此处注册)
- 演讲者: RELEX、ClickHouse
柏林见面会
- 何时? 12 月 5 日星期一下午 6 点(在此处注册)
- 演讲者: 德意志银行、BENOCS、ClickHouse
纽约市见面会
- 何时? 12 月 6 日星期二下午 6 点(在此处注册)
- 演讲者: Bloomberg、Disney、Prequel、Rokt、ClickHouse
特拉维夫见面会
- 何时? 1 月 16 日星期一下午 6 点(在此处注册)
- 演讲者: 待宣布
ClickHouse v22.10
上个月,ClickHouse 收到了第 100,000 次提交!您可以使用 git log
查找它,但首先,让我们看看 10 月版本中的新功能
- 备份到 S3 ClickHouse 现在可以将您的数据备份到 S3 存储桶。您可以备份(和还原)单个表和字典或整个数据库。支持完全备份和增量备份。
- 重置设置 您现在可以使用
SET setting_name = DEFAULT
将设置重置为其默认值。 - 始终合并旧部件 您可以指定部件在使用
min_age_to_force_merge_seconds
经过一定时间后合并。这样,您可以确保在设定的时间后,数据将以最少的文件数存在,从而提高查询性能。当将FINAL
修饰符 与do_not_merge_across_partitions_select_final
一起使用时,这也很有帮助,因为 ClickHouse 不必在查询时合并这些文件。 - 部件过多 我们放宽了部件过多检查。默认情况下,如果分区中的活动部件数超过 300(可通过
parts_to_throw_insert
配置),ClickHouse 将抛出异常。通过此更改,如果平均部件大小大于 10 GiB,则不会抛出错误,从而允许非常大的分区(100+ TB)。它可以通过新设置max_avg_part_size_for_too_many_parts
(默认值:10 GiB)进行配置。 - 随机数据 为了帮助您生成比均匀分布更真实的随机数据,现在有 11 个新的
rand*
函数。例如,randNormal
和randExponential
。
以及一项预览功能
- Kafka Connect Sink 我们已经开始为 ClickHouse 开发官方 Kafka Connect sink。它将支持精确一次语义,而无需任何第三方依赖项。您可以在此处找到当前源代码。如果您将 ClickHouse 与 Kafka 一起使用,请试用一下并给我们一些反馈!
请查看版本发布网络研讨会幻灯片和录像,并请升级,除非您想停留在长期支持 (LTS) 版本上。
本月查询:混淆的净化效果
有用的数据集就像大型钻石:难以找到但非常有价值。当您拥有一些数据集时,通常会将它们锁定在安全空间中 - 在保险库或数据库中。不幸的是,最好的数据集通常包含有关客户、专有数据或商业秘密的敏感信息。因此,它们只能存在于生产数据库中,即使出于内部开发和测试目的,也必须使用其他数据,通常是合成生成的测试数据。
但是,合成数据通常存在缺陷。它通常不能准确地表示真实数据的样子。维度基数、数值的范围和分布以及空值的比例等特征通常与实际数据有很大差异。这对于开发和测试扫描大量数据以得出结果的查询来说是一个主要问题 - 这正是 ClickHouse 擅长的。
例如,对于包含 GROUP BY dimension
的查询,维度基数在数百或数十亿之间,内存使用率和性能存在很大差异。GROUP BY
将使用哈希映射计算,每个唯一值对应一个键。几百个键值对很容易放入内存,查询速度会非常快 - 而对于数十亿个值,哈希映射将不得不卸载到磁盘,从而导致查询速度慢得多,甚至查询可能会失败。
那么,我们如何使用在特征(例如列中值的基数)方面接近实际数据但不是实际数据的数据进行开发和测试呢?
一种答案是混淆。ClickHouse 实际上附带了一个内置的混淆器,在 Linux 上为 clickhouse-obfuscator
,在 Mac 上为 clickhouse obfuscator
。文档在此处。
ClickHouse Obfuscator 将读取数据集作为其输入,并生成数据集作为其输出,该数据集在特征上非常相似,但不包含相同的实际值。让我们看看它如何使用英国房地产价格支付数据集。
首先,看一下一些高级特征
SELECT count(), avg(price), max(price) FROM uk_price_paid ┌──count()─┬──────avg(price)─┬─max(price)─┐ │ 26763022 │ 208231.24594106 │ 932540400 │ └──────────┴─────────────────┴────────────┘
正如我们所见,数据集中房地产交易总数为 2670 万笔,平均价格约为 208,000 英镑,最高支付价格为 9.32 亿英镑。让我们混淆一下
clickhouse obfuscator --structure "price Int64, date UInt16, postcode1 String, postcode2 String, type String, is_new UInt8, duration String, addr1 String, addr2 String, street String, locality String, town String, district String, county String, category String" --input-format Parquet --output-format Parquet --seed "${RANDOM}${RANDOM}${RANDOM}${RANDOM}" < uk_price_paid.parquet > obfuscated.parquet
请注意我们如何将一个 Parquet 文件转换为另一个 - 混淆器适用于非 ClickHouse 数据!让我们检查一下混淆数据集的相同特征是什么样的
SELECT count(), avg(price), max(price) FROM file('obfuscated.parquet') ┌──count()─┬─────────avg(price)─┬─max(price)─┐ │ 26763022 │ 223585.90603467726 │ 994963827 │ └──────────┴────────────────────┴────────────┘
行数相同 - 但平均价格和最高价格略有变化。甚至价格分布也保持大致相同。例如,低于 100 万英镑的价格分布
SELECT band, q1.count AS real, q2.count AS obfuscated FROM (SELECT floor(price, -5) band, count() count FROM file('uk_price_paid.parquet') GROUP BY band) q1 LEFT JOIN (SELECT floor(price, -5) band, count() count FROM file('obfuscated.parquet') GROUP BY band) q2 USING band WHERE band < 1e6 ORDER BY band ┌───band─┬────real─┬─obfuscated─┐ │ 0 │ 8728237 │ 8803178 │ │ 100000 │ 9277684 │ 7936176 │ │ 200000 │ 4422328 │ 5148196 │ │ 300000 │ 1944389 │ 1906225 │ │ 400000 │ 975584 │ 1493438 │ │ 500000 │ 465029 │ 361164 │ │ 600000 │ 291360 │ 221633 │ │ 700000 │ 178879 │ 249621 │ │ 800000 │ 117307 │ 113644 │ │ 900000 │ 77406 │ 166402 │ └────────┴─────────┴────────────┘
值得注意的是,混淆器不会加密或哈希数据 - 因此并非所有信息都会丢失(故意保留特征)。因此,与任何人共享混淆数据集并非自动安全。但这应该在使共享更容易方面大有帮助,并且对于内部使用(例如,应用程序的开发和测试)尤其有用。
祝您使用 ClickHouse Obfuscator 玩得开心 - 也许您可以释放一两个有用的数据集。
阅读角
我们一直在阅读的内容
- 速度提升 100 倍:GraphQL Hive 从 Elasticsearch 迁移到 ClickHouse The Guild 测试了 InfluxDB、TimescaleDB 和 ClickHouse,以替换其现有的 Elasticsearch 设置。毫不奇怪(至少对我们而言),ClickHouse 成为明显的赢家 - 查询时间为 100 毫秒,而 TimescaleDB 为 3 秒,InfluxDB 为 5 秒。通过从 Elasticsearch 切换到 ClickHouse,The Guild 现在可以摄取数十亿个事件,而不仅仅是数百万个事件。
-
13 个 ClickHouse“致命罪” 以及如何避免它们 如果您正在使用 ClickHouse,那么这篇博文适合您。就在万圣节前夕,我们总结了 ClickHouse 用户遇到的 13 个常见问题 - 以及如何避免这些问题。请阅读一下,可能有一些您自己遇到过的问题(也可能有一两个您即将遇到的问题)。
-
世界上查询 JSON 文件速度最快的工具 - ClickHouse 挑战了 Spark SQL 等通用工具 - 以及 OctoSQL 和 SPyQL 等专用工具 - 并脱颖而出。
-
使用 Fluent Bit 将 Kubernetes 日志发送到 ClickHouse 和 使用 Fluent Bit 将 Nginx 日志发送到 ClickHouse 关于使用 Fluent Bit 日志处理器和转发器将日志摄取到 ClickHouse 的两部分系列文章。您应该尝试将日志放入 ClickHouse - 磁盘上的数据大小可能会小得多,并且仪表板的速度比您今天拥有的速度快得多!
-
使用 ClickHouse 可视化数据 - 第 3 部分 - Metabase - 我们关于使用不同用户界面在 ClickHouse 中可视化数据的系列文章的第 3 部分。第 3 部分介绍了 Metabase,而第 1 部分介绍了 Grafana,第 2 部分介绍了 Superset。
-
使用 IN 查询和反规范化优化星型模式查询 - 这里有一些关于加速 ClickHouse 查询的巧妙技巧,这些查询结合了来自多个表的数据。例如,使用
IN
而不是JOIN
将查询时间从 19 秒减少到 130 毫秒。 -
深入探讨:ClickHouse 与 PostgreSQL - 与许多其他公司一样,Posthog 最初使用 PostgreSQL,后来迁移到 ClickHouse。在这里,他们详细介绍了他们的想法以及他们实现的好处。此外,还有许多可爱的刺猬。
感谢您的阅读,我们下个月见。
ClickHouse 团队