PolarDB-X 1.0-技术白皮书-技术原理

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 扩展性原理扩展性本质在于分而治之,PolarDB-X计算资源通过水平拆分(分库分表)和垂直拆分,将数据分散到多个存储资源MySQL以实现获取数据读写并发和存储容量分散的效果。水平拆分(分库分表)PolarDB-X具备数据水平拆分的能力,将数据库数据按某种规则分散存储到多个稳定的MySQL数据库上。这些MySQL数据库可分布于多台机器乃至跨机房,对外服务(增删改查)尽可能保证如同单MySQL数据库体验。拆分后,在MySQL上物理存在的数据库称为分库,物理的表称为分表(每个分表数据是完整数据的一部分)。PolarDB-X通过在不同MySQL实例上挪动分库,实现数据库扩容,提升PolarDB

数据拆分原理如下图所示:p282502.png计算扩展性

无论是水平拆分还是垂直拆分,PolarDB-X常常碰到需要对远超单机容量数据进行复杂计算的需求,例如需要执行多表JOIN、多层嵌套子查询、Grouping、Sorting、Aggregation等组合的SQL操作语句。

针对这类在线数据库上复杂SQL的处理, PolarDB-X额外扩展了单机并行处理器(Symmetric Multi-Processingy,简称SMP)和多机并行处理器(DAG)。前者完全集成在PolarDB-X内核中;而对于后者,PolarDB-X构建了一个计算集群,能够在运行时动态获取执行计划并进行分布式计算,通过增加节点提升计算能力。

平滑扩容

PolarDB-X扩容通过增加RDS/MySQL实例数,将原有的分库迁移到新的RDS/MySQL实例上,达到扩容的目标。PolarDB-X采用基于存储计算分离的Shared-Nothing架构,最大限度地发挥了云数据库的弹性扩展能力。

PolarDB-X的架构图如下:p282502.png如上图所示,PolarDB-X整个架构核心可分为3个部分: GMS(Global Meta Service):负责管理分布式下库、表、列、分区等的元数据,以及提供TSO服务; CN(Compute Node):负责提供分布式的SQL引擎与强一致事务引擎; DN(Data Node):提供数据存储服务,负责存储数据与副本数据的强一致复制。

PolarDB-X存储层使用的是X-DB。因此,每一个DN节点就是一个X-DB实例(X-DB的介绍请看这里)。X-DB是在MySQL的基础之上基于X-Paxos打造的具备跨可用区跨地域容灾的高可用数据库,使用InnoDB存储引擎并完全兼容MySQL语法,它能提供Schema级别的多点写与Paxos Group的Leader调度的能力。PolarDB-X的分区副本的高可用与故障容灾就是建立在X-DB基础上的。

PolarDB-X扩容原理步骤如下:

  1. 创建扩容计划选择新增加RDS/MySQL,并选定需要迁移到新RDS/MySQL实例上的分库,提交任务后系统自动在目标RDS/MySQL上创建数据库和账号,并提交任务进行数据迁移同步。
  2. 全量迁移系统选择当前时间之前的一个时间点,将这个时间点之前的数据进行全量的数据复制迁移。
  3. 增量数据同步完成全量迁移后,基于全量迁移开始之前时间点的增量变更日志进行增量同步,最终原分库和目标分库数据实时同步。
  4. 数据校验增量达到准实时同步后,系统自动做全数据校验,并且订正因为同步延迟造成的不一致数据。
  5. 应用停写和路由切换校验完成后,并且增量依然维持准实时同步,业务选定时间进行切换,为确保数据严格一致,建议应用停服(也可以不停,但可能面临同一条数据高并发写入覆盖问题),引擎层进行分库规则的路由切换,将后续流量转向新库,切换过程秒级完成。

扩容示意图下:p282502.png为了保证数据本身的安全,便于扩容回滚,在路由规则切换完成后,数据同步依然会运行,直到数据运维人员确认服务正常后在控制台主动发起旧分库数据的清理。

整个扩容过程对上层的业务正常服务几乎没有影响(如果RDS/MySQL实例规格过小或者压力过大则可能造成部分影响),切换时如果应用不停服,建议操作选择在数据库访问低谷期进行,降低同一条数据并发更新覆盖的概率。

读写分离

PolarDB-X的读写分离功能是基于RDS/MySQL只读实例所做的一种相对透明读流量切换策略。当PolarDB-X存储资源MySQL主实例的读请求较多、读压力比较大时,您可以通过读写分离功能对读流量进行分流,减轻存储层的读压力。

业务应用在能够忍受只读实例相对于主实例数据同步延迟的前提下,不需要修改代码,即可在PolarDB-X控制台中增加RDS/MySQL只读实例和调整读权重,将读流量按照需要的比例在RDS/MySQL主实例与多个RDS/MySQL只读实例之间调整,写操作和事务操作则统一走RDS/MySQL主实例。需要注意的是,主RDS/MySQL实例和只读RDS/MySQL存在数据同步延迟,并且在发生大的DDL或者数据订正时,有可能导致分钟级别以上的延迟,所以需要业务忍受该情况所带来的影响。添加只读实例可以使读性能线性提升。例如在初始有一个只读实例的情况下,挂载一个只读实例,读性能提升至原来两倍,挂载2个只读实例,则读性能为单个主库读性能的三倍。

读写分离流量分配与扩展

PolarDB-X读写分离功能采用了对应用透明的设计。在不修改应用程序任何代码的情况下,只需在控制台中调整读权重,即可实现将读流量按自定义的权重比例在存储资源MySQL/RDS主实例与多个存储资源只读实例之间进行分流,而写流量则不做分流全部到指向主实例。

添加只读实例可以使读性能线性提升。例如在初始有一个只读实例的情况下,挂载一个只读实例,读性能提升至原来2倍,挂载2个只读实例为单个主库的3倍。设置读写分离后,从存储资源MySQL主实例读取属于强读(即实时强一致读);而只读实例上的数据是从主实例上异步复制而来存在毫秒级的延迟,因此从只读实例读取属于弱读(即非强一致性读)。您可以通过Hint指定那些需要保证实时性和强一致性的读SQL到主实例上执行。示意图如下:p282502.png

读写分离对事务的支持

读写分离仅对显式事务(即需要显式提交或回滚的事务)以外的读请求(即查询请求)有效,写请求和显式事务中的读请求(包括只读事务)均在主实例中执行,不会被分流到只读实例。

常见的读、写请求SQL语句包括:

  • 读请求:SELECT、SHOW、EXPLAIN、DESCRIBE。
  • 写请求:INSERT、REPLACE、UPDATE、DELETE、CALL。

非拆分模式的读写分离

PolarDB-X的读写分离可以在非拆分模式下独立使用。

PolarDB-X控制台上创建PolarDB-X数据库时,在选定一个数据库实例的情况下,可以选择将底层数据库实例下的一个逻辑数据库直接引入PolarDB-X做读写分离,不需要做数据迁移。

分布式事务

分布式事务通常使用二阶段提交来保证事务的原子性(Atomicity)和一致性(Consistency)。

二阶段事务会将事务分为以下两个阶段:

  • 准备(PREPARE)阶段:在PREPARE阶段,数据节点会准备好所有事务提交所需的资源(例如加锁、写日志等)。
  • 提交(COMMIT)阶段:在COMMIT阶段,各个数据节点才会真正提交事务。

当提交一个分布式事务时,PolarDB-X服务器会作为事务管理器的角色,等待所有数据节点(MySQL服务器)PREPARE成功,之后再向各个数据节点发送COMMIT请求。

p282502.png

全局二级索引

全局二级索引(Global Secondary Index,GSI)支持按需增加拆分维度,提供全局唯一约束。每个GSI对应一张索引表,使用XA多写保证主表和索引表之间数据强一致。

p282502.png

全局二级索引支持如下功能:

  • 增加拆分维度。
  • 支持全局唯一索引。
  • XA多写,保证主表与索引表数据强一致。
  • 支持覆盖列,减少回表操作,避免额外开销。
  • Online Schema Change,添加GSI不锁主表。
  • 支持通过HINT指定索引,自动判断是否需要回表。
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
SQL 存储 Cloud Native
PolarDB-X 2.0 核心技术能力解读
希望通过本系列课程,让大家更深入了解PolarDB-X 2.0 核心技术能力,加深对PolarDB-X的理解与认识,最终可以实践到大家的工作当中。
772 0
PolarDB-X 2.0 核心技术能力解读
|
6月前
|
存储 关系型数据库 MySQL
PolarDB-X 存储引擎核心技术 | 索引回表优化
数据库系统为了高效地存储、检索和维护数据,采用了多种不同的数据组织结构。不同的组织结构有其特定的用途和优化点,比如提高查询速度、优化写入性能、减少存储空间等,目前 PolarDB-X 采用了 B-Tree 的索引组织结构。
|
3月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
89 5
|
3月前
|
存储 Oracle 关系型数据库
PolarDB-X 存储引擎核心技术 | Lizard B+tree 优化
PolarDB-X 分布式数据库,采用集中式和分布式一体化的架构,为了能够灵活应对混合负载业务,作为数据存储的 Data Node 节点采用了多种数据结构,其中使用行存的结构来提供在线事务处理能力,作为 100% 兼容 MySQL 生态的数据库,DN 在 InnoDB 的存储结构基础上,进行了深度优化,大幅提高了数据访问的效率。
7436 13
|
3月前
|
存储 SQL Cloud Native
揭秘!PolarDB-X存储引擎如何玩转“时间魔术”?Lizard多级闪回技术让你秒回数据“黄金时代”!
【8月更文挑战第25天】PolarDB-X是一款由阿里巴巴自主研发的云原生分布式数据库,以其高性能、高可用性和出色的可扩展性著称。其核心竞争力之一是Lizard存储引擎的多级闪回技术,能够提供高效的数据恢复与问题诊断能力。本文通过一个电商公司的案例展示了一级与二级闪回技术如何帮助快速恢复误删的大量订单数据,确保业务连续性不受影响。一级闪回通过维护最近时间段内历史数据版本链,支持任意时间点查询;而二级闪回则通过扩展数据保留时间并采用成本更低的存储方式,进一步增强了数据保护能力。多级闪回技术的应用显著提高了数据库的可靠性和灵活性,为企业数据安全保驾护航。
43 1
|
4月前
|
存储 SQL 关系型数据库
PolarDB-X 存储引擎核心技术 | Lizard 无锁备份
本文重点要介绍全量备份的设计,作为承担在线数据存储的 DN 节点,按照数据保护和容灾的需求,DN 需要支持灵活定制周期策略的备份策略。同时,PolarDB-X 能够处理和存储庞大的数据规模,备份这些数据量(例如高达 20TB 大小的数据集),如果想在更短的时间内完成备份(比如 3~4 小时),这样的备份 SLA 需要在在线业务影响、并行策略上有更多的优化。
PolarDB-X 存储引擎核心技术 | Lizard 无锁备份
|
3月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
62 0
|
3月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
231 0
|
3月前
|
存储 SQL 关系型数据库
PolarDB-X 存储引擎核心技术 | Lizard 多级闪回
本文介绍了数据库闪回技术,这是一种允许用户恢复到过去某个时间点状态的功能,无需依赖传统备份。闪回技术在误操作修复、数据恢复演练、问题诊断及合规审计等场景下尤为重要。
|
5月前
|
存储 算法 数据处理
惊人!PolarDB-X 存储引擎核心技术的索引回表优化如此神奇!
【6月更文挑战第11天】PolarDB-X存储引擎以其索引回表优化技术引领数据库发展,提升数据检索速度,优化磁盘I/O,确保系统在高并发场景下的稳定与快速响应。通过示例代码展示了在查询操作中如何利用该技术高效获取结果。索引回表优化具备出色性能、高度可扩展性和适应性,为应对大数据量和复杂业务提供保障,助力企业与开发者实现更高效的数据处理。
69 3

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 下一篇
    无影云桌面