HTAP的定义
数据库系统一般可以按照负载类型分成操作型数据库(Operational Support System)和决策型数据库(Decision Support System)。操作型数据库主要用于应对日常流水类业务,主要是面向消费者类的业务;决策型数据库主要应对的是企业报表类,可视化等统计类业务,主要面向企业类的业务。
针对两类系统的数据管理和系统设计方式都有很大差异。
(1)对OLTP的数据模型采用基本的约束E-R图模型,而OLAP的数据模型则需要采用特殊的“星型模型”,数据立方等数据仓库相关的技术。
(2)对OLTP的数据存储通常采用行式组织,而OLAP采用列式组织。
(3)OLTP的业务通常对实时要求比OLAP高很多。
(4)传统的数据库,为了同时支持两类业务。通常采用两个数据源, 分别对两套系统进行优化设计。
OLTP的数据定期会通过ETL(提取,转换,加载)工具把数据同步导入OLAP系统中。这就涉及到数据源滞后的问题。 OLAP的数据滞后,导致分析出来的结果时效性不够,对决策支持类系统的要求不够。比如说,双11期间,用户购物的行为和推荐系统的推荐结果之间的时间差越短,越有可能提高销量。
HTAP是混合 OLTP 和 OLAP 业务同时处理的系统,2014年Garnter公司给出了严格的定义:混合事务/分析处理(HTAP)是一种新兴的应用体系结构,它打破了事务处理和分析之间的“墙”。它支持更多的信息和“实时业务”的决策。
HTAP系统,主要有一下几点好处:
数据不需要从操作型数据库导入到决策类系统;
操作事务,实时地对分析业务可见;
上钻下取等分析操作,时刻操作最新的数据;
减少对副本的要求。
总结:HTAP大白话理解:如何在OLTP单一数据系统上,提供OLAP操作。
现有技术
在单一系统中,同时应对OLTP和OLAP两类业务,目前表现最好的方案是基于多版本的事务并发系统。MVCC的特点是写不会阻塞读操作,读也不会阻塞写操作,是属于读优化的数据库系统。但MVCC的两个缺点导致这类系统不太适合HTAP。(1)当分析查询要扫描读取的数据的版本过多,扫描旧版本所花费的时间很长,严重拖累性能。(2)MVCC的垃圾回收机制很浪费计算资源,拖累性能。
State-of-Arts
直接在单一数据源上不加区分的处理TP和AP的方案,目前还不能有效实现。
当前的方案是进行一个折中。采用快照的方式,分开处理OLTP和OLAP请求。让OLAP的请求在OLTP的最新的一致性快照上执行。同时对外暴露一套接口,从而从逻辑来看是一套系统。虽然内部是分开处理OLTP和OLAP的。
这种折衷方案,重要的一点,就是保证快照是尽可能的保持“新”,快照不能太过滞后OLTP的数据。这就需要系统频繁的做快照操作。
目前两种流行的方案,一个是采用linux的系统快照能力,提供HTAP服务的方案,比如Hyper数据库系统。另一种是类似HANA的方案,定期生成增量数据,然后合并到AP系统。如下图。
领取专属 10元无门槛券
私享最新 技术干货