“Alexey,你希望 ClickHouse 的未来怎么发展?”
我希望 ClickHouse 成为最流行的开源分析数据库,从此任何人考虑分析数据库的时候,脑海里第一个也是显而易见的选择就是 ClickHouse。
顺便说一句,
我们其实已经是最流行的开源分析数据库了,
所以我想让这个现状保持下去,以便更多的人能知道这一点。
作者 | 王启隆
当今的分析型数据库领域,ClickHouse 是最闪亮的名字之一 —— 若放在几年前,可能只是如此,但现在 ClickHouse 已经成为了整个大数据领域都不可忽视的重要话题。「
BAT
」无一不青睐于这款超“快”的数据库:字节跳动是他们最大的客户,阿里云则和他们达成了战略合作,
连腾讯的游戏部门和 QQ 音乐也用
ClickHouse
搞数据分析
。
言归正传,为什么 ClickHouse 最近这么火?不如问一问它的创始人,也是花了三年打造该数据库原型的灵魂人物,
Alexey Milovidov
。他前段时间奔赴
中国广州
,参与了数据库领域的顶级学术会议 VLDB,相当于人工智能领域耳熟能详的 ICML 和 NeurIPS 等顶刊会议。藉此机会,CSDN《新程序员》再次采访了 Alexey。
在
我们
与 ClickHouse 2023 年的合作采访
中,Alexey 曾讲述了他还在“俄罗斯谷歌” Yandex 的故事。当时面对是否购买现成数据库产品的决策难题,Alexey 的团队选择了更具挑战性的自主研发道路,靠 C++ 从零开始打造了一款列式数据库。
时过境迁,ClickHouse 团队如今也扩大到了 200 人,分布在全球各地,包括欧洲、北美、东南亚和澳大利亚。这一增长不仅体现在工程技术团队,还包括支持和市场营销等部门。
Alexey 还向我们介绍,ClickHouse 现在会按照查询引擎、数据存储等不同的专业领域划分团队,同时采用跨区域配置,即某些团队成员分布在不同大洲,以覆盖更广的时区。例如,一个团队可能有成员位于欧洲和美洲,而另一个团队可能覆盖欧洲和亚太地区。
有趣的是,去年采访中,Alexey 曾透露 Slack(类似国内的企业微信)是他们的主要异步沟通方式。而今年为了减少实时会议,所以 Alexey 加大了 Slack 的使用力度。
当时他还吐槽员工们喜欢在 Slack 里偷懒,或是发一些和工作无关的内容,现在也是“真香”了。
一年以来,最大的话题仍然和去年一样,是
人工智能
。Alexey 对 AI 曾经的见解是“它可以删掉工作中哪些无聊的部分,只留下有趣的部分”。而这一次采访中,Alexey 向我们透露了更多 ClickHouse 和 AI 结合的最新内容,比如:
-
自己的使用体验
:“我也使用 Copilot 和 ChatGPT,但只是在写 JavaScript 的时候用一用,因为我不是 JS 的专家。”
说罢,Alexey 还自信地补了一句:“
至于写 C++ 的时候,我不会去用 AI,而是自己写。我会多次阅读自己编写的代码,非常认真地对待它,并且比竞争对手做得更早。
”
-
人工智能的未来
:“生成式人工智能会加速每一个人、每一个团队的速度。所以我们必须使用它,我们的竞争对手也必须使用它 —— 而且他们很可能已经在使用了。
总之,竞争会更激烈,但进步会更快。我很喜欢这种感觉。
”
-
ClickHouse 的竞争优势
:ClickHouse 在数据准备阶段表现出色,能够处理 PB 级的数据集,从而为机器学习模型提供高质量的数据。ClickHouse 也被认为是机器学习模型可观测性的理想解决方案,因为它可以存储和监控模型在生产环境中的表现。
-
关于最近讨论很多的 RAG(
语义搜索与检索增强生成
)技术
:ClickHouse 在处理难以索引的大数据集时表现出色,尤其是在需要进行语义搜索的情况下。它的数组数据类型和距离计算功能使得在大规模数据上进行搜索成为可能。
-
多模态数据处理
:在处理图像、文本等多种类型的数据时,ClickHouse 的优势在于它能够同时处理元数据和嵌入数据,这使得最近大模型领域非常火爆的需求——多模态数据处理,操作更为便捷。
《新程序员》:ClickHouse 三位创始人之间的角色有何不同?你们的想法总是一致的吗?还是偶尔会有分歧?
Alexey
:我们的 CEO Aaron Katz 负责业务方面的事务。工程总裁 Yuri Izrailevsky 负责产品。我则负责技术。我不会说我们总是看法一致。实际上,我们经常有不同的意见,但到目前为止,我不记得有任何一次我们无法做出决定。我们总是通过讨论和相互倾听来达成一致。、
《新程序员》:从我的视角来看,你相当于 ClickHouse 的灵魂人物,毕竟经常出席各类活动的是你,在 GitHub 和用户直接互动交流的也是你。大家都想进一步了解你,所以我想知道,你典型的一天是怎么度过的?
Alexey
:你可能会感到惊讶,但我通常不安排具体的日程。
我有一个待办事项列表,上面列出了不同优先级的项目。
有一些项目有明确的截止日期,我必须在特定时间完成。还有一些重要性较低的事项,但仍需要我的关注和回答,因为有人在等待。还有一些是可有可无的事项,这些是我想做的,也许是我个人想做的,但还没有告诉任何人。
但我通常
随机选择任务
,因此不一定优先处理最紧急的事项。
Alexey
:
每次到中国旅行,我都很享受美食,也对各个省份不同的文化感到惊讶。我现在迷上了中国茶,经常买茶叶回欧洲。
《新程序员》:你来中国的次数也不少了,请问对中国印象最深的是?
Alexey
:
我印象最深的是,我第一次来中国后发现自己不会用筷子,但当时非常饿,所以我很快就学会了。
另外,我之前到北京的时候是 1 月份,印象中非常冷,大约零下 15 摄氏度,但周围完全没有雪,这也让我感到很惊讶。
Alexey
:
关于工程师和文化,
我发现中国的工程师文化在西方世界中代表性不足。
这可能是因为太过孤立的原因,中国有太多外界看不到的东西 ——
很多人从未到过中国,不了解中国文化。
我认为中国有全球最庞大的优秀工程师社区,我很欣赏你们在完成任务上的专注。
在数据基础设施方面有许多独特的挑战,这些挑战因为规模的特殊性而存在,而所有这些挑战都在通过现有和新技术的巧妙应用来解决。
我仍然觉得中国文化在大部分世界中未被充分探索和了解,希望未来会有更多人能来到中国,了解这里的一切。
《新程序
员》:你平时是在荷兰 ClickHouse 总办公室的时间比较多,还是出国参会的时间多?
Alexey
:
我并没有参加每一次 Meetup,因为有时候我们在同一天在不同的大陆上举办两到三场 Meetup。但偶尔会参加并演讲。虽然经常旅行,但不总是在外。
Alexey
:
让我算算……不到 10 次,差不多每月一次。
《新程序员》:你们的成员也遍布世界各地。那你考虑过计划一个大聚会,把来自不同国家的所有成员聚集到一个地方吗?
Alexey
:我们其实
大约每年会做两次这种活动。
上一次,我们在法国尼斯举办了全公司线下活动,位于蔚蓝海岸。
那次活动真的非常棒,非常有趣,我们全公司都聚集在一起。
顺便
提一下,今年我们计划在新加坡举行。
《新程序员》:因为疫情的缘故,你曾说 ClickHouse 去年只组织了一两次开发者活动,那今年肯定改善了吧?
Alexey
:是的,今年我们已经突破了 100 次 ClickHouse Meetup 的里程碑,最近的一次在广州,是第 121 次。我们举办的大多数 Meetup 都包括一些实用的话题,比如 ClickHouse 的内部机制、构建分析应用程序,以及客户的使用案例等等。
《新程序员》:
有和去年一样举办黑客松这样的代码活动吗?
Alexey
:
今年我们没有组织 ClickHouse 的黑客松,倒是在公司内部有一次比赛,每个参与者必须在两小时内用 ClickHouse 开发一个应用程序。结果让我非常惊喜,我认为我们可以把它公开。
《新程序
员》:自从去年 ChatGPT 推出以来,你有没有看到任何行业机会?ClickHouse 内部又是怎么用 AI 进行开发的?
Alexey
:
我也和很多人一样,使用 Copilot 和 ChatGPT,但只是在写 JavaScript 的时候用一用,因为我不是 JS 的专家。至于写 C++ 的时候,我不会去用 AI,而是自己写。我会多次阅读自己编写的代码,非常认真地对待它,并且比竞争对手做得更早。
重点在于,生成式 AI 会加速每一个人、每一个团队的速度。所以我们必须使用它,我们的竞争对手也必须使用它 —— 而且他们很可能已经在使用了。
总之,竞争会更激烈,但进步会更快。我喜欢这种感觉。
《新程序
员》:ClickHouse 在 AI 领域的优势是什么?
Alexey
:
ClickHouse 在许多机器学习和 AI 任务中表现出色。第一个场景是数据收集、清理和准备管道,当然也包括数据分析。第二个是机器学习的可观测性。第三个是语义搜索和检索增强生成(RAG)。
所谓
数据准备、数据收集、清理和分析
,也就是在使用数据训练机器学习模型之前所做的一切。有时你会收集到 PB 级(1 PB = 1024 TB)的数据,但我们没法直接将这些 PB 数据输入到学习过程中,而是必须提取这些数据中最有价值的部分,并确保它不包含会破坏模型的垃圾数据。ClickHouse 的优势在于其灵活性以及与多种数据源的集成能力,
所以 ClickHouse 可能是能够轻松处理和分析 PB 级数据、使其为机器学习训练做好准备的最佳解决方案
。Cognitiv 公司就使用了 ClickHouse 在 ClickHouse Cloud 上构建了基于多 PB 数据集的模型。
再就是
机器学习的可观测性
。这是指当你需要观察和监控模型在生产环境中的表现时,且不仅仅是在生产环境中的表现。当有一个过程来准备和学习这些模型时,你也会收集大量关于这个过程的信息,并且需要将这些信息存储在某处。
ClickHouse 可能是机器学习可观测性的最佳解决方案。
这一点得到了 Braintrust 和 Langchain 两个案例的佐证。
当前热门的
生成式 AI 应用程序
需要使用语义搜索和检索增强生成(RAG)。在这种情况下,ClickHouse 也表现良好,特别是当数据无法轻松索引且无法全部放入内存时,因为我们有用于数组、向量和距离计算的数据类型和函数。在 ClickHouse 中,语义搜索也表现良好,因为它在数组数据类型上具有快速的距离计算功能。其主要优势在于,当数据无法在单台机器的内存中适配且无法提前轻松索引时,ClickHouse 可以在其他解决方案停止工作时继续提供答案。在某些情况下,由于数据量巨大,专用数据库停止工作。它们无法索引数据,因为这会带来太多的开销。
我们还计划改进一些功能,比如
原生支持量化
、
向量量化
。当用户需要使用类似 float32 的数据类型(每个维度占用四个字节),然后创建类似 int8 或可切换的 8 位迷你浮点格式并直接在其上计算距离的时候,原生量化可以解决最大的问题——内存带宽和存储带宽,避免了数据无法放入内存中的情况。另一个方向是将我们的 HNSW 索引投入生产,这样用户就可以对向量进行索引和搜索。
《新程序
员》:最近有很多公司都迁移到了 ClickHouse Cloud,原因是什么?
Alexey
:
ClickHouse Cloud 现在解决了集群扩展的问题,再也不存在
提前规划分片方案之类
的麻烦。此外,我们还解决了版本升级问题,并保证在版本变化时行为的兼容性。
ClickHouse Cloud 的
每个服务都是高可用的,跨多个可用区复制,我们还会自动备份。由于使用了多级缓存的对象存储,ClickHouse Cloud 比自我管理的配置更便宜,也因此比在普通的 EC2 上使用 EBS 设置的速度更快。
我们的客户会影响我们的产品优先级。每当你看到类似“通过选择性加载优化主键的内存使用”这样的示例时,那这就肯定是某个客户特定的要求。
我甚至可以说,每个版本新发布的功能都是为了某些客户而设计的 —— 如果某个功能不是客户需要的,就有可能是我为了演示而要求的功能。
《新程序
员》:你们在中国选择了阿里云作为合作伙伴,那未来你们还是否计划在中国进行其他合作?中国现在有很多 AI 公司和 AI 初创企业,你认为 ClickHouse 对 AI 初创企业的吸引力是什么?
Alexey
:
今年 4 月我们在阿里云上推出 GA 版本服务后,我们开始探索中国更广泛的市场。阿里巴巴是中国最大的云服务提供商,目前我们刚刚起步,但预计未来会有更多合作。我们正在寻找关于 ClickHouse 的有趣客户案例和应用,不仅限于 AI 公司,还包括其他领域,如可观测性。我们对 ClickHouse 在
制造业
中的应用也很感兴趣。
我计划在中国继续定期举办 Meetup 活动
,也愿意开放更多的合作机会。
《新程
序员》:对于考虑将 ClickHouse 作为其机器学习应用的 AI 初创公司,你会给出哪些建议?
Alexey
:
我在这个领域常见的一个陷阱是“数据混乱” —— 当数据管道几乎无法重现,且工件随机分散在对象存储的文件中时,就需要过于频繁地从头开始工作。我想给的两个建议是:
一、记录你所做的一切。二、尽量以结构化的形式收集所有数据。
其中的陷阱在于,每当你发现一个数据质量问题使你的模型无效时,往往是在已经花费了数千个 GPU 小时后才发现的。因此,切记要
监控流程,创建快照并测试
。
《新程序
员》:除了对初创公司的建议,你能不能为
年轻工程师
也提供一些建议?
Alexey
:对于年轻工程师,我建议选择一个感兴趣的领域——不一定是数据处理,可以是计算机图形学、芯片设计或人工智能等。如果你能深入理解这个领域,就能够找到创新的方法。
《新程序员》:这一年以来,除了和 AI 领域结合的工作,ClickHouse 还有哪些变化?
Alexey
:我们最大的成就其实与数据存储和数据类型有关。在最新发布的 24.8 版本中,ClickHouse 支持半结构化数据,这需要在查询引擎中增加三种新数据类型 —— Variant、Dynamic 和 JSON。
Variant
数据类型类似于多个数据类型的判别联合体,Dynamic
是无限制联合,而
JSON
数据类型允许任意嵌套的数据,
主要的优势在于性能和可用性,这意味着你可以加载具有未知结构的日志、API 响应和类似的数据,并进行自然查询,使数据可操作化的时间最小化。
ClickHouse 内部也有很多新的数据处理功能,例如 S3 队列和可刷新物化视图。
这使得 ETL 系统显得过时,因为 ClickHouse 提供了所有用户需要的功能。此外,我们先前
集成的 Kafka 引擎也被重写,以支持严格的精确一次语义(exactly once semantics)。
其中一个特别有趣的新功能是在预览版中的嵌入式时间序列引擎,这使得 ClickHouse 可以作为 Prometheus 的直接后端。
《新程序员》:我感觉自己被一堆技术名词轰炸了。ClickHouse 的一大特色就是你们会在 GitHub 上每年开一个“路线图”(Roadmap)讨论页,然后你本人会直接在 issue 里和用户们进行交流。2024 年的路线图实现的怎么样了?
Alexey
:我估计截至今天,我们开源路线图的完成率为 30%,目标是达到 50%,或 60%。我们希望更加关注对数据湖的支持,如 Apache Iceberg 和 Delta Lake,目前它们已经有了基本支持,但仍需要更多关注。
《新程序员》:说到去年,我记得当时其实在社区内有一个热帖,是在讨论大家对 ClickHouse 远离开源的担忧。
因为你们宣布许多重要的新功能将仅在 ClickHouse Cloud 上可用,人们担心这对开源版的 ClickHouse 意味着什么。你本人当时还出来澄清了。
现在我想再讨论一次这件事。ClickHouse 现在是否仍然致力于开源原则,还是正在转向一种更加专有的模式?你们是否曾计划在开源和商业路线图之间做出区分,即制定两条路线图?
Alexey
:ClickHouse 是在 Apache 2.0 许可下开发的,得到了来自全球超过 2000 名贡献者的开放合作。我是开源模式的坚定信仰者,因为它更具可扩展性,能保证更高质量的产品,并在更广泛的场景中实现更快的增长,这对我们像 ClickHouse Cloud 这样的商业产品来说很重要。
我们也会维护 ClickHouse 的一个专有版本,其中包含为 ClickHouse Cloud 开发的功能,例如 SharedMergeTree——它在云对象存储之上实现了可扩展性,这在为数千个客户构建服务时非常重要。
通过这种方式,我们防止公司免费利用我们的服务与我们竞争,而不支付我们的工程工作费用
,同时让各个公司可以充分利用自托管的 ClickHouse 的全部功能。
《新程序员》:你说自己是开源的坚
定信仰者,这种热情从何而来?在你的职业生涯中,是否有某些特殊的经历巩固了你对开源的信念?
Alexey
:我只是会看看周围的例子,其中有很多表明,一些技术过去很流行,但从长远来看,它们不再流行,因为它们不对所有人开放,不是开源的。
但实际上,开源并不是万能的,这取决于团队。开源需要一个团队不断推动它前进。
有无数开源分析数据库的例子,它们因为缺乏强有力的团队而失败,例如 Greenplum(Postgres 的一个分析分支)或 MonetDB(一种早期的分析数据库,类似于 ClickHouse)。如今,ClickHouse 是最受欢迎的分析型数据库管理系统,这要归功于我们对开源和开放合作的做法。
《新程序员》:我看过你们的官网,你们的每个版本命名都很简单清晰,比如“24.8”,24 代表年份是 2024 年;8 代表月份,八月。也就是说你们是月更的,一年十二个版本,那
这些版本更新的方向由谁决定?
Alexey
:24.8 是一个非常棒的版本——首先,它是一个长期支持版本。它包含了一些主要的新功能:JSON 数据类型、新的 Kafka 引擎、时间序列引擎以及对 Hive 分区的支持。此外,值得注意的是,在这个版本中,Analyzer(一个用于查询分析和优化的新基础设施)已完全达到生产级别,这突显了两年来团队的努力!演示和视频已经在官网发布,如果有中国的开源开发者愿意从 YouTube 下载它们并上传到 BiliBili 和小红书,我将不胜感激。
《新程序员》:我会把这个写到文章里,催更那些 UP 主。
你们每次更新都会标明参与更新的贡献者,并具体列出贡献者的名字。那么,谁来决定是否接受某个贡献?谁是最终决策者?
Alexey
:版本中的功能取决于它们的准备情况。在截止日期之前合并的内容将会出现在版本中。哪些功能要合并以及优先级由我们的工程团队决定。团队中至少要有一名成员审核代码并检查实现。有些功能可以快速合并,但有些功能可能需要较长的审查过程,甚至需要进行架构更改。顺便说一句,我很感激社区里的每一份 pull request,哪怕是与架构有冲突的请求,也会是一种展示功能并邀请讨论的好方法。
《新程序员》:你们一直保持月更,就没有“断更”过吗?有没有遇到过无法更新的时候?你们又是如何在如此频繁的发布中确保质量控制的?
Alexey
:自 2021 年以来,我从未错过任何一次发布时的网络研讨会(
Alexey 每个月会直接在 Youtube 的官方新视频里出镜,亲口介绍最新版本并参与讨论中
),所以它们每个月都会如期举行。
我们并不急于在发布中合并功能,每个月有数百个 pull request,总会有新内容可以展示。当某些功能尚未准备好时,我们通常会将其推迟到下一个版本。例如,JSON 数据类型原本预期在 24.7 版本中发布,但最终在 24.8 版本中发布。除了代码审查外,我们还会手动测试每个功能,并评估它的可用性——是否易于用户使用,以及如何融入整个 ClickHouse 架构。有些功能在发布前被撤回进行重新设计,然后再合并。
有时也会有一些不确定性,比如在 24.8 版本发布时,我不确定我们是否能够在 8 月 20 日按时完成。所以我当时说,“如果我们不能在新版本推出 JSON 数据类型,那就取消发布网络研讨会。” 但我们最终没有取消,也按时完成了。
不过,也有一些有趣的故事,比如在 2022 年的某次发布中,我们当时花了很多时间搬迁到新公司的办公室,我没有准备任何内容。
于是,我召集了团队的每一个人,请他们即兴发挥,介绍他们的工作和即将推出的功能。
当然,最重要的内容将留待下次介绍。那次网络研讨会非常不同寻常,但我希望观众喜欢它。
随着我们公司和客户数量的增长,工作变得更加繁忙。不过,团队成员也在不断壮大,大家都愿意提供支持和帮助。我们现在甚至有一个专门的 SRE 团队和一个小型的 Q&A 团队。
《新程序
员》:说到这点,ClickHouse 现在都已经有 200 名员工了。你是如何吸引和留住人才的?
Alexey
:
我们的开源战略使得吸引人才和培训新员工变得更容易。首先,行业内的人都清楚,从一个 pull request 到生产环境的更改是很容易的,而你的工作会因此产生很大的影响。
我们正在努力在整个公司保持这种文化,这让我们能够留住人才。
不仅仅是数据库,所有的数据处理系统都能从 AI 中获益
《新程
序员》:
你希望 ClickHouse 的未来怎么发展?
Alexey
:
我希望 ClickHouse 成为最流行的开源分析数据库,从此任何人考虑分析数据库的时候,脑海里第一个也是显而易见的选择就是 ClickHouse。
顺便说一句 —— 我们其实已经是最流行的开源分析数据库了,所以我想让这个现状保持下去,以便更多的人能知道这一点。
《新程
序
员》:你认为现在人们对 ClickHouse 最大的误解是什么?
Alexey
:
过去大家常说 ClickHouse
很难安装
,但这不是真的,因为他们往往看到的是大公司的技术架构。大公司会设置多区域的集群,其中包含数百个分片,并在不同区域进行复制。这些大公司还会经常讨论如何扩展 ZooKeeper 或 ClickHouse Keeper,也就是如何重新分片的问题。
但人们应该明白,如果只是想开始使用 ClickHouse,大多数情况下只需在一台机器上安装它,或者为了高可用性在两台机器上安装它,基本上就可以了。