- 分享人:任勇闯
- 关键词:HTAP概述,数据格式
- Keywords: HTAP, PAX, Hyper, FSM, RealTime LSM
- 分享PPT: 2022-04-01-HTAP概述及存储格式
以业务系统的角度来看,可以将业务应用分为 OLTP 和 OLAP 两大场景。因为 OLTP 事务往往一次只对单个实体进行相关操作,并需要访问这个实体的大多数的属性,所以面向 OLTP 数据库的数据常规存储数据的组织方式就是 NSM,即行存。对 OLAP 的存储最好的选择就是 DSM,列存就是将一个关系表的 n 个属性垂直分割成了 n 个子关系,并且进行分开存储。HTAP 所追求的就是使得系统结合 OLTP 事务和 OLAP 分析,形成优劣互补的新产品,来应对一些 OLTP 业务上的实时分析的需求。
- 不同系统不同存储引擎:
- 问题:实时数据维护副本
- 方案:CDC、分布式协议、RDMA
- 不同系统同一存储引擎:TP 扩展 AP;AP 扩展 TP
- 统一系统不同存储格式:数据冷热分离;数据存储布局动态变更
- 统一系统相同存储格式:SQL-ON-Hadoop、HHTAP、混合存储格式
Pax 是针对正常的行存页面进行的优化,在该页面的数据进行列存布局,提升缓存友好性。PAX 会对该页面进行分区处理,每个分区称为 miniPage。在使用 PAX 时每个元组仍然记录在同样的页内,但在页内存储时会选择对应的 miniPage 上。这种设计增加了元组间的空间局部性,虽然增加了元组内数据的局部性但仍然处于同一个 page 中,依然可以快速重组一个元组。
Hyper 在存储格式的设计首先就是会将一个关系表划分为多个固定大小的 Chunk,以一个 Chunk 为单位对数据在存储格式进行冷热变动调度。刚插入的数据集中在某个 chunk 数据块中,这时候称该数据还是热数据,因为在最近的时间范围有很大的概率进行读取、修改等操作。但随着时间的推移,这些数据就会成为旧数据,不再经常变更也就是冷数据,就会将对应的 chunk块中的数据转换为列存形式,并为了节省内存而进行压缩处理。
首先会对一个关系表按照行进行划分,分成一个个的 Tile 组,Tile 组中对应的元组又可以按列进行划分,分成一个个物理块,也就是一个个 Tile,但不同的物理块包含的属性是不相同的,每个物理块总是尽可能将经常一起访问的数据列存储在同一个物理块中。
LSM-Tree 具备新数据在上层,旧数据在下层特点,以及为了提高读效率而定期 compaction,使得 Lsm-tree 本身就是一个数据生命周期感知敏感的数据布局。基于此,将 LSM 多层结构设计升级为每层数据存储格式可以动态变更,将上层数据向下传递过程中,由行存逐渐列存变换,以支持 HTAP 方案。