来自阿姆斯特丹的问候,在这个时候,郁金香正盛开。这是您关于 ClickHouse 的 4 月份新闻。我们发布了一个新版本,其中包含一个非常非常非常令人兴奋的功能(这是否有点过于兴奋?我们不这么认为!),ClickHouse 网站上的新内容等等。让我们深入了解一下!
此外,下一个版本即将发布,我们邀请您参加发布网络研讨会,在发布当天直接从 ClickHouse 团队了解新功能。
ClickHouse Cloud 候补名单现已开放!
与 ClickHouse Inc. 交流过的用户都知道,我们一直在努力开发全球首个 ClickHouse 的无服务器托管云产品。众所周知,开始使用 ClickHouse 很容易(它是一个单一的二进制文件,因此您只需下载并在任何地方运行它),但大规模运行 ClickHouse 并进行复制和分片并不那么简单。
我们正在将 ClickHouse Cloud 作为“无服务器”服务开发,这意味着您无需配置任何实例并选择 CPU、内存和存储配置。所有这些都在后台为您处理。如果您觉得这很有趣,请在此处注册 ClickHouse Cloud 的候补名单此处。
ClickHouse 入门
说到新的网站内容,请查看这段关于 ClickHouse 入门的 25 分钟视频。ClickHouse 越来越受欢迎,许多新手第一次使用它。为了帮助他们,我们试图将开始使用 ClickHouse 所需的所有重要信息浓缩到一个视频中,时长相当于喝一杯咖啡的时间(除非您只喝浓缩咖啡)。请点击此处收听,并将其发送给您尚未了解 ClickHouse 的朋友!
ClickHouse v22.3
3 月 17 日,我们发布了 ClickHouse 22.3 LTS,其中包含许多新功能(特别是我们非常兴奋的一个)。它也是一个长期支持 (LTS) 版本,因此您可以在未来一年中使用它,我们将继续修复错误。如果您不打算每月使用最新版本升级 ClickHouse,则应使用 LTS 版本!
22.3 中有什么
-
JSON 是一种新的数据类型,允许您将任何 JSON 文档直接导入到列中。在后台,ClickHouse 将创建动态子列来存储数据,因此访问速度仍然很快。
从历史上看,当在 ClickHouse 中存储 JSON 文档时,您会为每个字段创建表列。如果您事先知道数据的外观,这可以很好地工作。但是对于 JSON,情况通常并非如此,尤其是在例如来自不同应用程序和服务的日志的情况下。为了将这种“半结构化”数据导入 ClickHouse,通常需要开发涉及数组和物化列的复杂数据架构。
不再需要!现在所有这些都可以放入一个 JSON 类型列中。这是一个非常强大的功能,我们对此感到非常兴奋,所以请尝试一下,并告诉我们您的想法。
-
ARM 构建现在可作为Docker 镜像使用!例如,您可以使用 Docker 在 macOS 上运行 ClickHouse,使用
docker run clickhouse/clickhouse-server
。我们 CI 中的 ARM 构建现在已通过所有功能测试。此外,您现在可以获得 deb、rpm、apk 和二进制包。 -
S3 磁盘 作为 ClickHouse 的存储现在也已完全测试。您可以在 ClickHouse 配置文件的
<storage_configuration>
部分中使用 S3 进行存储配置。注意:我们仍在解决一些性能问题。 -
Hive 表函数 允许您直接读取 Apache Hive 表中的数据,并将其与 ClickHouse 中的数据结合起来。或者使用
INSERT INTO clickhouse_table SELECT * FROM hive(...)
将数据插入 ClickHouse。
有关更多详细信息(包括现场演示),请查看此处网络研讨会的录制此处。此外,注册参加 4 月 21 日星期四上午 9 点 PST/下午 5 点 GMT 举行的 22.4 版本 4 月份发布网络研讨会。
希望您喜欢此版本,并请升级!
本月查询:JSON,JSON,JSON
让我们试用一下新的 JSON 数据类型
SET allow_experimental_object_type = 1;
CREATE TABLE json (o JSON) ENGINE = Memory
INSERT INTO json VALUES ('{"a": 1, "b": { "c": 2, "d": [1, 2, 3] }}')
SELECT o.a, o.b.c, o.b.d[3] FROM json
select 语句将返回 1、2、3,您可以看到 ClickHouse 中的 JSON 对象如何支持嵌套对象和数组,以及查询语法多么简洁。
您可能已经在某个文件中有 JSON 数据。要将其插入到 ClickHouse 的 JSON 列中,您可以运行类似以下内容
CREATE TABLE logs (message JSON) ENGINE = MergeTree ORDER BY tuple()
INSERT INTO logs SELECT json FROM file(log.json.gz', JSONAsString)
注意我们如何使用JSONAsString
格式来防止 ClickHouse 将每个 JSON 字段视为其自己的列(即使使用新的 JSON 数据类型,如果您的数据结构化且字段已知,您仍应考虑这样做)。
另请注意,我们无法按数据中的任何内容对 MergeTree 表进行排序,因为使用 JSON,我们还无法事先知道数据的结构。对于大型数据集,没有排序键是不好的!在实践中,我们通常希望将 JSON 文档中的一些重要且常见的字段提取到其自己的列中。例如,时间戳
CREATE TABLE logs (
timestamp DateTime,
message JSON
) ENGINE = MergeTree ORDER BY timestamp
INSERT INTO logs
SELECT parseDateTimeBestEffort(JSONExtractString(json, 'timestamp')), json
FROM file('access.json.gz', JSONAsString)
最后,当显示 JSON 列时,ClickHouse 默认只显示字段值(因为在内部,它表示为元组)。您可以像这样显示字段名称
SELECT message FROM logs FORMAT JSONEachRow
SETTINGS output_format_json_named_tuples_as_objects = 1
请尝试一下这种新的数据类型,并告诉我们您的想法!
阅读角
我们一直在阅读什么
- 使用 ClickHouse 构建粘贴服务:Alexey 探讨了使用许多 ClickHouse 反模式构建类似于 Pastebin 的服务(该帖子于 4 月 1 日发布,但只有一半是开玩笑的,该服务实际上有效!)。
- ClickHouse 的国际妇女节:阅读每个月为您带来 ClickHouse 的女性的故事以及她们在科技领域的经历。
- 数据流的快速索引:BENOCS 正在使用 ClickHouse 收集和可视化全球大型电信公司的网络流量。
- ClickHouse 22.3 版本博客文章 – 了解有关我们的 22.3 版本以及其中包含的内容的更多信息。
- 新的 ClickHouse 用户:欢迎Swetrix Analytics。也添加你自己吧!
感谢阅读。我们下个月再见!
ClickHouse 团队
照片由Matthew Waring在Unsplash上拍摄