在 PlanetScale,我们与处于数据库旅程各个阶段的开发者交流。如今市场上的数据库产品种类丰富,这使得为你的需求选择合适的数据库变得极具挑战性。这篇博文的目的不是将复杂的数据库生态简化为单一视角,而是为开发者提供一个思考框架,帮助他们在构建生产应用时做出更明智的决策。
本文将探讨如何为你的工作负载识别合适的数据处理方法,以便在选择适合现代应用的数据库时优化性能、可扩展性和安全性。


数据库生态的简要概览:OLAP 和 OLTP

OLTP(在线事务处理)和 OLAP(在线分析处理)是两种不同类型的数据处理系统,通常在传统架构中结合使用。

OLTP

OLTP 用于处理大量小型事务性数据,常见于如电商、银行和社交媒体等应用。

OLAP

OLAP 数据库旨在处理需要分析大量数据的复杂查询,通常用于如商业智能和数据挖掘等应用。
OLTP 和 OLAP 系统的结合为企业提供了强大的工具来管理和分析数据:OLTP 系统处理日常事务,而 OLAP 系统从数据中挖掘提供业务决策的洞察。


传统架构 vs. HTAP 架构

近年来,HTAP(混合事务和分析处理)数据库的崛起旨在针对需要同时支持分析和事务性的新型应用。要理解 HTAP,我们首先需要了解 OLTP 和 OLAP 系统的演变历史。
传统的关系型数据库既可以用于事务处理也可以用于分析,但 OLTP 和 OLAP 系统具有截然不同的特性:

  • OLTP 系统专为处理单条记录的插入、删除、更新以及从索引中查询点数据设计。
  • OLAP 系统则主要处理批量更新和表扫描操作。

对于 OLAP 系统,通常通过 ETL(提取、转换、加载)流程,将 OLTP 系统中的事务数据整合和转化为适合分析的环境。


HTAP:优势与分类

通过广泛的市场营销,HTAP 被定位为一种有前途的新型计算范式,用来解决管理两个独立工作负载时产生的性能、成本和复杂性挑战。HTAP 系统可以大致分为以下三类:

分类特征优劣势
共享-所有架构所有数据存储在一个单一的共享存储系统中。实现最简单且数据一致性易于保证;但在扩展性方面可能受限。
共享-无架构集群中的每个节点存储自己的数据。扩展性更强,更容易横向扩展;但实现和管理更加复杂。
混合架构结合两种架构元素,通常将事务数据存储于共享-所有系统中,而分析数据存储于共享-无系统中。数据一致性难以保证,尤其是存在并发事务和分析操作时;扩展性也可能受到限制。

围绕 HTAP 的实现已经出现了许多不同的方法:

  • 内存型 HTAP 数据库:集群中的每个节点将数据存储在内存中。这种方式允许水平扩展,但在保证数据一致性方面可能会更加复杂,同时对大量内存的需求使得成本增加。
  • 列式 HTAP 数据库:以列式的方式存储数据,该格式优化了分析性查询的性能。但对于事务性查询,性能可能会较慢。
  • 存储与计算分离的数据库:存储和处理数据的过程被分离,适配不同的需求。
  • 混合型 HTAP 系统:事务性数据存储在磁盘上而分析性数据存储在内存中。

HTAP 的挑战

HTAP 系统在优化大规模现代应用的高效数据处理方面存在一些内在的挑战。尽管每个使用场景不同,但以下问题值得注意,它们可能使 HTAP 系统变得不适宜:

  1. 混合工作负载的复杂性 HTAP 数据库试图在单一系统中同时支持事务和分析任务,这导致数据库需要在高速事务处理和资源密集型分析查询之间找到平衡。这样的需求冲突可能导致性能折衷。
  2. 性能权衡 为一种工作负载优化可能会牺牲另一种。例如,为了快速事务处理,分析查询可能因共享资源而速度变慢;反之,若资源被分配用于增强分析性能,则事务操作可能会受到影响,导致延迟增加和吞吐量降低。
  3. 数据模型不匹配 OLTP 和 OLAP 工作负载通常使用不同的数据模型。OLTP 事务关注单条记录的更新以及数据的完整性和一致性,而 OLAP 操作涉及复杂的聚合和扫描。试图将两类工作负载适配于同一数据模型可能会导致设计上的妥协,从而影响两类工作负载的高效处理。
  4. 扩展性挑战 现代应用通常需要水平扩展以适应不断增长的数据体量和用户负载。HTAP 数据库可能难以维持与专为某一类型工作负载设计的解决方案相同的性能和扩展性。当系统规模扩大时,平衡事务和分析组件的扩展需求变得愈加复杂。
  5. 资源争用 在 HTAP 系统中,当事务和分析工作负载争夺同一资源(例如 CPU、内存和 I/O 带宽)时,就会出现争用。这种情况可能导致资源瓶颈、性能波动和整体系统不稳定。
  6. 复杂的维护与管理 HTAP 数据库相比于独立的 OLTP 或 OLAP 系统需要更复杂的管理和维护。管理员需要配置、调优和优化系统,以确保同时支持事务和分析工作负载。这种复杂性可能导致更高的运营开销和潜在的人工错误。
  7. 分析能力的局限性 虽然 HTAP 数据库可以从操作数据中提供接近实时的洞察,但其分析能力可能不如为复杂分析查询和报告专门设计的数据仓库。这些专用系统能够使用更高级的优化技术,以更高效地处理复杂分析操作,提供更好的性能和更丰富的数据洞察。
  8. 数据处理架构的演变 现代应用通常采用分布式计算、微服务以及无服务器架构,这些架构旨在优化特定类型的工作负载。将一个混合型数据库融入更大的应用生态并充分利用新兴技术趋势可能会变得困难。

PlanetScale 的方法

PlanetScale 并不是声称自己是 HTAP 数据库,也不是为纯分析工作负载设计的 OLAP 数据库。相反,PlanetScale 提供唯一的托管 Vitess 解决方案,并优化于 OLTP 工作负载。
作为曾在全球最大型企业中负责生产环境数据库的开发者,我们深知每个应用都是不同的,而试图找到一个通用适用的数据库通常意味着要做出妥协。
如果你的复杂应用中包含可以分离的事务和分析工作负载,使用独立的数据库分别支持这两种工作负载可能会更合适。这种方法允许每个数据库对其特定工作负载进行优化,从而提供更好的性能和扩展性。
物理资源隔离 是保证事务型查询性能的有效方式。分析查询通常消耗大量资源(如 CPU、内存和 I/O 带宽)。如果这些查询与事务型查询共同运行,事务查询的延迟可能会被严重拖慢。
对于大型 ETL 工作负载,我们支持并推荐使用如 **Airbyte**、**Fivetran** 和 Stitch 这样的数据集成引擎,通过这些工具将工作负载卸载到专门处理 OLAP 工作负载的平台上去。



什么是 HTAP?插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:http://folen.top/2025/09/13/what-is-htap/