博客 / 产品

ClickHouse Newsletter 2022 年 4 月刊:JSON,JSON,JSON

author avatar
Christoph Wurm
2022 年 4 月 14 日 - 分钟阅读

来自阿姆斯特丹的问候,一年中的这个时候,郁金香盛开。这是您的四月刊,包含有关 ClickHouse 的所有信息。我们发布了一个新版本,其中有一个非常、非常、非常令人兴奋的功能(这可能太令人兴奋了吗?我们不这么认为!),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 中的新功能

  1. JSON 是一种新的数据类型,允许您将任何 JSON 文档直接摄取到列中。 在底层,ClickHouse 将创建动态子列来存储数据,因此访问仍然很快。

    从历史上看,当在 ClickHouse 中存储 JSON 文档时,您会为每个字段创建表列。 如果您预先知道您的数据会是什么样子,这会很好用。 但对于 JSON 来说,情况通常并非如此,特别是如果它是来自不同应用程序和服务的日志。 为了将这种“半结构化”数据导入 ClickHouse,通常需要开发复杂的数据模式,其中涉及数组和物化列。

    不再需要了! 现在,所有这些都可以放入 JSON 类型的一列中。 这是一个非常强大的功能,我们对此感到非常兴奋,所以请试一试,让我们知道您的想法。

  2. ARM 构建版本现在作为 Docker 镜像提供! 例如,您可以使用 Docker 在 macOS 上运行 ClickHouse,命令为 docker run clickhouse/clickhouse-server。 我们 CI 中的 ARM 构建版本现在已通过所有功能测试。 此外,您现在可以获取 deb、rpm、apk 和二进制软件包。

  3. S3 磁盘 作为 ClickHouse 的存储也已完全测试。 您可以使用 ClickHouse 配置文件的 <storage_configuration> 部分中配置使用 S3 进行存储。 注意:我们仍在努力解决一些性能问题。

  4. Hive 表函数 允许您直接从 Apache Hive 表中读取数据,并将其与 ClickHouse 中的数据组合。 或者使用 INSERT INTO clickhouse_table SELECT * FROM hive(...) 将数据插入到 ClickHouse 中。

有关更多详细信息,包括现场演示,请观看此处的发布网络研讨会录像。 此外,注册参加 4 月 21 日星期四太平洋标准时间上午 9 点 / 格林威治标准时间下午 5 点举行的 22.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 数据。 要将其插入到 JSON 列 ClickHouse 中,您可以运行类似以下命令

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

试用一下这个新的数据类型,让我们知道您的想法!

阅读角

我们一直在阅读的内容

  1. 使用 ClickHouse 构建 Paste 服务:Alexey 探索了如何使用许多 ClickHouse 反模式构建 Pastebin 风格的服务(这篇文章于 4 月 1 日发布,但只是一半是玩笑,该服务实际上可以工作!)。
  2. ClickHouse 的国际妇女节:阅读每月为您带来 ClickHouse 的女性的故事,以及她们作为科技界女性的一些经历。
  3. 数据流的快速索引:BENOCS 正在使用 ClickHouse 为全球大型电信公司收集和可视化网络流量。
  4. ClickHouse 22.3 发布博客文章 – 了解有关我们 22.3 版本的更多信息以及其中的内容。
  5. 新的 ClickHouse 采用者:欢迎 Swetrix Analytics。 也将您自己添加进来!

感谢阅读。 下个月见!

ClickHouse 团队

照片由 Matthew Waring 拍摄于 Unsplash

分享这篇文章

订阅我们的新闻通讯

随时了解功能发布、产品路线图、支持和云产品!
正在加载表单...
关注我们
X imageSlack imageGitHub image
Telegram imageMeetup imageRss image
©2025ClickHouse, Inc. 总部位于加利福尼亚州湾区和荷兰阿姆斯特丹。