To digitally transform the business, AI must be real-time. For AI to be real-time, we need real-time analytics.[1] Hybrid transaction/analytical processing (HTAP) is an emerging application architecture that "breaks the wall" between transaction processing and analytics. It enables more informed and "in business real time" decision making. ——Defined by Gartner
背景篇-引言
自 StoneDB 开源的第一天,我们就说要做真正的 HTAP,那么究竟我们对 HTAP是怎么理解的?解读一门技术,就要从其发展背景入手,本篇文章中我们将从 OLTP 和 OLAP 最近的发展介绍及各自遇到的问题为基础,引出 HTAP 相关概念。
OLTP:特点、适用场景、遇到的问题、最新进展
对事务型数据进行处理称为联机事务处理 (On Line Transaction Processing, OLTP)。OLTP 系统其主要的使用场景为记录日常运营中与业务系统之间的交互记录,并且支持以该数据进行查询分析以获得分析结果。 事务数据是指一种信息,用于跟踪与组织活动相关的交互,常为:业务事务。例如:从客户收到的付款、对供应商进行的付款、从库存移动的产品、接受的订单或交付的服务。表示事务本身的事务事件通常包含时间维度、数值等。 事务通常需要原子性和一致性。原子性意味着整个事务始终作为一个工作单元成功或失败,永远不会处于半完成状态。如果无法完成某个事务,数据库系统必须回退任何已完成的该事务的一部分工作,从而能够保证整个工作要么完成,要么失败。一致性意味着事务始终让数据处于最终有效状态,如果已将某个事务的一部分提交到数据库,那么该源事务中所有其他作用域内操作也将处于最终有效状态并提交到数据库中。事务型数据库可以使用各种锁定策略(如悲观锁定)支持事务的强一致性,以确保所有用户和进程的所有数据在业务的上下文中具有强一致性。 事务型数据最常见的部署体系结构是三层体系结构。在该体系结构中,事务型数据在数据存储层被使用。三层体系结构通常包含:表示层、业务逻辑层和数据存储层。
适用场景
如果业务系统对数据完整性和实时性有约束要求,同时在业务的处理过程中需要保证数据的严格完整性,而且更改后的数据需要严格的持久性,此时OLTP 会是你的首要选择。因为,OLTP 系统设计用于高效地处理和存储事务,以及查询事务数据。
面临挑战
实现和使用 OLTP 系统可能会带来一些挑战: (1)OLTP 系统不是特别适合用于处理大量数据场景的复杂查询。在大数据量复杂查询场景下, OLTP 系统会消耗大量的计算资源和存储资源,所以执行上可能较慢。而且如果此时其它事务也正在对某些复杂查询的数据进行操作,往往会触发系统中的锁机制,这会导致整个系统性能的下降。 (2)在 OLTP 系统中,数据库对象的命名约定通常简洁而精炼,这对业务用户专业素养要求较高。OLTP 系统中增强的规范化与简洁的命名约定共同使得业务用户在没有 DBA 或数据开发者帮助的情况下难以执行查询。 (3)历史记录以及在任何一个表中存储太多数据都会导致查询性能变慢。常见的解决方案是在 OLTP 系统中维护一个相关时间范围(例如当前统计年度)并将历史数据卸载到其他系统,例如:数据仓库。
OLAP:特点、适用场景、遇到的问题、最新进展
联机分析处理(英语:Online analytical processing),简称 OLAP,用来快速解决多维分析问题的一种方法。OLAP 是更广泛的商业智能范畴的一部分,它还包括关系数据库、报告编写和数据挖掘。 企业用来存储其所有事务和记录的数据库称为联机事务处理 (OLTP) 数据库。它们通常包含对组织有价值的大量信息。OLTP 的数据库不是为分析而设计的。因此,从这些数据库中检索答案从时间和工作量角度而言成本高昂。OLAP 系统设计用来以高性能方式从数据中提取商业智能信息。这是因为 OLAP 数据库针对高频读取和低频写入进行了优化。
适用场景
- 需要快速执行复杂的分析和即席查询,且不能对 OLTP 系统产生负面影响;
- 为业务用户提供一种简单的方式来基于数据生成报表;
- 提供大量聚合,这些聚合将使用户能够快速获得响应结果。OLAP 适用于大量数据且查询多为聚合计算的场景下。OLAP 系统针对高频读取应用场景(例如分析和商业智能)进行了优化。
面临挑战
OLAP 系统中的数据更新较少,具体取决于业务需求,这意味着 OLAP 系统更适用于战略级业务决策,而非适用于立即对更改做出响应。另外,还需要规划一定级别的数据清理和业务流程来使 OLAP 系统中的数据保持最新。
与 OLTP 系统中使用的传统的规范化关系表不同,