数据库世界中的一个重要思想是专用数据库将胜过通用数据库。迈克尔·斯通布雷克(Michael Stonebraker)是图灵奖获得者,也是数据库界最有影响力的人物之一,他也在他的论文 “一刀切:一个时代已经过去又过去的想法”中讨论了这一点。
这是一个理性的判断,因为构建一个支持在线事务处理 (OLTP)或在线分析处理 (OLAP) 工作负载的数据库已经足够困难,更不用说同时支持这两种工作负载的数据库了。但困境是,今天,许多用户面临着混合 OLTP 和 OLAP 工作负载的日益增长的需求。那我们怎么破解呢?
HTAP≠OLTP + OLAP
是的,HTAP不是OLTP 和 OLAP 的直接集成。
一个很好的比喻是房车。它有时被称为“车轮上的家”,但它实际上并不是汽车和房屋的结合。相反,房车是一种独特的体验——一种满足特殊需求的特殊产品。HTAP也是如此。

HTAP 是为特殊场景设计的,而不仅仅是 OLTP、OLAP 或两者的组合。
HTAP 场景的兴起
近年来,对实时数据处理和分析的需求迅速增长。专注于离线数据处理的传统数据库已无法满足用户日益增长的需求。这背后有两个主要原因。
首先,实时数据处理的技术栈不断发展成熟。 以大数据生态系统为例。实时计算框架从语义简单的 Apache Storm 发展到基于 Trident 的 Apache Storm,再到语义复杂并辅以内置状态存储的 Apache Flink。直到现在,在经历了所有这些变化之后,流处理框架才在许多复杂的实时分析场景中被广泛采用。这些框架搭配不同特性的下游sink,进而加速实时应用的创新。
此外,用户不断尝试新的想法来实时数字化他们的业务运营;技术栈变得更容易使用;数据库技术的发展也刺激了实时应用的普及。
二是众多传统行业数字化转型进程加快,产生新需求。 处理曾经不可能完成的任务现在是经营良好的企业的要求。
以中国快递业为例。随着其市场规模的不断扩大,交货订单也大幅增长。这些订单的实时监控和分析已成为必须,并且可以帮助优化运营的各个方面,例如实时交付路线优化和罚款管理。传统的离线分析无法满足这些需求,尤其是在大型购物狂欢节期间交易高峰期。
如今,越来越多的用户面临着混合工作负载的场景,而不是纯粹的 OLTP 或 OLAP。我们称这些 HTAP 场景。传统的 OLAP 解决方案过于繁琐,无法满足新的需求,纯 OLTP 数据库也是如此。用户真正想要的是介于 OLTP 和 OLAP 数据库之间的解决方案。
HTAP:PingCAP 的解决方案
在 PingCAP,我们的产品策略是TiDB 是一个面向 OLTP 的数据库,并辅以 OLAP 能力。也就是说,我们的野心是在OLTP和HTAP领域。 由于我们今天讨论的是 HTAP,所以我将跳过 OLTP 部分并专注于 HTAP。
我之前解释了为什么 HTAP 不是 OLTP 和 OLAP 的直接组合。我可以从我们自己的经验中解释更多。
以前,我们面临许多数据中心应用程序的场景。用户打算将来自不同业务线的数据孤岛的数据融合到同一个实时集中数据存储中,然后在其之上提供数据服务和分析。在另一种情况下,用户计划构建一个从其 OLTP 数据库复制的只读副本。此副本用于支持单独的分析和数据服务工作负载,并响应无限的查询和分析服务。
上述场景要求数据库:
- 拥有类似于传统数据仓库的分布式架构,以支持具有相似规模的数据聚合。
- 像事务数据库一样确保数据一致性和实时性能,同时提供基于索引的数据召回和基于列存储的大规模分析。
- 与离线数据仓库顺利连接。
也就是说,数据库必须专注于混合的 OLTP 和 OLAP 工作负载。它也可以比传统的数据仓库更轻,因为它不需要:
- 内部有复杂的计算模型,适用于离线场景。
- 支持PB级数据存储;实时数据量通常不会达到数据仓库冷存储的极限。
我们还遇到了主要任务是事务处理但偶尔需要实时分析的场景。
HTAP 就是上述场景的全部内容。TiDB 的 HTAP 能力就是为这些需求而设计的,它是实时的、敏捷的和轻量级的:
- 用户可以通过统一的前端同时访问交易和进行分析查询。
- 行存储和列存储实时保持一致。
- 行列资源隔离,复制机制保证负载均衡和故障自动恢复。
- 事务服务在无状态的独立服务节点组中处理,而分析查询则在矢量化加速、大规模并行处理 (MPP) 模式下处理。
下图展示了 TiDB 如何同时独立地处理 OLTP 和 OLAP 工作负载。

此外,在混合工作负载的场景中,不可能将复杂的任务明确拆分,然后使用不同类型的数据库来应对。但是,通过采用 TiDB,一切都不同了。
TiDB 可以作为数据中心,供用户使用复杂的索引进行高并发短查询,就像使用传统数据库一样。他们还可以在同一逻辑数据上使用 TiDB 的列存储和 MPP 技术来加速大规模的实时分析,其性能绝不逊色于传统的专业化 OLAP 数据库。更重要的是,TiDB 的基于成本的优化器(CBO)可以自动将不同类型的查询分配给不同的存储或计算引擎。
概括
在这篇文章中,我简要解释了 HTAP 的概念,并介绍了我们如何设计 TiDB 来支持 OLTP 和 OLAP 工作负载。
作者:马晓雨
文章来源:https://dzone.com/articles/htap-one-size-fits-all




