交互式分析领域,为何 ClickHouse 能够杀出重围?( 四 )
前面介绍了大量 ClickHouse 的核心特性 , 方便读者了解 ClickHouse 高性能、快速发展的背后原因 。 当然 , ClickHouse 作为后起之秀 , 远没有达到尽善尽美 , 还有不少需要待完善的方面 , 典型代表如下:
1. 分布式管控分布式系统通常包含 3 个重要组成部分:存储引擎、计算引擎、分布式管控层 。 ClickHouse 有一个非常突出的高性能存储引擎 , 但在分布式管控层显得较为薄弱 , 使得运营、使用成本偏高 。 主要体现在:
(1)分布式表
ClickHouse 对分布式表的抽象并不完整 , 在多数分布式系统中 , 用户仅感知集群和表 , 对分片和副本的管理透明 , 而在 ClickHouse 中 , 用户需要自己去管理分片、副本 , 例如前面介绍的建表过程:用户需要先创建本地表(分片的副本) , 然后再创建分布式表 , 并完成分布式表到本地表的映射 。
(2)弹性伸缩
ClickHouse 集群自身虽然可以方便的水平增加节点 , 但并不支持自动的数据均衡 。 例如 , 当包含 6 个节点的线上生产集群因存储 或 计算压力大 , 需要进行扩容时 , 我们可以方便的扩容到 10 个节点 , 但是数据并不会自动均衡 , 需要用户给已有表增加分片 或者 重新建表 , 再把写入压力重新在整个集群内打散 , 而存储压力的均衡则依赖于历史数据过期 。 ClickHouse在弹性伸缩方面的不足 , 大幅增加了业务在进行水平伸缩时运营压力 。
基于 ClickHouse 的当前架构 , 实现自动均衡相对复杂 , 导致相关问题的根因在于 ClickHouse 分组式的分布式架构:同一分片的主从副本绑定在一组节点上 , 更直接的说 , 分片间数据打散是按照节点进行的 , 自动均衡过程不能简单的搬迁分片到新节点 , 会导致路由信息错误 。 而创建新表并在集群中进行全量数据重新打散的方式 , 操作开销过高 。
文章插图(3)故障恢复
与弹性伸缩类似 , 在节点故障的情况下 , ClickHouse 并不会利用其它机器补齐缺失的副本数据 。 需要用户先补齐节点后 , 然后系统再自动在副本间进行数据同步 。
2. 计算引擎虽然 ClickHouse 在单表性能方面表现非常出色 , 但是在复杂场景仍有不足 , 缺乏成熟的 MPP 计算引擎 和 执行优化器 , 例如:多表关联查询、复杂嵌套子查询等场景下查询性能一般 , 需要人工优化;缺乏 UDF 等能力 , 在复杂需求下扩展能力较弱等 。 这也和 OLAP 系统第三方评测 的结果相符 。 这对于性能如此出众的存储引擎来说 , 非常可惜 。
3. 实时写入ClickHouse 采用类 LSM Tree 架构 , 并且建议用户通过批量方式进行写入 , 每个批次不少于 1000 行 或 每秒钟不超过一个批次 , 从而提高集群写入性能 , 实际测试情况下 , 32 vCPU--tt-darkmode-bgcolor: #131313;">但 ClickHouse 并不适合实时写入 , 原因在于 ClickHouse 并非典型的 LSM Tree 架构 , 它没有实现 Memory Table 结构 , 每批次写入直接落盘作为一棵 Tree(如果单批次过大 , 会拆分为多棵 Tree) , 每条记录实时写入会导致底层大量的小文件 , 影响查询性能 。
这使得 ClickHouse 不适合有实时写入需求的业务 , 通常需要在业务和 ClickHouse 之间引入一层数据缓存层 , 实现批量写入 。
五、结语
本文重点分享了 ClickHouse 的整体架构及众多核心特性 , 分析了 ClickHouse 如何实现极致性能的存储引擎 , 从而成为 OLAP 领域的后起之秀 。
ClickHouse 仍然年轻 , 虽然在某些方面存在不足 , 但极致性能的存储引擎 , 使得 ClickHouse 成为一个非常优秀的存储底座 。
后续我们会在不断拓展业务的同时 , 优先从分布式管控层和计算引擎层着手 , 持续优化 ClickHouse 的易用性、性能 , 打造业界领先的 OLAP 分析数据库 。 同时 , 我们会持续输出内核优化、最佳实践等经验 , 欢迎更多技术爱好者们一起探索、交流 。
参考资料:
[1] 采用文档:
[2] ClickHouse 官方测试结果 :
[3] OLAP 系统第三方评测 :
[4] 专用编码算法支持:
#codecs
[5] Gorilla 论文 :
[6] 索引支持:
#table_engine-mergetree-data_skipping-indexes
[7] MergeTree系列表引擎 :
[8] MATERIALIZED VIEW :
#materialized
[9] ClickHouse的发展历史 :
[10] ClickHouse官方文档 :
来源:微信公众号:云加社区,作者:姜国强
- 率先|还在相片美颜?OPPO已进军视频美妆领域,周冬雨或率先体验
- 制药领域|为什么AI制药这么火,为什么是现在?
- 资本|2020年中国人工智能医疗行业发展现状分析 处于成长期且资本热度高
- 用户|密室逃脱行业发展及用户分析报告:哪些人在沉迷密室逃脱?
- 框架|三种数据分析思维框架的构建方法
- 分析师|真香定律或再被验证,iPhone12将大卖,分析师给出两个原因
- 鼓励|(经济)商务部:鼓励引导商务领域减少使用塑料袋等一次性塑料制品
- 文章|局座张召忠:分析局座历年的文章发现,我发现这些秘密
- 博会|第17届东博会:设置5400个实体展位 多领域成果丰硕
- 主题|GNN、RL崛起,CNN初现疲态?ICLR 2021最全论文主题分析
