深入浅出存储引擎
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1.1 OLTP、OLAP与HTAP

OLTP(在线事务处理)数据库的主要功能是处理用户的在线实时请求,直接为用户提供服务。因此,这类数据库通常对处理请求的时延要求比较高,正常情况下绝大部分请求会在毫秒级完成。OLTP数据库很多,除了大家最熟悉的关系数据库(如MySQL、Oracle)外,还有Redis、MongoDB等非关系数据库。

OLAP(在线分析处理)数据库的主要功能是对数据或者任务进行离线处理,不直接为用户提供服务。OLAP系统对请求的处理通常比OLTP慢得多,一般为秒级、分钟级甚至小时级,通常在数据统计、报表分析、数据聚合分析等场景使用。这类数据库的典型代表有HBase、Teradata、Hive、Presto、Druid、ClickHouse等。互联网企业往往都需要使用OLTP和OLAP,因此为了满足这两类需求,通常结合多个系统一起开发使用。这样的做法当然是可行的,而且多数企业采用的也是这种方式。

随着互联网技术的发展,需要存储的数据量呈爆炸式增长,这种模式带来的存储成本问题成为新的矛盾点,人们开始探索是否有一种数据库能将OLTP和OLAP这两类应用合二为一。于是,一种新的解决方案出现了,那就是下面要介绍的HTAP(混合事务分析处理)数据库。

HTAP在设计时就充分考虑了对OLTP和OLAP两种场景的需求,通过在系统内部实现上进行更好的兼容,为上层应用程序使用提供了统一的服务。在处理上述两种场景时,底层可以使用同一套数据库来完成。这类数据库既可以处理在线事务,又可以进行在线分析。可以认为HTAP=OLTP+OLAP。HTAP的主要代表有TiDB、OceanBase、CockroachDB等。

HTAP数据库有它的优点,但是也间接带来了很大的挑战。只使用HTAP数据库就可以完成在线事务处理和在线分析处理这两类需求,这对用户而言无疑是一种好的选择,因为底层采用同一套系统存储数据,在存储资源和成本上有很大的优势。但随之而来的是系统复杂性的增加,这类数据库的复杂度相比纯OLTP数据库和纯OLAP数据库高很多,软件开发难度也大很多。

OLTP、OLAP与HTAP之间不同维度的对比见表1-1。

表1-1 OLTP、OLAP与HTAP之间不同维度的对比