聊聊 HTAP 的前世今生
随着现代社会大型实时分析应用的逐渐流行,关系型数据库已经难以处理高并发的事务请求。商业层面上,当全球进入数字化时代,数字化技术渗透到各行各业,同时产生了海量数据,数据的存储和应用是企业决策的重要依据之一,业务需要实时根据 TP 的落地数据进行 C 端快速反馈,比如实时风控,交易历史明细查询,欺诈监测等等。技术上,由于传统的数仓 ETL 链路长,延迟大,很难满足业务快速多变的诉求,业务场景的变化也掀起了一股 HTAP 浪潮。
一、HTAP 诞生的背景
在二十世纪六十年代,商业部门的计算机开始用于工资单交易。联机事务处理 OLTP(On-Line Transaction Processing) 得到进一步发展,导致 OLTP 在政府和商业部门信息系统中的广泛使用。OLAP (On-Line Analytical Processing) 是在 OLTP 术语上修改而创建的。在 HTAP 概念之前,业务类型大致可以分成两大类:联机事务处理 OLTP、联机分析处理 OLAP。
OLTP 是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。
OLAP 是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观的查询结果,例如业务销售报表。
(一)传统 OLTP 与 OLAP 分离架构
在同一组织中,通常 OLTP 和 OLAP 系统并存,且 OLAP 数据来源于 OLTP 系统,系统架构大致可分为 ETL 数据同步和数据库 LOG 同步两种,以下的两种架构都各有优缺点。
图:传统 OLTP 与 OLAP 分离架构
架构一: 是指来自一个或多个 OLTP 数据库的数据通过 GoldenGate、DSG 等 ETL 工具提取、转换、加载到 OLAP 系统中,随着大数据的到来 , 后期又出现了 Debezium 、Kafka、Flink 等流式计算引擎。使用 ETL 工具,用户可以从多个来源收集数据并将其发送到目的地。它的缺点就是组件太多,各项成本非常高。
架构二: 这种架构是指通过数据库自带的日志同步功能,实时将数据同步到备库,备库只读对外提供 OLAP 的服务。相比架构一在产品的维护性,实时性以及数据的一致性上有了质的提高。但是架构二在使用场景上相比架构一有所限制,只能对单一同源数据库进行同步。
(二)分析型需求崛起推动技术架构演进
虽然 OLTP 产品已经成熟,然而当前的解决方案无法满足实时分析的需求。随着数据量的积累,分析型需求不断涌现,这也推动了数据库技术的变革,从 OLTP 到 OLAP,进而演进到 HTAP 理念,混合事务分析处理数据库蓬勃发展。
1990 年代以前, 日常处理相关的动态业务以 OLTP 需求为主,OLAP 并未独立;随着数据量不断增多、场景逐渐丰富,分析型需求开始普及,1990s MPP 架构的 OLAP 产品开始出现; 2010s,物联网等技术的发展,使得企业对实时数据分析的需求提升,且 OLAP、大数据技术栈不断分化也给企业实际运维管理多套系统带来挑战,HTAP 混合事务分析处理数据库的概念也应运而生。
图:OLTP 到 HTAP 架构演进
2005 年, Gartner 正式提出了 HTAP 这一概念,并且迅速引起了一些企业的关注,这一概念被视为是未来数据发展的重要趋势之一。2014 年,Gartner 又对 HTAP 数据库给出了明确的定义:即需要同时支持 OLTP 和 OLAP 场景,基于创新的计算存储框架,在同一份数据上保证事务的同时支持实时分析,省去费时的 ETL 过程。
随着 HTAP 概念不断普及,业界也开始逐渐揭开 HTAP 的神秘面纱。HTAP 数据库的兴起是在 2010 年。2010 年 SAP HANA 推出,HANA 与上一代 SAP 系统的主要区别在于,它是一个面向列的内存数据库,将 OLAP 和 OLTP 操作组合到一个系统中。因此,HANA 是一个“在线事务和分析处理”(OLTAP) 系统,也称为混合事务/分析处理(HTAP) ,这一产品的发布标志着 HTAP 开始应用和落地。2017 年,TiDB 推出 1.0 版本,可以替换分库分表 MySQL 做 TP 业务。自此之后,中国 HTAP 数据库发展迅猛,HTAP 技术已成为新兴数据库的重要选项。
二、HTAP 数据库的核心技术
根据 2022 年 SIGMOD 收录的论文《HTAP Databases: What is New and What is Next》,目前 HTAP 的相关技术包括:事务处理 (TP) 技术、分析处理(AP)技术、数据同步 (DS) 技术、查询优化技术、资源调度技术。这些关键技术被 HTAP 数据库采用。然而,它们在各种指标上各有利弊,例如效率、可扩展性和新鲜度。
(一)事务处理 (TP) 技术
HTAP 数据库中的 OLTP 工作负载是通过行存储处理的,但不同的架构会导致不同的 TP 技术。它主要由两种类型组成:
MVCC+logging。 它依赖于 MVCC 协议和日志记录技术来处理事务。具体来说,每个插入首先写入日志和行存储,然后附加到内存中的增量存储。 更新创建具有新生命周期的行的新版本,即开始时间戳和结束时间戳,即旧版本在删除位图中被标记为删除行。
2PC+Raft+logging。它依赖于分布式架构,它通过分布式事务处理提供了高可扩展性。 ACID 事务在分布式节点上使用两阶段提交 (2PC ) 协议、基于 Raft 的共识算法和预写日志 (WAL) 技术进行处理。
(二)分析处理(AP)技术
对于 HTAP 数据库,OLAP 负载使用面向列的技术执行,例如压缩数据上的聚合和单指令多数据 (SIMD) 指令 ,主要分为三种类型:
内存中增量和列扫描: 将内存中的增量和列数据一起扫描,因为增量存储可能包括尚未合并到列存储的更新记录。由于它已经扫描了最近可见的 delta tuples 在内存,因此 OLAP 的数据新鲜度很高。
基于日志的增量和列扫描: 将基于日志的增量数据和列数据一起扫描以获取传入查询。与第一种类似,第二种使用列存储扫描最新的增量用于 OLAP。但是,由于读取可能尚未合并的 delta 文件,这样的过程更加昂贵。因此,数据新鲜度较低,因为发送和合并 delta 文件的高延迟。
列扫描: 只扫描列数据以获得高效率,因为没有读取任何增量数据的开销。但是当数据在行存储中经常更新时,这种技术会导致新鲜度低。
(三)数据同步 (DS) 技术
由于在查询时读取增量数据的成本很高 ,因此需要定期将增量数据合并到主列存储 中。 各种 HTAP 数据库有 3 种 DS 技术。
内存中增量合并
基于磁盘的增量合并
从主行存储重建
(四)查询优化技术
查询优化技术的三个方面,包括:
HTAP 的列选择 。靠历史工作负载和统计数据来选择从主存储中提取的频繁访问的列到内存中。因此,可以将查询下推到内存中的列存储以进行加速。缺点是可能没有选择新查询的列,导致基于行的查询处理。
混合行/列扫描。可以分解复杂的查询以在行存储或列存储上执行,然后组合结果。这对于可以使用基于行的索引扫描和完整的基于列的扫描执行的 SPJ 查询来说是典型的。
HTAP 的 CPU/GPU 加速。分别利用 CPU 的任务并行性和 GPU 的数据并行性来处理 OLTP 和 OLAP。然而,这些技术有利于高 OLAP 吞吐量,同时具有低 OLTP 吞吐量。
(五)资源调度技术
对于 HTAP 数据库,资源调度是指为 OLTP 和 OLAP 工作负载分配资源。当前的技术可以动态控制 OLTP 和 OLAP 工作负载的执行模式,以更好地利用资源。调度技术有两种类型:工作负载驱动的方法和新鲜度驱动的方法。前者根据两者运行时的性能负载 来 调整 OLTP 和 OLAP 任务各自的并行度。后者定期切换 OLTP 和 OLAP 的独占资源执行模式和数据交换时的资源共享执行模式。
表:HTAP 五种关键技术介绍
三、中国 HTAP 数据库发展现状
根据艾瑞咨询研究室发布的 《2022年中国数据库研究报告》,过去,HTAP 数据库的技术架构以扩展主行存技术,在行存基础上加列存的方式为主,随着分布式技术不断成熟,天然适配 HTAP 数据库,于是开启了分布式的架构实现,满足了高并发需求。
截止 2023 年 2 月,墨天轮中国数据库排行榜 共有 259 个数据库参与排名。其中 SQL 关系型数据库 162 个,占比 62%。在 162 个关系型数据库中,OLTP 数据库 109 个,占比 67%,HTAP 数据库为 26 个,占关系型数据库的 16%。国内典型的 HTAP 数据库有 PingCAP 的 TiDB、蚂蚁的 OceanBase、石原子科技 StoneDB、亚信 AntDB 等。另外“新一代 HTAP + 云”正在成为数据库市场重要的潮流,各大云厂商都在布局 HTAP,如阿里云 PolarDB、华为云 GaussDB、腾讯云 TDSQL 等。
OceanBase 是一款金融级分布式关系数据库,在存储引擎、分布式事务、水平扩展、多副本、高可用、多活容灾、HTAP 等多个方向都有关键技术突破和竞争力。OceanBase 独创的分布式计算引擎,能够让系统中多个计算节点同时运行 OLTP 类型的应用和复杂的 OLAP 类型的应用,让数据库利用率最大化的同时利用多个节点的计算能力,完成对 OLTP 和 OLAP 应用的支持。
图:OceanBase 一体化混合负载解决方案
2017 年 TiDB 早期版本就开始尝试支持 HTAP 的能力,并分别在 2019 年发布了 TiSpark, 2020 年发布了 TiDB 4.0 ,这是一款为 HTAP 而设计的分布式数据库,到了 5.0 版本,在 TiFlash 引入 MPP 模式与多项企业级特性的增加,使得 TiDB 5.0 发展为“一款具备完整的 HTAP 能力”。
图:TiDB 数据库 HTAP 关键架构
StoneDB 是由石原子科技公司发布的一款支持行列混存+内存计算的 HTAP 数据库, 其创新的一体化 HTAP 架构,打破传统 TP 型数据库能力边界,为用户提供一站式 OLTP +OLAP 解决方案。StoneDB 具备超高性能、实时分析等特点,于 2022 年 6 月 29 日正式开源。
图:来源于 StoneDB HTAP 架构
亚信 AntDB 数据库是一款通用的、企业级分布式关系型数据库,融合事务处理和在线分析操作,同时支持日常流水的操作型和企业报表的决策型业务。其采用 share-nothing 架构,计算层除完成传统数据库的编译优化、SQL 执行等工作外,还具备分布式任务分发、HTAP 双引擎框架处理能力。
图:AntDB 数据库 HTAP 解决方案架构
随着云基础设施普遍应用,“分布式×云原生”正在重构企业数据架构,成为新一代 HTAP 的技术环境。其次,技术变革带来了新的可能性。分布式理论与云计算、AI 算法的融合带来了新一代的架构创新,这些都使得 HTAP 在云端可以支持不同的云存储,AI 等新技术,中国 HTAP 数据库正在打造更有竞争力的创新。
四、HTAP 数据库的挑战与机遇
目前 HTAP 数据库与 2014 年 HTAP 刚刚提出来时的概念和内涵大不相同。随着其不断发展的同时,也面临了众多问题。例如:HTAP 工作负载的自动列选择、自适应 HTAP 资源调度、学习型 HTAP 查询优化器、HTAP 基准测试套件等,是当下的重要问题。
(一)HTAP 工作负载的自动列选择
给定一个 HTAP 工作负载,从行存储中选择哪些列进入内存列存储是一项重要任务。然而,现有方法严重依赖历史统计数据来选择列到内存中。例如 Oracle 21c 的 Heatmap 。此类方法通过运行所有查询来进行推荐,因此成本高且不灵活。
(二)自适应 HTAP 资源调度
HTAP 资源调度帮助数据库平衡工作负载隔离和数据新鲜度之间的权衡。这是通过调整 OLAP 和 OLTP 的执行模式来实现的。 OLAP 和 OLTP 工作负载的隔离执行有利于高吞吐量,但数据新鲜度较低。混合工作负载的共享执行有利于高数据新鲜度,但具有很强的工作负载干扰。
(三)学习型 HTAP 查询优化器
现有方法通过利用成本函数来选择 HTAP 数据库中行存储和列存储的访问路径来优化查询。然而,他们做出统一和独立的假设来估计行/列大小,然后使用这些估计来衡量行存储和列存储的扫描成本。由于成本估计不准确,这种方法对于相关和倾斜的数据是有问题的。
(四)HTAP 基准套件
有人指出 TPC-H 具有均匀分布,跨列相关性很小,对测试 OLAP 提出了一点挑战。因此,带有 TPC-H 的 HTAP 基准测试应该将带有偏斜的连接交叉相关关系纳入基准测试。
五、活动推荐
2023 年 4 月 8 日,由中国 DBA 联盟(ACDU)和墨天轮社区联合主办的第十二届『数据技术嘉年华』(DTC 2023) 中的专题论坛 《融合创新:HTAP 数据技术》 盛大开启。此专题汇聚了腾讯云、亚信科技 、石原子科技等中国 HTAP 数据库的优秀厂商,一起解读中国 HTAP 数据库的最新观点!
《融合创新:HTAP 数据技术》专题内容介绍
为了共赏中国数据库的精彩,我们为大家准备了数据技术嘉年华早鸟福利:现限量发放 100 张 0 元购票优惠券,凭优惠码 DTC2023 在购票时兑换抵扣,即可 0 元购票(可参照下方操作指南图操作),请大家领取后尽快使用。如有疑问请联系墨天轮小助手(VX:modb666)!
点击阅读原文:https://www.modb.pro/db/615248
欲了解更多可浏览墨天轮社区,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。
关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯
版权声明: 本文为 InfoQ 作者【墨天轮】的原创文章。
原文链接:【http://xie.infoq.cn/article/77c4366f13b3fcba53bdce7c4】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论