ClickHouse v23.6

简介: • 10 new features.• 12 performance optimisations.• 31 bug fixes.
您可以在YouTube上观看有关v23.6版本发布的详细功能介绍,如果您有兴趣,请不要忘记注册参加即将举行的23.7版本发布会.
特别感谢所有新的23.6版本贡献者!ClickHouse的受欢迎程度在很大程度上要归功于社区的努力贡献。看到社区不断壮大总是让人感到自豪。

https://www.youtube.com/watch?v=cuf_hYn7dqU
https://clickhouse.com/company/events/v23-7-community-release-call?utm_medium=email&utm_source=clickhouse&utm_campaign=202307-newsletter

Sorting Almost Sorted Data
ClickHouse非常适应有序的数据。作为一种列式数据库,插入时对数据进行排序对查询性能至关重要,也是用户在创建表时需要指定ORDER BY子句时遇到的早期概念之一。在23.6版本中,ClickHouse现在会利用数据中的任何自然排序模式来提高查询性能。特别是在某些情况下,某列在大多数情况下是单调递增的,但又不是排序键的一部分。

Mongo 6.x Support
如果说在现代Web应用程序堆栈中有一个几乎普遍存在的数据存储,那就是MongoDB。MongoDB是一种面向文档的数据库,旨在存储和检索类似于JSON的数据。虽然ClickHouse一直支持使用表函数与MongoDB集成,但Mongo v5.1引入了协议变更,需要对此集成进行更新。我们很高兴地宣布支持Mongo最新的v6版本。

Transform function
数据处理中的一个常见问题是需要将值映射到某些有意义的内容,通常是将代码映射到某些含义。在SQL中,最好使用transform函数来执行此任务。ClickHouse在一段时间内已经支持了对数字、日期和字符串的transform函数。在23.6版本中,我们已经对所有数据类型添加了对此函数的支持。现在可以使用transform函数将列转换为其他类型。

Query of the Month - windowFunnel
对于具有以前数据库经验的新手用户来说,ClickHouse支持的分析函数数量超出了标准的ANSI SQL。这些函数专门针对使某些查询更易于编写和执行更快的目标。
一个不太为人知的函数,专门为许多企业提出的一个常见问题而设计,就是windowFunnel函数。在本月的“每月查询”中,我们将探讨如何使用此函数来解决用户行为的漏斗分析。同时,我们将利用这个机会来更好地了解我们的贡献者。
windowFunnel函数允许在滑动时间窗口内计数事件的序列。更具体地说,用户可以指定预期的序列和它们可以发生的允许时间段。该函数会计算每个子序列中发生的事件的最大数量。
这个函数的名称表明了它的预期应用:漏斗分析。这可以简洁地描述为计数用户依次执行的多个事件。通过计算有多少独特的用户达到了序列中的每个事件,可以计算每个步骤的转化率,从而让业务所有者将问题定位到特定的阶段。这在电子商务中是一个常见的问题,企业希望在用户完成购买所需的步骤时,识别用户是如何“中途退出”的。
虽然这可以在传统的SQL中解决,但这是ClickHouse函数如何大大简化查询的一个例子。
为了示例目的,我们将使用流行的Github事件数据集。该数据集在我们的文档中存在,记录了2011年以来GitHub上的所有事件。这些事件包括用户添加存储库星标、创建分支、发起PR和发表评论等事件。这些事件数据自然适用于漏斗分析。在我们的案例中,我们很想知道我们在分叉ClickHouse存储库后,在30天内有多少用户提出了PR,以及这种行为与其他流行的开源项目相比如何。
对于这个查询,我们的事件序列仅包含两种事件类型:ForkEvent(分支事件)后跟PullRequestEvent(拉取请求事件)。这些事件需要在30天的时间段内由特定用户,在ClickHouse存储库上发生。
为了使我们的查询高效,首先我们要识别那些已经分叉了ClickHouse存储库的用户:
SELECT DISTINCT actor_login AS logins FROM github_events WHERE ((repo_name = 'ClickHouse/ClickHouse') OR (repo_name = 'yandex/ClickHouse')) AND (event_type = 'ForkEvent'))
windowFunnel函数的完整参数以及它使用的算法可以在我们的文档中找到。简而言之,我们需要指定允许的时间段和事件序列:
windowFunnel(2592000)(created_at, event_type = 'ForkEvent', event_type = 'PullRequestEvent')
将我们的分析限制在那些已经fork了仓库的用户上,我们的查询如下:

23.6 -1.jpg

这将返回每个用户执行的链中的步骤数,其中1表示Fork事件,2表示在30天内Fork后跟着PR。最后,我们需要在这些用户之间进行聚合,并计算达到每个步骤的总用户数:

23.6-2.jpg

因此,大约有17%的用户在Fork ClickHouse存储库后会在30天内创建一个PR。这似乎是一个令人鼓舞的数字,但我们很想知道与其他类似受欢迎的项目相比如何。我们将受欢迎定义为拥有超过25k颗星和5k个Fork(是的,这是一个很高的标准),并为满足这些标准的所有项目计算这个比率。注意,在这里我们需要按用户和存储库分组,以避免计算在30天内在一个存储库中Fork另一个存储库并创建PR的用户。尽管这是相当计算密集的操作,但仍然可以在几秒钟内完成:

23.6-3.jpg

23.6-4.jpg

也许所有基于GitHub的指标都倾向于一种虚荣的练习,但我们认为在这里排名第22位并不算太差,显示了我们的用户有一个健康的参与模式。更重要的是,这让我们能够向您展示一个很酷的ClickHouse函数,希望它能使您的查询更简单!

Interesting Links

  1. Monitorama PDX 2023 - How to Scale Observability Without Bankrupting the Company - David Gildeh, Netflix - 从演讲描述中可以看出:“随着需要实时收集、存储和查询的数据量呈指数级增长,每家公司都在努力控制其可观性成本!当Netflix迅速发展成为一个全球拥有数百万用户的Web规模公司时,不得不解决这个问题。”请密切关注ClickHouse及其如何适应基础设施!
    https://vimeo.com/843994807

  2. Working with Time Series Data in ClickHouse - 许多数据集随着时间的推移被收集起来,以便分析和发现有意义的趋势。通常,每个数据点都有一个时间标记,用于在收集日志或业务事件时使用。本博文提供了处理时间序列数据的技巧和窍门,基于我们看到用户需要执行的日常任务。我们涵盖了查询和常见的数据类型问题,例如处理测量值,以及在扩展时如何提高性能。
    https://clickhouse.com/blog/working-with-time-series-data-and-functions-ClickHouse?utm_medium=email&utm_source=clickhouse&utm_campaign=202307-newsletter

  3. ClickHouse and PostgreSQL - a Match Made in Data Heaven - PostgreSQL和ClickHouse代表着开源数据库中的佼佼者,各自在不同的用例中展示出各自的优势和劣势。最近我们在ClickHouse Cloud中启用了对PostgreSQL(和MySQL)的集成,我们认为现在是时候提醒用户如何在ClickHouse中使用这些强大的集成了。(系列文章的第一部分)
    https://clickhouse.com/blog/migrating-data-between-clickhouse-postgres?utm_medium=email&utm_source=clickhouse&utm_campaign=202307-newsletter

  4. Vector Search with ClickHouse - 在过去的一年里,大型语言模型(LLM)以及像ChatGPT这样的产品已经引起了全球的想象,并且推动了一波新的在其之上构建的功能。向量和向量搜索的概念是支持推荐、问答、图像/视频搜索等功能的核心。如果你错过了这一点,这个系列涵盖了向量搜索的基础知识以及在ClickHouse中的实现,所有内容都在一个方便的系列中讲述了出来。
    https://clickhouse.com/blog/vector-search-clickhouse-p1?utm_medium=email&utm_source=clickhouse&utm_campaign=202307-newsletter

  5. NYC Meetup Report: Vantage's Journey from Redshift and Postgres to ClickHouse - 如果你错过了最近在纽约举行的我们的聚会上Vantage精彩的演讲录像,你可以在我们的聚会报告中阅读有关它的所有内容。Vantage分享了他们从Redshift和Postgres转移到ClickHouse的原因,包括他们面临的挑战、切换的决定以及所获得的好处。
    https://clickhouse.com/blog/nyc-meetup-report-vantages-journey-from-redshift-and-postgres-to-clickhouse?utm_medium=email&utm_source=clickhouse&utm_campaign=202307-newsletter

相关文章
|
4天前
|
SQL 消息中间件 关系型数据库
ClickHouse(04)如何搭建ClickHouse集群
ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,[ClickHouse(03)ClickHouse怎么安装和部署](https://zhuanlan.zhihu.com/p/532431053)。
100 1
|
OLAP 数据库 索引
59.【clickhouse】ClickHouse从入门到放弃-分区表
【clickhouse】ClickHouse从入门到放弃-分区表
59.【clickhouse】ClickHouse从入门到放弃-分区表
|
4天前
|
存储 SQL 网络协议
ClickHouse(05)ClickHouse数据类型详解
ClickHouse是一款分析型数据库,支持基础、复合和特殊数据类型。基础类型包括数值(Int、Float、Decimal)、字符串(String、FixedString、UUID)和时间(DateTime、DateTime64、Date)类型。数值类型如Int8-64和Float32-64,Decimal提供高精度计算。字符串中的FixedString有固定长度,UUID作为主键。时间类型最高精度到秒。复合类型有数组、元组、枚举和嵌套,其中数组和元组允许不同数据类型,枚举节省空间,嵌套类型是多维数组结构。特殊类型如Nullable表示可为空,Domain封装IPv4和IPv6。
62 1
ClickHouse(05)ClickHouse数据类型详解
|
4天前
|
存储 分布式计算 Hadoop
ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
ClickHouse是一款高性能的列式存储OLAP数据库,由俄罗斯的Yandex公司开发,用于在线分析处理(OLAP)。它提供秒级大数据查询,适用于商业智能、广告流量等领域。ClickHouse速度快的原因包括列式存储、数据压缩、向量化执行和多线程分布式处理。然而,它不支持事务,不适合OLTP操作。相比Hadoop生态中的查询引擎,ClickHouse在大量数据查询上表现出色。一系列的文章详细介绍了ClickHouse的各个方面,包括安装、表引擎和使用场景。
58 0
ClickHouse(01)什么是ClickHouse,ClickHouse适用于什么场景
|
4天前
|
存储 SQL Linux
ClickHouse(03)ClickHouse怎么安装和部署
本文会介绍如何安装和部署ClickHouse,官方推荐的几种安装模式,以及安装之后如何启动,ClickHouse集群如何配置等。
131 1
|
9月前
|
SQL 存储 OLAP
ClickHouse为什么这么火?
ClickHouse为什么这么火?
|
10月前
|
SQL 数据采集 存储
|
4天前
|
OLAP 数据库管理
ClickHouse
ClickHouse
30 0
|
8月前
|
SQL 存储 算法
01-Clickhouse
01-Clickhouse
|
存储 算法 NoSQL
65.【clickhouse】ClickHouse从入门到放弃-数据存储
【clickhouse】ClickHouse从入门到放弃-数据存储
65.【clickhouse】ClickHouse从入门到放弃-数据存储

热门文章

最新文章