ClickHouse 24.3 版本发布说明
一如既往,我们诚挚地欢迎所有在 24.3 版本中新加入的贡献者!ClickHouse 之所以备受欢迎,很大程度上要归功于社区的努力贡献。看到社区不断壮大总是令人感到谦卑。 以下是新贡献者的名字: johnnymatthews, AlexeyGrezz, Aliaksei Khatskevich, Aris Tritas, Artem Alperin, Blacksmith, Blargian, Brokenice0415, Charlie, Dan Wu, Daniil Ivanik, Eyal Halpern Shalev, Fille, HowePa, Jayme Bird, Joshua Hildred, Juan Madurga, Kirill Nikiforov, Lino Uruñuela, LiuYuan, Maksim Alekseev, Marina Fathouat, Mark Needham, Mathieu Rey, MochiXu, Nataly Merezhuk, Nickolaj Jepsen, Nikita Fomichev, Nikolai Fedorovskikh, Nikolay Edigaryev, Nikolay Monkov, Nikolay Yankin, Oxide Computer Company, Pablo Musa, PapaToemmsn, Peter, Pham Anh Tuan, Roman Glinskikh, Ronald Bradford, Shanfeng Pang, Shaun Struwig, Shuai li, Shubham Ranjan, Tim Liou, Waterkin, William Schoeffel, YenchangChan, Zheng Miao, avinzhang, beetelbrox, bluikko, chenwei, conicliu, danila-ermakov, divanik, edpyt, jktng, josh-hildred, mikhnenko, mochi, nemonlou, qaziqarta, rogeryk, shabroo, shuai-xu, sunny, sunny19930321, tomershafir, una, unashi, Кирилл Гарбар, 豪肥肥 由Maksim Kita、Nikolai Kochetov、Dmitriy Novik、Vladimir Cherkasov、Igor Nikonov、Yakov Olkhovskiy 等人共同贡献 分析器是 ClickHouse 中的一种新的查询分析和优化基础设施,在过去几年中经过精心打造。它提供了更好的兼容性和功能完整性,并且可以进行复杂的查询优化。 尽管我们之前对分析器进行了实验性支持,但从 24.3 版本开始,该功能已经升级为 beta 版,并默认启用。 如果您不想使用它,仍然可以通过配置以下设置来禁用:
在 24.4 或 24.5 版本中,我们计划将分析器升级为生产版本,并移除旧的查询分析实现。 旧的查询运行时不能很好地处理使用嵌套公共表表达式 (CTE) 和连接的查询。例如,下面的查询应该返回数字 1:
但是,如果我们在旧的查询运行时中运行它(在 24.3 版本中可以通过设置allow_experimental_analyzer = 0 来模拟),我们将得到以下错误:
分析器还支持同一查询中的多个数组连接 (ARRAY JOIN) 子句,这在以前是不可能的。 假设我们有以下 JSON 文件,其中包含订单、产品和评论。
我们希望对数据进行处理,以便在产品信息旁边逐行查看评论。我们可以通过以下查询实现这一目标:
现在,我们可以将元组元素视为列,这意味着我们可以传入评论元组的所有元素并格式化输出:
我们还可以为匿名函数创建别名:
此外,还有许多其他改进,您可以在演示幻灯片中了解到。【https://presentations.clickhouse.com/release_24.3/】 由 Unalian 贡献 在 ClickHouse 中,从另一个磁盘附加表是一个早已存在的功能,但在我们看下一个功能之前,让我们快速回顾一下它的工作原理。 ClickHouse/web-tables-demo 仓库包含了英国房价数据集的数据库文件。我们可以通过运行以下命令来附加该表:
UUID 需要保持原样,否则无法正确附加。当您运行附加表命令时,您不会看到错误,但是生成的查询将不会返回任何结果; 然后,我们可以运行以下查询,按年份分组查找最近 10 年的平均房价:
这个查询所需的时间取决于您运行它的机器的互联网带宽速度 - 数据并不存储在本地,因此在运行查询之前需要将数据拉取下来。 24.3 版本中已经更新了ATTACH PARITION命令,使您可以从不同/远程磁盘附加数据,这样就可以轻松地将数据库从 GitHub 复制到我们的机器上。让我们首先创建另一个具有相同模式的表:
接着,我们可以将来自 uk_price_paid_web 的数据附加到 uk_price_paid_local 表中:
这个命令会将数据库文件从 GitHub 仓库复制到我们的机器上。这样做比执行 INSERT INTO...SELECT AS 查询要快得多,因为后者需要先将数据从 GitHub 反序列化为内存数据结构,再将其序列化回本地数据库文件。 现在,让我们运行查询,查找针对本地表的平均销售价格:
速度快了很多! 由 Nikita Taranov 贡献 在 2023 年 11 月,亚马逊宣布支持 S3 Express 单可用区存储类型,旨在提供更低的延迟和更高的每秒读取次数,但成本却高出很多(7 倍),而可用性却较低。 为了支持这种新的存储类型,AWS/S3 库进行了更新,截至 24.3 版本,ClickHouse 已支持从这些bucket读取和写入。您可以在 S3 Express 文档中了解更多信息。 让我们来看看如何在 S3 Express bucket中查询数据以及可能的性能优势。 最近我们参加了一个查询 1 万亿行数据的挑战,这些数据分布在一个 S3 bucket中的 10 万个 Parquet 文件中。我们将所有这些文件都复制到了一个 S3 Express bucket中。 接着,我们在与 S3 Express bucket相同的区域和可用区中创建了一个 EC2 实例(这一点很重要,因为 Express 是特定于 AZ 的)。我们选择了 c7gn.16xlarge 实例类型,其网络带宽为每秒 125 GB - 这应该足够满足我们的需求了。 然后,我们下载并安装了 ClickHouse,并在配置文件中添加了我们的 S3 Express bucket的条目:
在查询bucket时,如果您没有指定该配置,将会收到以下错误:
现在我们已经完成设置,是时候来看看查询了。首先,我们将计算所有文件中记录的数量。由于我们正在查询 Parquet 文件,我们将能够从每个文件的 Parquet 元数据中计算结果,因此不需要下载每个文件。 让我们在普通的 S3 bucket上运行它:
现在我们来看看在 S3 Express 上的查询情况。S3 Express API 不支持文件路径中的通配符表达式,所以我们将返回bucket中的所有文件。这也会返回根目录,我们将通过编写 WHERE 子句来删除根目录(这是我们需要解决的一个问题)。
|
版权声明:本文为 clickhouse 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。