《云原生一站式数据库技术与实践》——一、云原生分布式数据库PolarDB-X技术架构(2) https://developer.aliyun.com/article/1231704?groupCode=aliyundb
对于很多用户而言,如果当前业务规模不大,则可以先选择标准版。业务规模扩大以后,无需任何修改即可平滑迁移至企业版。原先在单机上建的表能够自动变为分布式的表,无论是查询还是事务,使用上均没有任何区别。也可以通过DDL语句指定数据分区的规则,保留了按照业务特性进行数据分布的需求。
集中分布式一体化有两层含义:
• 其一,既能满足集中式的需求,也能满足分布式需求。
• 其二,集中式到分布式可实现完全透明转化。
切换到分布式形态时,如何保证集中式的体验?
PolarDB-X 提供了库级AUTO 模式,数据分布对用户完全透明,无需指定分区键,在集中数据库里建一张分布式表,数据库会自动为其做分区。同样,也可以建全局二级索引加速查询。
但这必然存在代价,比如默认按主键做分区,分区不一定符合需求。其次,全局索引开销较大,导致写入开销较大,可能无法满足对业务性能的要求。
另外,PolarDB-X 提供了手动分区的模式,可以手动指定分区算法,采用了完全兼容MySQL 的partition 分区表语法,分区的算法可以兼容Oracle 的所有的分区的算法。同时,也可以指定分区在不同条件下存放的位置,真正完全契合业务的访问模式。
分布式数据库的显著优点在于能够无限扩展,然而,扩展并不是没有代价的。一旦数据进行扩展以后,集中式数据数库上的事务操作可能会变为跨分区的分布式事务操作,会导致性能急剧损失。如上图所示,即便只有2 个NUMA 节点,跨NUMANode 访问的性能也将至少下降1 倍。
而同样的事情发生在分布式架构上,性能损失会更明显。NUMA Node 之间有总线连接,而分布式架构下只有网络连接,即便是高性能网络也会产生巨大的网络延时,导致性能急剧下降。
我们曾经做过实验,加一个全局二级索引,写入性能下降30%;而加8 个全局二级索引,写入性能将会下降一个数量级。
《云原生一站式数据库技术与实践》——一、云原生分布式数据库PolarDB-X技术架构(4) https://developer.aliyun.com/article/1231701?groupCode=aliyundb