引言
PingCAP 团队的论文《TiDB: A Raft-based HTAP Database》入选 VLDB 2020,这是对 TiDB 数据库阶段性成果的肯定,非常为国内数据库技术的快速发展而感到高兴。由于关于 TiDB 数据库在高可用、水平扩展和 ACID 事务的实现方案很久以前就已经公布出来了,对于这些主题大家都比较熟悉,所以就不再赘述了,下面主要谈谈论文中关于如何实现数据强一致性且资源隔离的 HTAP 数据库的一些启发和感想。
OLTP or OLAP
大家都知道数据库分为 OLTP 和 OLAP 类型,那么数据库为什么要分成这两类型呢?
首先,OLTP 和 OLAP 是定义数据处理方式的,这是两个差异特别明显的工作负载,OLTP 操作是涉及数据少,但是实时性和事务要求高,并发量大;OLAP 操作是实时性和事务要求低,但是涉及数据量大,并且查询模式不固定,很难通过索引来覆盖。其次,早期的数据库是没有 OLTP 和 OLAP 类型之分的,在一个数据库(主要为关系数据库)里进行 OLTP 和 OLAP 类型的数据相关的操作,后来数据量慢慢变大,直接在关系数据库中同时处理 OLTP 和 OLAP 类型的请求开始力不从心,更坏的情况可能还会影响到 OLTP 类型的请求,所以针对 OLAP 场景设计了更符合其工作负载的 OLAP 类型数据库,通过将 OLTP 类型的数据同步到 OLAP 类型的数据库,然后再进行 OLAP 类型的操作。