HTAP,全称为Hybrid transaction and analysis processing,即混合事务和分析处理。HTAP是混合型关系数据库,是能同时提供OLTP和OLAP的混合关系型数据库。
1、广义的HTAP数据库
在关系数据模型上进行OLTP时具有强一致性
OLTP,联机事务处理,是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理。强调数据库内存效率,强调内存各种指标的命令率,强调并发操作。例如银行交易,可能同时有几十人在办理业务,在保证业务能正常办理的前提下,速度还要快。
融合分布式能力从而具有高扩展性以内存型主列存为基础结合增量行存支持HTAP
主列存主要处理OLAP类分析查询,增量行存负责OLTP类事务操作,并直接将更新数据定期合并到主列存中。此类系统因为以列存为主,所以OLAP的性能很高,OLTP处理性能中等。分布式HTAP数据库业界代表性系统是SAP HANA。以分布式架构支持混合事务与分析处理。
其分布式行存为主存储,列存为行 存的副本,主节点在处理事务时写入日志,并异步式地向其他节点发送最新日志,通过分布 式协议进行事务处理。其中,有部分节点会被选为列存节点,负责加速复杂查询。此类系统面向OLTP和OLAP的扩展性都很高。分布式HTAP数据库业界代表性系统是TiDB。
2、狭义的HTAP数据库
指采用行列混存或行列转化技术来同时支持事务能力和分析功能
- 行存为主,内存列存为辅。针对有需要的表会同时存在一份行存储和列存储,在列存储上做分析操作,在行存储上进行更新,定期同步到列存储里,可以灵活指定需要采用行存与列存的表,也可以系统运行时更改表特性。主要难点为哪些数据转为列存、如何用行存和列存回答查询,代表系统为Oracle;
- 主机行存、备机内存列存,备机通过日志复制转为内存的列存提供分析能力。代表系统为MySQL HeatWave,分析型查询由系统查询引擎基于代价估计后决定是否下推到内存列引擎中执行,常被访问的热数据将会留在内存中,不常使用的冷数据将会被压缩后持久化到外存中;
- 多副本行列共存,通过多副本进行存储,主采用行存,副本采用列存。代表性系统为TiDB,行存数据存储在TiKV中,列存数据存储在TiFlash中,行存和列存松耦合,通过异步复制Raft log的方式将更新从行存节点同步到列存节点,列存节点不参与Raft协议的日志提交和leader选举等分布式事务,具有较高负载隔离性和扩展性,数据分析新鲜度偏低;
- 列存为主,行存为辅。增量数据通过delta表定期转为列存,主列存主要处理OLAP类分析查询,增量行存负责OLTP类事务操作,并直接将更新数据定期合并到主列存中。此类系统因为以列存为主,所以OLAP的性能很高,且增量行存直接与列存连接,数据分析的新鲜度也很高。但缺点也很明显,就是OLTP处理性能中等,扩展性也不高,负载隔离性很低,代表系统为SAP HANA,主列存通过压缩、向量执行和OLAP多维分析等技术进行查询加速,同时利用CPU多级缓存机制优化事务处理。