《架构师》2022年5月
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

理论派 | Theory

郭炜:讨论ClickHouse的未来,至少要了解它的设计理念

作者 李慧文

Image

嘉宾 | 郭炜

几乎每一个月就更新一次的ClickHouse,在过去的2021年实现了哪些优秀的功能呢?现在的ClickHouse适合在哪些场景下使用呢?未来ClickHouse发展的重点又在哪里呢?从2019年突然火爆起来的ClickHouse作为一匹黑马,在云原生场景下,是一匹千里马,还是明日黄花呢?

基于对上述问题的好奇,我们特意邀请了ClickHouse中国社区发起人郭炜老师,请他从社区发起人的角度,聊聊飞速发展的ClickHouse在2022年有哪些最新场景应用,以及它的未来发展趋势。同时郭炜老师也是本次QCon+ 案例研习社(北京站)「ClickHouse集群版深度实践」专题的出品人,他邀请了国内ClickHouse深度使用者来分享,为大家带来ClickHouse集群版有关的实践经验,希望可以给ClickHouse使用者带来启发。

让我们一起来看看老师对ClickHouse最新场景和未来方向的思考吧。

InfoQ:ClickHouse素以迭代快著称,能简单聊聊从去年到今年ClickHouse主要实现了哪些功能的迭代吗?

郭炜:ClickHouse今年迭代的功能非常多,我印象非常深刻的有:

Projection:预聚合。这是今年发布的非常重要的一个特性,它进一步提高了常用并发度和汇总查询的速度,同时还保证了数据表和表内设计的一致性,非常方便地提供了类似下图中的可以实时更新的Cube查询:

Image

JIT(just-in-time compilation):开启JIT优化后,根据社区小伙伴的评测,ClickHouse在一些一元运算、二元运算、逻辑运算等方面性能提高了1.5-3倍,聚合步骤方面性能提升了1-2倍。
UDF(User Define Function):用户自定义函数。我特别期待其中v21.11里增加的对于各种语言UDF的支持,它大大减少了不同语言的开发者使用ClickHouse的学习成本,对于ClickHouse进一步发展有着重要意义。
Windows Function:开窗函数。这是高级SQL里最常用的一个特性。有了开窗函数,ClickHouse就可以和Oracle、DB2等商业级别的数据仓库拥有一样的特性,对于本身速度又非常快的ClickHouse来说,简直是如虎添翼。

依赖极致的社区,ClickHouse基本上每月都会更新一个版本。除了我上面提及的,ClickHouse 2021年还增加了物化列,ALL,ANY,EXCEPT等运算符、可以连接XML文件,新加了Executable Table等等其他的功能,大家可以去社区查看。

InfoQ:迭代了如此多实用的新功能,ClickHouse现在有哪些最新场景应用呢?

郭炜:ClickHouse过去最常见的场景有三个:

用户行为分析:在采集用户行为日志之后,进行PV、UV、留存、转化漏斗等操作,例如头条、快手、喜马拉雅等。
用户画像圈选:每个公司都拥有大量的用户和用户画像标签,如何快速从用户画像标签里圈选出某几类标签的人群,例如阿里、喜马拉雅等。
机器日志监控 &查询:每台机器都产生大量日志,如何快速监控、查询机器日志,以确保整体服务没有问题。基本上所有的互联网公司都在这样使用ClickHouse的。

在2021年数字化转型非常热门,有很多的企业用户加入到ClickHouse社区使用者阵营,因为我们也看到一些很有意思的场景,如:

IOT场景:一些钢铁厂用ClickHouse采集、监控、分析自己内部IOT数据。我知道的最大的集群超过100台了。
政府大数据:ClickHouse赋能政府合作伙伴,针对政府大量结构化和非结构化数据,进行大量数据质量整理和搜索。
网管监控:针对一些特殊APP、特殊网站的日志,快速分析和快速报警。

关于数字化转型,我多啰嗦两句。事实上,ClickHouse解决的是“数据分析的最后一公里”,解决了很多数字化转型企业数据分析的效率问题,包括:

大数据建设完成后最终产出了大量的BI报表、OLAP分析,数据驱动距离业务远。
有经验的业务分析人员无法快速获得需要的数据,或者需要复杂NoSQL技术。
数据驱动还是“人”驱动,还有大量的提数、出报表的需求,而很多报表往往只用一次。
业务快速变化要求更新速度高,数据流无法让业务人员上手。

我举例的这些都是企业在数据化升级当中遇到的问题,因为越来越多的运营、产品、决策都需要用到灵活查询的一手明细数据,过去传统的层层数据仓库,OLAP已经不能满足这些需求了,这正是ClickHouse的拿手好戏。

InfoQ:2021年9月份,ClickHouse成立了独立的公司,创始人Izrailevsky说组建公司的目的之一就是集中人力放在云环境中部署上。上云一直是ClickHouse的痛点,您认为ClickHouse在上云主要有哪些问题呢?有什么好的解决方案吗?

郭炜:ClickHouse的开源版本为了追求极致的性能,从底层列式存储到上层向量化计算引擎其实都没有选择存算分离、弹性扩展的技术方案,甚至于本地化机器扩容的横向数据Re-balance都需要手动或者等待新数据自动填充。

因此,如果要实现云上的可动态伸缩、存算分离,Cloud-ClickHouse需要重构底层代码,否则ClickHouse只是变成装在虚拟主机上的云本地版本,并不是真正的和Snowflake一样的云端数据服务。

当然,目前国内很多云是基于这个云本地版本模式提供ClickHouse服务的,即上层使用ClickHouse进行计算,为了实现底层云存储,有的使用性能不太高的S3接口,有的直接利用原来的格式,而底层用云存储上文件软连接方式解决存储扩展问题。

因为ClickHouse性能非常彪悍,所以这种云模式也可以带来一定的利润空间。当然,终极解决方案还是需要解决存算动态分离和动态伸缩问题,这需要俄罗斯团队携手全球社区人才共同解决。

InfoQ:业界有一些唱衰ClickHouse的声音,您怎么看待这个现象呢?

郭炜:ClickHouse的火爆除了它极致的速度还和它出现的时机有很大关系。我认为随着数据量的增大、使用场景的深入,普适性的数据计算引擎将会被细分,根据不同场景会出现各种各样不同的数据引擎。例如,用于流计算的数据库引擎、用于即席数据分析的数据引擎,用于物联网的数据引擎等等。

这是因为在巨大的数据量面前,想追求极致的性能和全部的适应性,必须在某些技术方案上进行取舍,从而达到引擎针对某些场景引擎的最大化支持。每一个引擎要在足够细分的赛道情况下要和其他引擎有数量级级别的差异。在数据暴增的情况下,过去的通用性引擎已经无法满足业务需求,所以场景性的计算引擎将会崛起。

ClickHouse是个场景引擎崛起的例子,解决的是“数据分析最后一公里”的问题,不是用来解决所有问题的。这和当年我曾经工作过的Teradata和IBM的数据引擎设计是完全不同的。所以,大家以过去数据仓库、数据库的方法来衡量ClickHouse就很难理解它的一些设计,才会产生这些唱衰的声音。

随着数据量级的持续暴增,能解决所有问题的数据引擎几乎是不会存在的,未来的数据引擎一定是百花齐放百家争鸣的局面。如何和这些数据引擎并存、快速交换数据、管理数据是ClickHouse除了云化之外,主要面临到的问题。这些问题的解决就需要依赖周边生态和上下游的合作伙伴了。

InfoQ:您聊到ClickHouse解决的是“数据分析最后一公里”的问题,其他问题需要和上下游的伙伴共建生态,这些伙伴具体指的是谁?

如前面所述,ClickHouse并不是数据仓库,它也不是数据导入和调度工具,它需要很多合作伙伴,包括:

数据仓库:可以用Hadoop生态来存储更多的冷数据,也可以用Greenplum来存储关系型数据,当然也可以用一些商业数据仓库来存储大量3NF数据;
关联查询:可以用Presto、Doris来弥补ClickHouse关联查询不强的问题。现在京东、趣头条都使用了Presto或者Doris的小集群来做关联查询,用ClickHouse的大集群来做日常非关联的分析;
数据导入:Sea Tunnel(原Waterdrop)可解决ClickHouse数据导入不方便、容易不一致的问题。它可以从各种不同数据源里抽取数据,最终放到ClickHouse或者其他数据源里。唯品会和滴滴都在用这种方案。这个具体方案在我们2022的QCon+会有分享。
其他:多任务时可以使用DolphinScheduler进行调度,展现时可以使用E-Chart等等。

开源组件一定是在自己最擅长的领域里做到最好才会有市场。一个上下游友好完整的生态,能够够极大地赋能开源组件,让它发挥出自己最大的作用。

InfoQ:作为ClickHouse绝对的深度用户,您已经陪伴ClickHouse五年了,您认为ClickHouse未来五年发展的重点将放在哪里?有什么值得广大用户期待的吗?

郭炜:未来ClickHouse最值得期待的就是云化支持和场景扩展了。

ClickHouse云支持的痛点,我前面已经讲过了。开源ClickHouse有非常多的创新设计(例如向量计算、向量存储、压缩算法等方面的创新设计),这些设计保证了它在它常用的场景里是全球最快。一些引擎虽然引用了它的代码,在一些测试场景优化后跑得快一些,但是实际使用起来依然无法超越ClickHouse的速度和稳定性。这样的创新如何在云时代实现新的飞跃是我非常期待的。这既然是ClickHouse未来的方向,也将是一场引领整体OLAP计算引擎的云原生革命。

而场景化是ClickHouse天然的属性,大家能看到今年ClickHouse还在推出新的表引擎。如前文所述,ClickHouse的特长就是在细分场景里,面对超大规模数据查询和插入做到极致的快。而面对场景的OLAP引擎是我非常认同的。现在ClickHouse仍然在不断根据不同场景推出自己的表引擎,这些表引擎还在不断地创新,我相信它在未来会给我们更多的惊喜。

我补充一点,大家可能不知道,前几年ClickHouse核心团队都是个位数的,所以很多架构、功能都没有办法快速实现。现在整体开发团队达到百人规模,也成立了独立的公司,必将更快的发展。

此外,ClickHouse成立公司后,Alexey-Milovidov和Ivan就像过去5年中一样,支持着中国社区用户,并没有因为公司的出现而改变初心。我相信ClickHouse会在未来5年给大家更多的惊喜。

Qcon+北京站安排了ClickHouse的专题,邀请了移动、联通、微信、唯品会、网易、云智慧等深度使用了ClickHouse的公司的技术leader和高级工程师,分享ClickHouse集群版上一些常见问题的解决方案,希望能帮助大家更好更快地进行数据查询。

嘉宾介绍

郭炜,人称“郭大侠”,Apache Foundation Member,Apache DolphinScheduler PMC,Apache IPMC Member,ClickHouse中国开源社区发起人和首席布道师。(ClickHouse社区地址:https://clickhouse.com/docs/zh/whats-new/changelog/#new-feature)

中国软件行业协会智能应用服务分会副主任委员,TGO北京董事会学习委员,全球中小企业创业联合会副会长,人民大学大数据商业分析研究中心客座研究员。

郭大侠一直致力于让“数据能力平民化”的事业上,本人参与多个开源项目,促进多个开源社区在中国的落地以及中国开源项目在全球的发展,被评为Apache Foundation Member和2021年中国开源最佳人物之一。