在最新一届国际数据库顶级会议 ACM SIGMOD 2022 上,来自清华大学的李国良和张超两位老师发表了一篇论文:《HTAP Database: What is New and What is Next》,并做了 《HTAP Database:A Tutorial》 的专项报告。这几期学术分享会的文章,StoneDB将系统地梳理一下两位老师的报告,带读者了解 HTAP 的发展现状和未来趋势。
在 深度干货!一篇Paper带您读懂HTAP这期分享中我们已经把HTAP产生的背景和现有的HTAP数据库及其技术栈做了一个简单的介绍,这一期,我们将着重讲一讲报告中对HTAP关键技术的解读。
在正式开始前,先给上期简单收个尾,报告中提到 HTAP 数据库除了以下四种:
- Primary Row Store + InMemory Column Store
- Distributed Row Store + Column Store Replica
- Disk Row Store + Distributed Column Store
- Primary Column Store + Delta Row Store
还补充了3种,感兴趣的读者可以自行了解:
- Row-based HTAP systems:如 Hyper(Row)、BatchDB等
- Column-based HTAP systems:如 Caldera、RateupDB等
- Spark-based HTAP systems:如 Splice Machine、Wildfire等
下面进入正文,本篇报告中主要介绍了HTAP的五大类关键技术,分别是:
- Transaction Processing(事务处理技术)
- Analytical Processing(查询分析技术)
- Data Synchronization(数据同步技术)
- Query Optimization(查询优化技术)
- Resource Scheduling(资源调度技术)
这些关键技术被最先进的 HTAP 数据库采用。然而,它们在各种指标上各有利弊,例如效率、可扩展性和数据新鲜度。
事务处理 (TP) 技术
HTAP 数据库中的 OLTP 工作负载是通过行存储处理的,但不同的架构会导致不同的 TP 技术。它主要由两种类型组成。
使用内存增量更新的单机事务处理
Standalone Transaction Processing with In-Memory Delta Update
关键技术点:
- 通过MVCC协议进行单机事务处理
- 通过内存增量更新进行insert/delete/update操作
相关数据库:Oracle、SQL Server和SAP HANA等
上面这张图介绍了单机事务处理执行insert/delete/operations操作的一个逻辑过程,总体上是借助 MVCC+logging,它依赖于 MVCC 协议和日志记录技术来处理事务。具体来说,每个插入首先写入日志和行存储,然后附加到内存中的增量存储。更新创建具有新生命周期的行的新版本,即开始时间戳和结束时间戳,即旧版本在删除位图中被标记为删除行。因此,事务处理是高效的,因为 DML 操作是在内存中执行的。请注意,某些方法可能会将数据写入行存储 或增量行存储 ,并且它们可能仅在事务提交时写入日志。
一般有三种方式来实现内存增量存储,分别是:Heaptable(堆表)、Index organized table(索引组织表) 和 L1 cache(一级缓存),具体区别如下表:
三者主要的区别在于插入(insertion)速度、查询(lookup)速度和容量(capacity)大小上。
使用日志回放的分布式事务处理
Distributed Transaction Processing with Log Replay
关键技术点:
- Two