paper-outline
paper-outline copied to clipboard
HTAP Databases: What is New and What is Next
关于 HTAP 的定义:2014 年 Gartner 提出能够并发执行 OLTP 和 OLAP 负载,而不需要 ETL (Extract-Transfrom-Load) 的就可以被称为 HTAP。2018 年,Gartner 扩展了 In-Process HTAP 的概念:能够把 OLTP 和 OLAP 交织在一起的架构也可以被称为 HTAP。这种新的定义意味着 HTAP 不再需要局限于一些仅存在于内存中的技术。
架构设计分类
- 行存为主,内存列存:所有数据持久化为行存,数据更新被 append 到增量存储中,归并到列存里;由于所有工作都在内存中完成,所以具有高吞吐率;典型:Oracle、SQL Server
- 分布式行存 + 列存副本:主存储为行存,部分 slave 被选为列存;事务查询只发生在行存节点上,提交后的事务异步复制到列存节点上;工作负载隔离性佳,数据新鲜度低;典型:TiDB
- 磁盘行存 + 独立列存:使用一个完全独立的内存列存节点,只保留行存 TP 的热数据;典型:MySQL Heatwave
- 列存为主 + 行存增量表:数据更新被 append 到行存增量表中,逐步归并到列存;AP 性能佳,TP 扩展性差;典型:SAP HANA
HTAP 技术分类
OLTP 技术
- MVCC + 日志
- 2PC + Raft + 日志
OLAP 技术
- 内存增量 + 列扫描:数据新鲜度高
- 日志增量 + 列扫描:数据新鲜度中等
- 纯列扫描:数据新鲜度低
数据同步技术
- 内存内同步
- 基于磁盘增量的同步
- 从主行存重建列存
查询优化技术
- 列选择:按照历史负载和统计信息,选择部分列维护为列存,对这些列的查询可以被推到列存执行;选择的准确性十分重要
- 混合行列扫描:要么在行存上执行,要么在列存上执行,基于代价选择
- 使用 CPU/GPU
资源调度技术
- 基于负载驱动的调度:基于正在进行中的负载性能,调整 OLTP 和 OLAP 的并行比例
- 基于新鲜度驱动的调度:确保 OLTP 和 OLAP 同时以高吞吐运行,周期性同步数据
未来需要解决的问题
- 自动化的列选择:轻量、准确
- 查询优化
- 自适应的资源调度
- 目前没有官方的 benchmark