华为云TaurusDB存算分离架构深度解析:从三层架构到日志即数据的工程实现

举报
Snowplow5180 发表于 2026/09/15 00:06:13 2026/09/15
【摘要】 传统MySQL数据库在企业级应用中面临一个结构性困境:计算与存储紧密耦合,资源分配固定且难以调整。企业需要根据业务峰值预留足够资源,导致日常资源闲置浪费;而当业务突发增长超出预期时,又面临资源瓶颈,系统性能急剧下降。在电商大促、节日营销等流量激增场景下,这种矛盾尤为突出。华为云TaurusDB作为新一代云原生数据库,通过存算分离架构从根本上解决了这一问题。它将数据存储与计算能力解耦,使计算层...

传统MySQL数据库在企业级应用中面临一个结构性困境:计算与存储紧密耦合,资源分配固定且难以调整。企业需要根据业务峰值预留足够资源,导致日常资源闲置浪费;而当业务突发增长超出预期时,又面临资源瓶颈,系统性能急剧下降。在电商大促、节日营销等流量激增场景下,这种矛盾尤为突出。

华为云TaurusDB作为新一代云原生数据库,通过存算分离架构从根本上解决了这一问题。它将数据存储与计算能力解耦,使计算层和存储层可以独立扩展和管理——计算资源可根据业务需求灵活调整,存储资源可独立扩展,无需考虑计算节点的影响。本文将从三层架构设计、SAL存储抽象层核心机制、NDP近数据处理和Agent-Native演进四个维度,深入解析TaurusDB的技术原理。

一、三层架构:从计算到存储的完整解耦

TaurusDB的整体架构自上而下分为三层:计算层、存储抽象层(Storage Abstraction Layer,简称SAL)和存储层。

计算层由主节点和多个只读节点组成。主节点负责业务的读写操作,只读节点用于分担读取负载。与开源MySQL最大的区别在于,TaurusDB的所有计算节点共享同一份存储数据——添加只读节点时无需复制全量数据,添加节点的时间与数据量大小无关,可实现分钟级添加只读节点,最多支持1主15只读节点。这在传统MySQL中几乎不可能——数据量达到TB级别时,添加一个只读节点可能需要数小时甚至数天。

存储层基于华为DFV存储构建,提供分布式、强一致和高性能的存储能力。DFV存储采用池化部署,数据可靠性不低于99.999999999%。存储集群的池化设计将分散的存储资源整合为统一资源池,计算节点可以像访问本地存储一样访问远端存储资源。

存储抽象层是连接计算层与存储层的中间桥梁,也是TaurusDB高性能的核心所在。SAL层位于InnoDB引擎和存储节点之间,向InnoDB层提供日志和数据的存储服务,主要功能包括日志服务、页面数据管理、数据写入、页面读取和后台任务。

二、日志即数据:Log is Data的工程实现

TaurusDB在存储层采用了一个核心设计理念——Log is Data。传统数据库的持久化流程中,日志(WAL)和数据页面是分离的:日志先写入本地磁盘,然后异步刷写数据页面到持久化存储。而在TaurusDB的存算分离架构中,日志本身成为持久化的核心载体。SAL层将数据库存储引擎的持久化卸载到Page Store执行——先持久化日志,再通过日志回放修改页面并创建检查点。

这一设计的关键支撑是PLog与CULog。

PLog(Persistent Log)是SAL层日志服务的基础存储对象。每个PLog的大小固定为256MB,采用3副本强一致策略——写入请求需要在3个副本上都完成才视为成功。如果某个副本所在服务器出现异常,写入请求会立刻选择新的服务器并在该服务器上创建新的PLog,然后再次执行请求直至成功。

基于基础的PLog,SAL层实现了CULog(Continuous Unlimited Log) ,提供了一个具有无限空间的日志组件。TaurusDB配置了8个日志CULog,每次日志写入时采用轮询方式并发写入以提高性能。数据库日志系统使用多个CULog进一步封装实现了PWAL(Persistent Write Ahead Log),每条日志对应一个递增的日志序列号(LSN),SAL维护多种LSN来确保日志的一致性和可恢复性。

这种“先持久化日志、后回放页面”的机制带来的核心收益是:主节点不需要在每次事务提交时同步刷写数据页面,只需保证日志在3副本上持久化即可返回。数据页面的刷写由后台异步完成,大幅降低了事务提交的延迟。

三、页面管理与数据分片

在数据页面的持久化管理上,TaurusDB将多个Page数据进行分片,每个分片(Slice)固定大小为10GB。分片机制使得存储管理更加精细——当一个分片写满后,系统自动分配新的分片,避免了单一大文件的管理开销。

在计算节点侧,分布式缓冲池位于数据访问层和分布式存储层的中间,所有数据访问都要经过缓冲池。分布式缓冲池需要保证页面数据的一致性和页面查找访问的高效性,是云原生数据库实现透明多写和内存资源弹性的关键模块。

TaurusDB将页面按访问特征分为三类进行差异化缓存策略设计:

跨节点共享页面(如Heap页面、FSM页面)适合存放在远程内存中,页面地址共享,避免页面在多个计算节点之间频繁传递。

高频只读页面(如索引非叶子页面、系统表页面)适合存放在本地内存,利用本地访问的低延迟优势。

单节点读写页面(如智能路由优化后的索引叶子节点页面)适合存放在本地内存,通过SQL优化器的Range路由实现亲和性访问——索引叶子节点按索引键大小顺序存放,SQL优化器按Range路由即可让相关索引页面汇聚到对应计算节点的本地缓存中。

页面查找通过Page Directory(PD) 机制实现。每个页面缓存对应一个元信息,记录页面的最新版本位于哪个节点(Page Owner Node)、页面是否为共享远程页面以及远程页面地址。PD分布在各个计算节点上,采用一致性Hash方法管理,使每个节点都能快速定位页面的属主,无需广播查询。

四、NDP近数据处理与并行查询

存算分离架构的一个天然挑战是网络IO——数据存储在远端,计算节点访问远端数据必然带来网络开销。TaurusDB通过NDP(Near Data Processing,近数据处理)技术来解决这一问题。

计算下推是NDP的核心思路:针对数据密集型查询,TaurusDB将提取列、聚合运算、条件过滤等操作从计算节点向下推送给分布式存储层的多个节点并行执行。数据在存储层就完成了初步的过滤和聚合,只有处理后的结果集才通过网络传输到计算节点,大幅减少了网络IO和计算节点的负载。

并行查询则从另一个维度提升效率。对于复杂的分析查询,TaurusDB可以将查询任务拆分为多个子任务,在多个计算节点上并行执行,显著降低分析型查询场景的处理时间。

LIMIT OFFSET下推是另一个容易被忽视但效果显著的优化。在传统MySQL中,LIMIT OFFSET需要先将所有数据扫描到内存再截取,在大数据量场景下性能极差。TaurusDB将这个操作下推到存储层,直接在存储层完成截取,大幅减少了数据传输量。

五、透明多写:所有节点对等读写

TaurusDB的存算分离架构进一步演进为透明多写能力。所有计算节点对等,每个节点都可以读写全部的数据页面,事务在本节点执行,没有分布式事务的开销。

这与传统分布式数据库的静态分区架构有本质区别。静态分区架构中,数据被打散到各个节点,每个节点只处理自己负责的数据分片,业务设计必须考虑分片键的选择和查询路由。而透明多写架构中,每个计算节点都可以访问全量数据,应用无需关心数据分片在哪里。

透明多写的关键支撑是每个计算节点本地的Buffer Pool加上Remote Memory Pool的扩展。多个计算节点之间共享Buffer地址,避免了页面在节点之间传来传去。对于频繁在多个节点被读写的页面,采用共享页面地址的方式——SQL节点在本地Buffer Pool中缓存远程页面地址,通过全RDMA/UB单边读写远程页面,避免了跨节点数据传输的开销。

事务ID由本节点分配保证唯一性,事务提交时间戳统一分配,合并了原来的CLOG和CSN LOG统一记录。存储引擎采用In-place update引擎,底层存储接口统一采用段页式存储方式。

六、Agent-Native演进与性能数据

2026年6月,华为云在INSPIRE创想者大会上发布了TaurusDB for PostgreSQL存算分离版本,支持Agent高频访问、分支管理、语义访问,具备256TB大容量,性能领先30%,语义混合查询性价比可提升50%。

面向MySQL生态的智能化转型方面,TaurusDB的存储、计算、智能实现了三位一体化升级,支持冷热数据双向流通,数据流转加速且成本降低90%;针对AI类应用负载不可预测性,实现数据库实例秒级创建,无负载状态下资源弹性到0;推出自研向量引擎,向标混合检索性能相比开源提升2倍。

在性能指标方面,TaurusDB完全兼容MySQL,性能最高可达开源版本的7倍,存储容量最大128TB,数据可靠性不低于99.999999999%,故障秒级切换,计算资源可在6秒内完成自动规格扩缩容。

七、Serverless弹性:从固定规格到按需计费

TaurusDB的存算分离架构为Serverless能力提供了天然的基础。Serverless实例能够根据业务负载自动扩展计算和存储能力,用户只需为实际使用的资源付费。存储空间最大可高达128TB,根据实例数据量自动扩容,有效避免存储资源不足对业务造成影响。

Serverless的弹性能力依赖于计算层的无状态化——由于所有计算节点共享存储层数据,新增计算节点无需数据迁移,可以在秒级完成拉起。业务高峰时自动增加计算资源,业务低谷时自动回收,实现了资源与业务负载的动态匹配。

总结

华为云TaurusDB通过存算分离的三层架构,将传统数据库从“计算与存储紧耦合”的单体模式转变为“计算弹性、存储池化、日志即数据”的云原生架构。SAL层的PLog/CULog日志服务保障了分布式环境下的事务一致性,分布式缓冲池的页面分类缓存策略优化了跨节点数据访问效率,NDP近数据处理减少了网络IO开销,透明多写让应用免于分片改造。这些技术共同构成了一个从数据写入、日志持久化到页面读取、查询下推的完整数据通路,为高并发业务场景提供了一个兼顾弹性和性能的数据库底座。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。