混合负载 HTAP

MatrixOne 是一款能够支持 HTAP(Hybrid Transaction Analytical Processing)混合负载处理的数据库,旨在提供满足单一数据库内事务处理(TP)和分析处理(AP)所有需求的解决方案。凭借其存储和计算事务的解耦架构,MatrixOne 能够在同一数据引擎中同时支持在线交易和实时统计分析,同时提供高效的资源隔离机制。这种设计大大保留了数据的新鲜度,省去了在许多业务场景中构建实时数据仓库的步骤,从而帮助客户实现其业务价值。

业务需求

随着企业业务规模的扩大,数据量的不断增长,以及业务系统的日益复杂,传统的在线数据库不得不面对拆分的问题。然而,拆分后的架构并不能满足一些需要关联统计和实时分析的需求。此时,类似实时数据仓库的产品应运而生。然而,由于实时数据仓库的架构复杂,成本高昂,并非所有的企业都能构建一整套生态链路。MatrixOne 的 HTAP 模式应运而生,它可以使用一套引擎在支持高并发在线吞吐的同时,提供海量数据的实时在线分析能力,为企业提升效率、持续创新提供了动力。

功能优势

  • 一站式体验:满足在单一数据库内进行事务处理(TP)和分析处理(AP)的所有需求,用户可以享受到覆盖整个 TP 和 AP 场景的一站式体验。
  • 简化集成工作:用户使用 MatrixOne 只需要进行少量的集成工作,就能实现全面的 TP 和 AP 场景的使用,尤其能显著减少从 TP 数据库同步到 AP 数据库的复杂 ETL 工作。
  • 高性价比:MatrixOne 使用单一存储引擎来实现 HTAP,相比于传统的多引擎方案,用户只需要维护一套集群,存储一份数据,就能显著降低硬件投入。

技术架构

MatrixOne 通过模块化的存储、计算和事务架构,多级存储体系,以及负载处理链路隔离的模式来实现 HTAP。

存储、计算、事务模块化分离

MatrixOne 的整体技术架构采用完全的存储和计算分离架构。通过模块化设计,将数据库的计算、存储、事务处理分离为单独的模块,从而组建出一套各组件都具有独立伸缩能力的数据库系统。如下图所示,MatrixOne 由三个独立层级构成:

混合负载 HTAP - 图1

  • 计算层,以计算节点 Compute Node 为单位,实现计算和事务处理的无服务器化,并有自己的 Cache,支持随意重启和扩缩容;多个 Compute Node 可以并行计算,提升查询效率。
  • 事务层,由数据库节点 Database Node 和日志节点 Log Service 组成,提供完整的日志服务以及元数据信息,内置 Logtail 用于保存最近写入的新数据。
  • 存储层,所有数据均保存在以 S3 为代表的对象存储中,实现了低成本、无限扩展的存储方式,通过命名为 File Service 的统一文件操作服务,实现了不同节点对底层存储的无感知操作。

多级存储体系

如上一章节中图示所示,MatrixOne 的存储体系由全量数据共享存储、少量共享日志和计算节点的无状态缓存组成。

  • 全量数据保存在对象存储中,作为整个数据库的主存储,也是数据持久化的唯一保存位置。对象存储具有成本低廉,扩展性近乎无限的特性。
  • LogService 提供共享日志服务,用于对整个集群的写入/更新等事务信息进行状态信息保存,它是整个集群唯一带状态的组件。因此,LogService 需要以分布式 Raft 协议以 3 节点的形式保证高可用。但是它只保留一段时间的事务处理日志,我们称之为 Logtail。隔一段时间,就会有 DN 来帮助将历史日志进行压缩,存入 S3,因此 Logtail 可以保持一个非常精简的数据大小,一般在几 GB 左右。
  • 每个计算节点 CN 上都有缓存,在用户初次查询时,会从对象存储中读取相关数据并放入缓存中,作为热数据。当客户再次查询相同内容时,如果命中缓存,将会快速向用户返回查询结果。关于缓存带来的冷热数据分离的技术特性,可以参考数据缓存及冷热数据分离架构详解。另外,除了读取对象存储中的数据外,CN 节点还会向 LogService 订阅 Logtail 的数据,LogService 中有新的更新会即时推送给 CN。

负载处理链路隔离

自定义负载隔离

用户请求首先会进入 MatrixOne 集群并通过 Proxy 模块。Proxy 是用于实现计算节点分组和隔离的模块。该模块通过配置将计算节点 CN 分为若干组,并用标签区分各种租户或负载,让用户能够根据不同的业务需求设定不同的 CN 组处理不同的业务。

有关 Proxy 对 CN 分组使用的具体操作,可以参考使用 Proxy 管理 CN 组

TP/AP 负载链路隔离

在执行层面,MatrixOne 会根据请求类型将其路由到不同的处理链路,从而实现 OLTP 和 OLAP 的隔离。下面我们将根据读写请求的处理方式来详细解释如何实现负载隔离。

写请求处理

混合负载 HTAP - 图2

如图所示,处理写请求(INSERT/UPDATE/DELETE)时:

  1. CN 节点会启动一个事务,并检查写入请求是否有主键冲突或其他事务相关问题,如果有,则直接向用户返回错误。

  2. 接下来,CN 会根据写请求的数据量大小来决定操作的链路。如果数据量没有超过设定的阈值(通常为 10MB),则 CN 节点会将数据发送给 DN 节点,DN 节点会进行写写冲突检测和事务仲裁等操作,确保无误后,将这些数据以日志形式写入 LogService,形成 Logtail。

  3. 更新的 Logtail 将即时推送给订阅了 Logtail 数据的 CN 节点,以便查询。如果数据量超过阈值,则 CN 节点会直接将数据写入对象存储,并将提交 commit 信息发送给 DN,DN 节点会进行写写冲突检测和事务仲裁等操作,在确认无误后,提交事务。

从上图可知,少量数据的 OLTP 类型写入请求会经过 CN 至 DN 再至 LogService 的处理链路,而大数据量的写入请求,如 Load 等,则会主要经过 CN 至 S3,以及少量的 CN 至 DN。

读请求处理

混合负载 HTAP - 图3

如图所示,处理读请求时,CN 节点会首先查看已订阅的 Logtail 数据,如果数据直接命中 Logtail,则说明数据位于最新的一部分写入数据中,可以直接返回。如果没有命中 Logtail,CN 会检查自己及其他可见 CN 的缓存,如果命中缓存,将直接返回结果。如果没有命中缓存,CN 会通过分析执行计划判断是否需要大量读取数据,如果

超过一定的阈值(如 200 个 block size)则由多个 CN 节点并行从对象存储中读取,如果未超过阈值则由单个 CN 节点从对象存储中读取。

如上图所示,无论是 OLTP 还是 OLAP 的读请求,都会经过 CN 至 S3 的处理链路。通过 Proxy 对 CN 节点的隔离,可以进一步实现 CN 的隔离。

应用场景

无论在金融、电信、制造业还是互联网、科技等新兴行业,HTAP 都有广泛的应用场景。

例如,在金融领域,HTAP 数据库可以满足高速交易处理和实时风险管理的需求,支持金融交易的高吞吐量和低延迟要求,同时提供实时数据分析功能,以支持决策制定和风险监控。

在电信行业,HTAP 数据库可用于实时计费和网络优化,能处理大量实时数据,追踪用户通信和网络活动,同时支持实时分析和智能决策,以改善服务质量、网络性能和用户体验。

在物联网领域,HTAP 数据库可用于设备管理和实时监控,能处理大量传感器数据和设备状态信息,并提供实时设备监控和管理功能,这对于物联网系统的实时决策、远程故障诊断和预测维护具有重要意义。

金融实时风控系统

某银行作为一家领先的城市商业银行,其信用卡业务拥有一套实时风控系统,该系统主要负责监控和评估信用卡交易,识别交易风险并及时采取限制措施。

以下表格展示了这套系统的核心业务需求场景以及 MatrixOne 的 HTAP 如何满足这些需求:

核心业务需求业务类型MatrixOne 的 HTAP 能力
实时获取交易数据快速且低延迟的数据写入MatrixOne 能够高效并发地写入海量数据,通过扩展多 CN 节点和对象存储来进一步提升性能。
离线计算大量数据指标,分析用户行为及风险因素复杂的分析查询,需要处理 TB 级别的数据MatrixOne 具备处理海量星型和雪花型数据分析的能力,通过多 CN 节点并行计算可以线性提升分析能力。
实时分析交易数据,计算风险指标典型的 AP 业务,需要在规定时间内计算数据结果MatrixOne 的多 CN 节点并行计算能力能够满足大规模数据报表的计算需求,同时提供快速的数据读取性能。
面对频繁且剧烈的业务波动需要灵活的扩展性架构来应对大的负载波动MatrixOne 的存储和计算分离架构具备强大的扩展性,能在业务波动时快速扩缩容以匹配业务需求。

电信业务管理系统

某企业是一家省级电信运营商,服务用户数量达数千万,主要提供电话通信服务,需要同时支撑海量用户的使用和统计分析。

以下表格展示了这套系统的核心业务场景以及 MatrixOne 的 HTAP 如何满足这些需求:

核心业务场景业务类型MatrixOne 的 HTAP 解决方案
查询用户话费缴存情况并实时停机高并发的短小事务,需要低延迟MatrixOne 具备 OLTP 能力,多 CN 节点分布式架构可以确保在高并发下的稳定性能,同时实现负载均衡。
用户充值后实时更新账户余额高并发的

短小事务,需要低延迟 | MatrixOne 的 TP 能力可以满足高并发且低延迟的 TP 需求,同时分布式多 CN 节点架构提供负载均衡特性。 | | 批量调整用户套餐并在下月生效 | 超大事务,需要高性能 | MatrixOne 可直接写入 S3,避免了 Logservice 在高并发下的争用,从而实现快速批量的数据写入。 | | 对用户数据进行日、周、月、季度和年度统计 | 典型的 AP 业务,需要在规定时间内计算数据结果 | MatrixOne 的多 CN 节点并行计算能力能满足大规模数据报表的计算需求,同时提供快速的数据读取性能。 |

制造生产执行系统

某企业是一家电子产品制造商,拥有数十条各类消费电子产品的生产线。其生产制造执行(MES)系统需要对生产线上的人员、机器、物料和流程进行管理,同时定期分析生产效率和能耗等问题。

以下表格展示了这套系统的核心业务场景以及 MatrixOne 的 HTAP 如何满足这些需求:

核心业务场景业务类型MatrixOne 的 HTAP 解决方案
管理生产、仓储和质量高并发短小事务,需要低延迟MatrixOne 具备 OLTP 能力,分布式多 CN 节点可以确保在高并发下的稳定性能,同时实现负载均衡。
实时采集大量机器生产数据高并发多数据类型的数据写入MatrixOne 能够高效并发地写入海量数据,通过扩展多 CN 节点和对象存储来进一步提升性能。
分析海量历史生产记录的溯源需要对海量离线数据进行多维查询分析MatrixOne 具备处理海量星型和雪花型数据分析的能力,通过多 CN 节点并行计算可以线性提升分析能力。
实时查询生产效率、能耗和设备状态极快的 Ad-hoc 交互式分析MatrixOne 支持各种复杂 SQL 查询,通过多 CN 节点并行计算可以实现实时分析。