聊聊 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
欲了解更多可浏览墨天轮社区,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。
关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯
聊聊 HTAP 的前世今生的更多相关文章
- 聊聊 print 的前世今生
本文原创并首发于公众号[Python猫],未经授权,请勿转载. 原文地址:https://mp.weixin.qq.com/s/NuzfuH_zCZzcrmSFR04NHw (一) 上周,我翻译了一篇 ...
- 聊聊CMDB的前世今生
CMDB,Configuration Management DataBase,配置管理数据库,是与 IT 系统所有组件相关的信息库,它包含 IT 基础架构配置项的详细信息. 传统运维思路下的CMDB, ...
- 混合事务分析处理“HTAP”的技术要点分析
HTAP是近些年来比较火的一个概念,本文将聊聊HTAP的前世今生及技术特点. 一.数据应用类别 根据数据的使用特征,可简单做如下划分.在选择技术平台之前,我们需要做好这样的定位. 1.1 OLTP 联 ...
- 我的 2019 年 Python 文章榜单
现在是 2020 年的第一天,我相信从昨天开始,各位的信息流里肯定充斥了各式各样的年度盘点/回顾/总结/记录之类的内容.虽然来得稍晚了,但我还是想给诸位送上这一篇文章. 我将在本文中列出自己于 201 ...
- Python 如何移除旧的版本特性,如何迎接新的特性?
2020 年 4 月 20 日,Python 2 的最后一个版本 2.7.18 发布了,这意味着 Python 2 是真正的 EOL(end of life)了,一个时代终于落幕了. Python 2 ...
- 为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生【宇哥带你玩转MySQL 索引篇(二)】
为什么MySQL要用B+树?聊聊B+树与硬盘的前世今生 在上一节,我们聊到数据库为了让我们的查询加速,通过索引方式对数据进行冗余并排序,这样我们在使用时就可以在排好序的数据里进行快速的二分查找,使得查 ...
- 23 | 知其然知其所以然:聊聊API自动化测试框架的前世今生
- Apache ServiceComb 开源两周年,聊聊其与微服务的前世今生
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- [转帖]来聊聊,华为与H3C(华三)的前世今生!
本篇,是以真实事件改编,将以故事篇的方式呈现出来. 本故事将分为两个篇幅讲述. 在中国的网络通信设备市场,有两个华字辈的选手,一名叫“华为技术有限公司”,另一名叫“杭州华三通信技术有限公司”. 这两个 ...
- [转帖]ORM框架的前世今生
ORM框架的前世今生 https://www.cnblogs.com/7tiny/p/9551754.html 目录 一.ORM简介二.ORM的工作原理三.ORM的优缺点四.常见的ORM框架 一.OR ...
随机推荐
- Mysql函数1-IFNULL
IFNULL函数用于判断参数值是null时则返回指定内容. 原本 select goods_base_name,goods_id from goods where goods_id in (6,7,8 ...
- Python将本地文件上传到服务器
1.首先本地有一个文件"E:\Double\python\dataCheck\html_detail\20221206140345_activeBug.html",我需要上传到服务 ...
- 【SpringBoot】06 探索配置方式 Part2 占位符的使用
配置占位符? 随机数配置生成 RandomValuePropertySource 在配置文件中使用随机数 uid = ${random.value} uid = ${random.int} uid = ...
- 【Mybatis-Plus】01 快速上手
[官网快速上手地址] https://mp.baomidou.com/guide/quick-start.html#%E5%88%9D%E5%A7%8B%E5%8C%96%E5%B7%A5%E7%A8 ...
- 为什么美国人聊天,结尾的时候他们会说“peace”
相关: https://www.youtube.com/watch?v=w2O--Ly0aQg 作为世界上当前唯一的军事霸权国家,美国居然通过立法的形式来支持种族清洗,这样的国家用虚假的"自 ...
- 【转载】 Nature再发DeepMind研究:AI复现大脑网格细胞模拟导航!
原文地址: https://news.eeany.cn/news/416675-19.html ==================================================== ...
- [CEOI2010 day2] tower 题解
前言 题目链接:洛谷. 题意简述 你要对一个数组排序,满足 \(a_{i + 1} \leq a_i + D\),其中 \(D\) 是给定的常数.求方案数对 \(10^9+9\) 取模的结果. 题目分 ...
- 生成式 AI:机会与风险并存,企业该如何取舍?
作者 | 李晨 编辑 | Debra Chen Gartner最近对全球2,500名高管进行的一项调查发现,近一半(45%)的人表示,ChatGPT的宣传促使他们增加人工智能(AI)投资.调查报告称, ...
- Python按条件删除Excel表格数据的方法
本文介绍基于Python语言,读取Excel表格文件,基于我们给定的规则,对其中的数据加以筛选,将不在指定数据范围内的数据剔除,保留符合我们需要的数据的方法. 首先,我们来明确一下本文的具体需 ...
- 前后端分离使用mp遇到问题
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-s ...