目录
HTAP数据库定义
HTAP(Hybrid transac- tion and analysis processing)数据库,也称混合型关系数据库,是能同时提供OLTP和OLAP的混合关系型数据库。
广义的HTAP数据库,能够在关系数据模型上进行OLTP时具有 强一致性保证,并且融合了分布式能力从而同时具有高扩展性 。狭义的HTAP数据库指的是采用行列混存或者行列转化技术来同时支持事务能力和分析功能。
以Oracle为例,最初的设计面向OLTP服务,而随着OLAP日趋发展,最近发布的Oracle版本开始同时支持OLAP服务,所以成为了广义上的HTAP数据库。而是否属于狭义HTAP的概念,需要根据其支持的存储技术、行列转换、查询处理技术等综合决定。
HTAP数据库特性
- 支持关系数据模型,并且可以支持标准SQL查询语言。
- 可以支持OLTP服务,保证事务处理的强一致性ACID。
- 可以支持OLAP服务,具有与非关系型数据库相媲美的扩展性和高效性。
- 具有分布式数据管理能力,包括采用备份机制保证容错性,采用Raft算法或Pixos算法, 确保一致性等。
目前支持HTAP的数据库系统架构主要包括:
-
行存为主,内存列存为辅:以行存为主支持数据的增删改查,以列存为辅(内存中行转 列)来支持复杂分析。其主要难点在于选择哪些数据转为列存、如何用行存和列存回答查 询。代表系统为Oracle。
-
主机行存,备机内存列存:主机采用行存,备机通过log复制转为内存列存提供分析能 力。代表系统为MySQL HeatWave。
-
多副本行列共存。通过多副本进行存储,主采用行存,副本采用列存。代表性系统 为TiDB。
-
列存为主,行存为辅。以列存为主,增量数据通过delta表定期转为列存。 实现HTAP的技术主要包括:行列转换技术、行列共存的查询优化技术、行列共存的事务 处理技术等
HTAP数据库评测标准
CH-Benchmark:CH-Benchmark融合了TPC-C和TPC-H两种基准。它整合两种数据模式, 选取典型OLAP+OLTP操作,来创建新基准。
单机HTAP数据库
单机HTAP数据库一般是通过一台主机同时支持行存和列存,内存中进行行转列,从而支持HTAP。而一写多读数据库则是通过日志将主机数据传递给备机,备机将其转为列存,从而支持HTAP。
目前的HTAP的业界代表是MySQL HeatWave。
集中式HTAP数据库
传统的Oracle数据库支持广义的HTAP,即同时支持交易和分析,并通过In-Memory支持行列共存。Oracle通过内存行转列技术来支持OLAP。目前DB2、SQL Server、MySQL等也推出 通过内存行转列来支持HTAP。
集中式HTAP数据库业界代表包括Oracle、DB2、SQL Server。
分布式HTAP数据库
一种是以内存型主列存为基础结合增量行存支持HTAP。主列存主要处理OLAP类分析查 询,增量行存负责OLTP类事务操作,并直接将更新数据定期合并到主列存中。此类系统因为以列存为主,所以OLAP的性能很高,OLTP处理性能中等。
分布式HTAP数据库业界代表性系统是SAP HANA。
另外一种是以分布式架构支持混合事务与分析处理。其分布式行存为主存储,列存为行 存的副本,主节点在处理事务时写入日志,并异步式地向其他节点发送最新日志,通过分布 式协议进行事务处理。其中,有部分节点会被选为列存节点,负责加速复杂查询。此类系统面向OLTP和OLAP的扩展性都很高。
分布式HTAP数据库业界代表性系统是TiDB。
云原生HTAP数据库
云原生HTAP数据库也是通过计算存储分离来提升HTAP数据库的弹性。目前Oracle和MySQL提供了云服务的HTAP数据库版本。
如何鉴别HTAP数据库
HTAP数据库目的是同时支持OLTP和OLAP查询,因此鉴别方法是构造同时需要OLTP和OLAP的 需求来进行评测(例如混合TPC-C和TPC-H)。