阿里云开发者社区 ALIBABACLOUDDEVELOPERCOMMUNITY 阿里云ClickHouse企业版 技术白皮书 云原生SharedMergeTree引擎&轻量update技术解析 作者TomSchreiber,凤豪,卫寻 翻译校正魏庄 推荐语 本书由ClickHouse资深技术专家和产品联合撰写,全面介绍了ClickHouse企业版的云原 生存算分离整体架构,详细介绍SharedMergeTree表引擎的实现机制原理及基准测试结 果,并介绍Lightweightupdate增强数据更新的实时性的实现原理,是学习ClickHouse 云原生技术的宝贵资源。 目录页 重磅首发:阿里云ClickHouse企业版首发&云原生ClickHouse 技术白皮书揭秘3 1.ClickHouse介绍 2.ClickHouse企业版介绍,3.ClickHouse企业版云原生架构 7.ClickHouse企业版收益 4.ClickHouse企业版引擎升级 5.ReplicatedMerqeTree的挑战 6.SharedMergeTree升级. .10 .13 8.SharedMergeTree引擎的兼容性 9.SharedMergeTree的实际应用对比 .17 10.LightweightUpdate..26 11.总结. 30 12.企业版邀测 重磅首发:阿里云ClickHouse企业版首发&云原生 clickHouse技术白皮书揭秘 ( 阿里云 1.ClickHouse介绍 ClickHouse是一个全球流行的开源高性能、可扩展列式数据库技术,核心应用于在线分析处理(OLAP)业务,在DB-Engine全球数据库流行度排榜排名前列,逐年关注度增长 迅猛。ClickHouse分析性能优异,典型分析场景下,支持数十亿级数据行规模,90%查 询在1秒内完成。这使得ClickHouse成为企业处理大规模数据,构建实时数仓的理想 选择。国内外大厂中,微软,腾讯、ebay。淘宝、Uber,京东、快手、小红书,携程 都使用ClickHouse构建数据分析平台。 DB-EnginesRankingofclickhouse 10 ClickHouse 0.1 0.01 2017 2018 2019 2020 2021 2022 2023 ClickHouse企业版介绍 电商,金融保险,汽车制造,媒体广告在内的数千家客户。 阿里云在2020年发布了基于开源社区版本的云数据库ClickHouse社区兼容版,是全球领先的大规模提供全托管ClickHouse服务的云厂商,成熟稳定服务了包含互联网,游戏, 2021年9月20日,ClickHouse项目创始人Alexey在GitHub宣布他们正式从Yandex独立,并成立一个公司:ClickHouse,Inc。2023年阿里云与ClickHouse,Inc达成独家的商业合作,联合研发阿里云数据库ClickHouse企业版(以下简称ClickHouse企业版),并于2023年8月末开启邀测。 ClickHouse企业版对比社区版是里程碑的升级,从传统存算一体的架构全面升级为云原生架构,支持云原生按需弹性Serverless能力,解决了长期困扰用户的集群扩展效率和平滑 性问题。同时升级支持lightweightupdate&delete,数据更新实时可见,且执行成本更 低,效率更高。本文将详细揭秘ClickHouse企业版的技术实现原理。 云&Clic正kH式ou战略合 阿里云瑶池 数据库峰会·北京 MakingClickHouseCloudNative 云原生clickHouse What changetheclustersize removethencedforrestallowscalingcomplexquenfastUPDATEandDELETE creplicas How 阿里云瑶池 数据库峰会·北京 3.ClickHouse企业版云原生架构 ClickHOuSe企业版采用完全不同与开源社区版本的云原生新架构,针对云环境做了全面适配。新架构基于存储和计算分离的架构基础。采用对象存储数据实现ShareStorage共享 存储,所有ClickHouseServer节点都可以访问相同的全局物理数据,单个Server节点 实际上是单个没有限制分片的Replica节点,节点之间访问同一份数据副本。 ClickHouseCloud N:Server-1 I-Server-2 II-Server-3 Write-th carch Object storage singlelim/tlessshard 云数据库ClickHouse企业版产品架构图 4.clickHouse企业版引擎升级 后台进行数据合并,根据特定的引擎进行数据转换等操作。企业版新推出 MergeTree系列的表引擎✁ClickHouse中的主要表引擎。它们负责存储插入的数据,在 SharedMergeTree引擎加入到MergeTree引擎大家庭,而企业版能够支持云原生架构,也核心依赖SharedMerqeTree引擎。SharedMergeTree引擎✁商业化引擎,仅在企业版 提供,在开源社区版不支持。企业版内核相较于开源社区版的核心能力差异如下所示: Feature OnlyonCloud 仅在阿里云ClickHouse企业版支持 SharedMergeTree Statelessworkers BetteronCloud 阿里云ClickHouse企业版支持更好 Lightweightupdate/delete ReplicatedCatalog ParallelReplicasVirtual'sharding"keys Optimizationforsharedstorage Multi-levelcacheFastbackups BothOpenSourceandonCloud 企业版和开源版同时支持 ClickHouseKeeper 7 重磅首发:网里云ClickHouse企业版首发&云原生ClickHouse技术白皮书揭秘 1)开源ReplicatedMergeTree引擎 大多数MergeTree家族中✁表都支持自动✁数据复制,并通过ReplicatedMergeTree表 引擎✁复制机制实现。 复制以实现数据高可用,并通过分片实现集群横向扩展。阿里云ClickHouse社区兼容版也正✁基于这一内核特性实现✁高可用和扩展。而ClickHouse企业版采用了一种新方法基于SharedMergeTree构建了云原生数据库服务。 SharedMergeTree表引擎✁ClickHouse内核ReplicatedMergeTree表引擎✁更高效✁ 替代品,专为云原生数据处理而设计和优化。我们将深入了解这个新表引擎,解释其优势 并通过基准测试展示其效率。同时当前正在引入轻量级更新LightweightUpdate,与 SharedMergeTree形成协同效应。 对象存储上✁数据可用性 数据✁物理副本。对象存储本身实现确保存储具有高可用性和容错性。需要注意✁✁,尽 管访可对象存储较慢,但ClIckHOuse企业版服务具有多层读写缓存,它专为在对象存储上 读写而设计,以提供快速✁查询结果。对象存储虽然访问延迟比磁盘较大,但具有高并发 吞吐量和大✁聚合带宽。ClickHouse企业版通过利用多I/O线程来访问对象存储,并通过 异步预读取数据来改善这一点。 自动集群扩展 与开源版本使用分片来扩展集群不同,ClickHouse企业版让用户通过简单地增加计算节点 算节点实际上✁单分片✁多个副本。这些节点不✁包含相同数据✁本地副本节点,而✁可 ✁规格和数量来增加INSERT和SELECT✁并行处理能力。请注意,ClickHOUSe企业版计 以访问存储在对象存储中全量相同✁数据✁无状态差异节点。计算节点规格和数量可以适 应工作负载,进行对应✁升降配和水平扩缩容,具体步骤描述如下图所示: scaleup ,64GBRAM iCpucore II-Node I-Node IINode ()scaleout 4CPUccres arocessdata processdata aracessdat: inpete.e. n19arallel @scaledown Object ★infinite storage 通过①垂直升配操作和②垂直缩容操作,我们可以更改节点✁规格(CPU和内存)。而 通过③水平扩展,我们可以增加计算节点✁数量。而无需进行任何物理Resharding或 数据✁Rebalancing,我们可以自由地添加或删除节点。这种无数据移动和搬迁支持水平集群扩展方法,就需要ClickHouse企业版能够提供支持节点访问相同共享数据✁表引擎。 5.ReplicatedMergeTree✁挑战 ReplicatedMergeTree表引擎并不适用于ClickHouse企业版✁预期架构,因为其复制机 制旨在在少量✁节点上创建数据✁物理副本。而ClickHouse企业版需要一个支持在对象存 储之上运行大量计算服务节点✁表引擎。 1)显式✁数据复制 首先我们解释一下ReplicatedMergeTree表引擎✁复制机制。 该引擎使用ClickHouseKeeper(也称为“Keeper")作为协调系统,通过复制日志方式 进行数据复制。Keepe充当复制过程特定元数据和表结构✁集中式存储。以及分布式操作 ✁一致性协调系统。Keeper确保为Part顺序地分配连续✁块编号,将merge和mutation 操作分配给特定✁replica。 Replicationlog Metadata clickHouseKeeper 下图概述了一个具有3个replica节点✁shared-nothing架构✁ClickHouse集群,并显示了ReplicatedMergeTree表引擎✁数据复制机制: InsertqueryINSFRTIN①TOT. lServer-1 l-Server-2 :Server-3 2Part Part @t ? Part 当①Server-1接收到插入查询时,②Server-1在其本地磁盘上创建一个包含插入数据 ✁新Part。③通过复制日志,其他节点(Server-2、Server-3)被告知Server-1上存在一 个新Part。在处,其他server独立地从server-1下载(“获取”)该Part到自己✁ 本地文件系统。创建或接收Part后,三个节点还会在Keeper中更新元数据,元数据用以描述Part文件信息。 行相同✁合并操作。 请注意,我们仅展示了如何复制新创建✁Part。Part合并(和mutation)也以类似✁方式复制。如果一个节点决定合并一组Pats,那么其他节点将在其本地Parts刷本上自动执 在本地存储完全丢失或添加新副本时,ReplicatedMergeTree从已有✁副本克隆数据。 ClickHouse企业版使用持久性更好✁对象存储来实现数据可用性,所以不需要 ReplicatedMergeTree✁显式数据复制功能。 2)依赖sharding进行集群扩展 来实现高可用和水平扩展。表中数据以分片✁形式分布在多个节点上,每个分片通常有2 shared-nothing架构下✁ClickHouse集群用户可以将replication与sharding相结合, 个或3个副本,以确保存储和数据可用性。通过添加更多分片,可以增加数据写入和查询 处理✁并行能力。而ClickHouse企业版不需要使用分片进行集群扩展,因为所有数据都 存储在共享✁对象存储中,只需通过添加额外✁节点来增加并行数