1.HTAP数据库定义
随着现代社会中各类大规模实时分析应用的出现, 许多的业务场景需要我们既能处理高并发的事务请求, 又能够对最新数据作实时分析。
传统的数据处理流程是从在线事务处理(on-line transaction processing, OLTP)到数据 ETL(extract-transform-load, 抽取-转换-加载)这样的过程, 再到在线分析处理(on-line analytical processing, OLAP)的数据处理流程。
传统的数据处理流程耗时耗力, 并且分析的数据往往已经过时, 不能及时挖掘出有用信息。
混合事务与分析处理(hybrid transactional analytical processing, HTAP)技术主要基于一站式架构混合处理 OLTP 和 OLAP 的负载, 这省去了传统架构中的 ETL 过程。
HTAP 数据库的主要共同点是, 都以行列存储共存的方式来高效地处理混合负载. 这主要是因为行存引擎更适用于高并发的行级别事务处理, 列存引擎更有利于分析查询处理, 特别是对于查询只需要读取数据表的部分列的情况。
当前, HTAP 数据库技术主要面临 4 个方面的挑战, 包括:
(1)数据组织问题:如何根据以往的 HTAP 负载适应性地组织数据, 以优化系统的处理性能及降低存储代价。
(2)数据同步问题:需要将最新的事务数据更新到列存储中, 以保证数据分析的高新鲜度. 但该问题的一个主要难点在于: 如何在保证高新鲜度的同时, 尽量减小数据同步对系统造成的性能影响.
(3)查询优化问题:涉及到三个问题: (i) 如何为查询选择存储访问路径(行存或列存); (ii) 如何利用新硬件如异构 CPU/GPU 处理器进行负载加速; (iii) 如何建立索引高效地支持 HTAP.
(4)HTAP 资源调度问题:合理地为系统中执行 OLTP 负载的实例和执行 OLAP 负载的实例分配 CPU、内存等资源, 使得系统性能最大化。
2.HTAP数据库分类
主流 HTAP 数据库的存储架构, HTAP 数据库可分为四大类:
(a) 主行存与内存型列存;
(b) 分布式行 存与列存副本;
(c) 单机磁盘型行存与分布式列存;
(d) 主列存与增量型行存.
这四类架构如下图所示:
本文参考软件学报《HTAP 数据库关键技术综述》