分布式数据库Polardb-X架构及特点

Polardb-x发展历史
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

一、PolarDB-X架构
在这里插入图片描述
在这里插入图片描述
计算节点(Compute Node,CN)是系统的入口,采用无状态设计的sql引擎提供分布式路由和计算,包括SQL解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务2PC协调、全局二级索引维护等,同时提供SQL限流、三权分立等企业级特性。扮演协调者的角色

存储节点 (Data Node,DN)基于多数派Paxos协议提供数据高可靠、强一致保障,每一个DN至少有3个副本,一个leader,2个flower,同时通过MVCC维护分布式事务的可见性判断,扮演参与着的角色

元数据服务(Global Meta Service,GMS)负责维护全局强一致的Table/Schema、Statistics等系统Meta信息,维护账号、权限等安全信息,同时提供全局授时服务(TSO)。

日志节点(Change Data Capture,CDC)从DN上拉取物理的binlog,解析生成出完全兼容MySQL Binlog格式和协议的增量订阅能力,提供兼容MySQL Replication协议的主从复制能力。
在这里插入图片描述

polardb-X解决了业务数据及访问压力分摊到多个计算节点、存储节点上,平稳解决在线业务超高并发难题、通过水平拆分polardb-x可线性扩展数据存储空间,提供百PB级存储能力,高效解决单机数据库存储瓶颈,Polardb-x提供Parallel以及MPP并行加速的能力,可大幅提升海量数据下在线业务的复杂分析查询效率,数据库单表数据量过大后,将导致 数据库吞吐能力下降,整体性能下降,polardb-x将单表数据水平拆分至多个存储节点上,有效解决单表数据量膨胀的问题

二、Polardb-X核心技术特点:

水平扩展
支持cn及节点水平横向或纵向扩容

高可用高可靠
在这里插入图片描述
在这里插入图片描述

分布式事务:Polardb-X是通过2PC+MVCC+TSO实现的
在这里插入图片描述

在这里插入图片描述

2PC即两阶段提交:是一种分布式是事务的处理协议、将事物的处理分为Prepare和Commit两阶段,XA事务是2PC一种具体实现范围,Polardb-X基于XA实现分布式事务的处理,CN为TM。DN为RM
1阶段开始会在每一个分片节点写入事务日志

分布式事务:https://help.aliyun.com/zh/polardb/polardb-for-xscale/distributed-transactions?spm=a2c4g.11186623.0.0.11c2b85c7FYxAl

参考Polardb-x训练营:https://www.bilibili.com/video/BV1oP411V7aJ/?spm_id_from=333.788&vd_source=ec210f6f23118062883dd470cbd33fc1

HTAP
随着移动互联网和Iot设备的普及,数据会产生爆炸式的增长趋势,传统的OLTP和OLAP的解决方案是基于简单的读写分离或者ETL模型,将在线库的数据T+1的方式抽取到数据仓库中进行计算,这种方案存在存储成本高、实时性差、链路和维护成本高等缺陷。PolarDB-X设计中支持OLTP和OLAP的混合负载的能力,可以在一个实例里同时运行TPC-C和TPC-H的benchmark测试,保证AP的查询不影响TP流量的稳定性。核心技术层面,也有所创新,比如我们会在计算层精确识别出TP和AP的流量,结合多副本的特性和多副本的一致性读能力,智能将TP和AP路由到不同的副本上,同时在AP链路上默认开启MPP并行查询技术,从而在满足隔离性的基础上,线性提升AP的查询能力。在存储层上,我们也在完善计算下推能力,未来也会提供高性能列存引擎,实现行列混合的HTAP能力。
参考:https://help.aliyun.com/zh/polardb/polardb-for-xscale/htap?spm=a2c4g.11186623.0.i13

生态兼容性:兼容mysql协议

三、分库分表策略选择
水平拆分:将数据按照拆分规则分拆到多个库表中,实现数据库的横向扩展,
在这里插入图片描述
水平拆分有分库分表,Polardb-X 1.0每个RDS实例默认会创建8个物理分库,每个物理分库上可以创建一个或多个物理分表,分表通常也被称为分片数,一般情况下建议物理分表数据量不超过500万行数据,通常可以预估1到2年的数据增长量,用预估出的总数据量除以总的物理分片数,再除以建议的最大数据量500万,即可得出物理分库上需要创建的物理分表数

物理分库上的物理分表数=预估的总数据量/(RDS实例数*8)/500万)

因此,当计算出的物理分表数等于1,分库即可,无需再进一步分表,即每个物理分库上一个物理分表,若计算结果大于1,则建议即分库又分表,即每个物理分库上多个物理分表】

例如,某用户预估一张表2年后总数据量大概是1亿行,购买4个RDS,按照公式计算
物理分库上的物理分表数=celling(100000000/(4*8)/500W)=celling(0.625)=1
等于1,只分库即可,即每个物理分库上1个物理分表

若购买1个RDS
物理分库上的物理分表数=celling(100000000/(1*8)/500W)=celling(0.625)=3
等于3,那么建议即分库又分表,即每个物理分库上3个物理分表

如何选择分片数
参考:https://help.aliyun.com/zh/polardb/polardb-for-xscale/select-the-number-of-shards?spm=a2c6h.12873639.article-detail.8.2f734453ttx3CE#concept-1825056

四、拆分健选择
拆分健即分库/分表字段,是在水平拆分过程中用于生成拆分规则的数据表字段,Polardb-x根据拆分健的值将数据表水平拆分到每个RDS实例上的物理分库中

数据表拆分的首要原则,就是要尽可能找到数据表中的数据在业务逻辑上的主体,并确定大部分数据操作围绕这个主体的数据进行,然后可使用该主体对应的字段作为拆分健

分库分表子句和参数
DBPARTITION BY hash(partition_key):指定分库键和分库算法;
TBPARTITION BY { HASH(column) | {MM|DD|WEEK|MMDD|YYYYMM|YYYYWEEK|YYYYDD|YYYYMM_OPT|YYYYWEEK_OPT|YYYYDD_OPT}(column)(可选):默认与DBPARTITION BY相同,指定物理表使用什么方式映射数据;
TBPARTITIONS num(可选):每个库上的物理表数目(默认为1),如不分表,就不需要指定该字段。

创建表参考:https://help.aliyun.com/zh/polardb/polardb-for-xscale/create-table-1?spm=a2c4g.11186623.0.0.53c1c9e8HY5cp0

五、Polardb-X 1.0使用
1、完成polardb-x 1.0的创建
2、购买私有RDS
在这里插入图片描述
3、创建数据库
水平拆分
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
单个RDS实例的默认分库数目是8个,不可更改。每个分库里的分表数目理论上是没有限制的,受限于PolarDB-X服务器本身的硬件资源。分表数目的选择需要依据对业务数据量的评估
在这里插入图片描述
在这里插入图片描述
垂直拆分
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Polardb-X 2.0 使用
在这里插入图片描述
AUTO和DRDS模式数据库区别

参考:https://help.aliyun.com/zh/polardb/polardb-for-xscale/databases-in-auto-mode-and-drds-mode?spm=5176.25930904.help.dexternal.1a0e2b69CJKVzd

六、创建分库分表即查看分库分表结果
https://help.aliyun.com/zh/polardb/polardb-for-xscale/create-table-1?spm=a2c4g.11186623.0.0.53c1c9e8HY5cp0

七、SQL优化
Polardb-X sql运行原理
PolarDB-X是一款计算存储分离的分布式数据库产品。当一条查询SQL发往PolarDB-X计算节点(CN)时(此SQL又称为逻辑SQL),PolarDB-X会将其分成可下推和不可下推的两部分,可下推的部分也被称为物理SQL。不可下推的SQL在CN上执行,可下推的SQL在DN上执行。
在这里插入图片描述

PolarDB-X按照以下原则进行SQL优化:
尽可能将逻辑SQL下推到DN上执行,除了可以避免CN和DN间数据网络交互以外,还可以充分利用多分片并发执行的能力,利用各个DN资源加速查询。

对于无法下推的部分包含的物理算子,查询优化器会选择最优的方式来执行,例如选择合适的物理算子,选择合适的并行度策略以及使用MPP执行。

PolarDB-X的索引一般分为局部索引和全局索引,局部索引是指单个DN节点的索引(MySQL索引),全局索引是指构建在多个DN上的分布式索引。选择合适的索引,可以极大提高PolarDB-X的检索速度。

参考:https://help.aliyun.com/zh/polardb/polardb-for-xscale/sql-query-optimization-rules-and-sql-execution-plans?spm=a2c4g.11186623.0.0.4117177bPEFig3

八、扩缩容
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值