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协议的主从复制能力。
1、分布式事务
2PC即两阶段提交、是一种分布式是事务的处理协议、将事物的处理分为Prepare和Commit两阶段,XA事务是2PC一种具体实现范围,Polardb-X基于XA实现分布式事务的处理,CN为TM。DN为RM
分布式事务:https://help.aliyun.com/zh/polardb/polardb-for-xscale/distributed-transactions?spm=a2c4g.11186623.0.0.11c2b85c7FYxAl
2、分库分表策略选择
水平拆分:将数据按照拆分规则分拆到多个库表中,实现数据库的横向扩展,
如何选择分片数
参考:https://help.aliyun.com/zh/polardb/polardb-for-xscale/select-the-number-of-shards?spm=a2c6h.12873639.article-detail.8.2f734453ttx3CE#concept-1825056
垂直拆分:
3、分区健选择
PolarDB-X 的分区表全面兼容并扩展MySQL分区表的语法,将MySQL的多个分区扩展到了分布式节点中,基于分布式的多节点进一步提高了并发能力。 PolarDB-X 分区表支持常见的分区方式:
范围分区(Range、Range Columns):根据列的范围将表的数据进行分区。可以根据某个列的数值范围(如日期、价格等)将数据分布到不同的分区中。
列表分区(List、List Columns):根据列的值列表将表的数据进行分区。可以将特定列的值匹配到预定义的分区列表中,每个分区可以包含多个值。
哈希分区(Hash、Key):根据列值的哈希结果将表的数据进行分区。哈希分区将表的数据按照哈希算法将数据均匀地分布到不同的分区中。
PolarDB-X 除了可以对表进行一级分区外,还可以对分区进行二级分区。二级分区是在一级分区的基础上再次将数据进行细分,一级分区与二级分区是完全正交的关系,支持使用任意两种分区策略进行组合,组合分区的数目支持达 36 种。 同时在PolarDB-X中,二级分区可以分为模板化分区和非模板化分区两种方式。
Polardb-X 1.0使用
1、完成polardb-x 1.0的创建
2、购买私有RDS
3、创建数据库
水平拆分
单个RDS实例的默认分库数目是8个,不可更改。每个分库里的分表数目理论上是没有限制的,受限于PolarDB-X服务器本身的硬件资源。分表数目的选择需要依据对业务数据量的评估
垂直拆分
Polardb-X 2.0 使用
参考:https://help.aliyun.com/zh/polardb/polardb-for-xscale/databases-in-auto-mode-and-drds-mode?spm=5176.25930904.help.dexternal.1a0e2b69CJKVzd
4、创建表