PolarDB-X 是由阿里巴巴自主研发的云原生分布式数据库,是一款基于云架构理念,并同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP)的融合型分布式数据库产品,具备金融级数据高可用、分布式水平扩展、混合负载、低成本存储和极致弹性等能力,坚定以兼容MySQL开源生态构建分布式能力。专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈难题,真正历经了各届天猫双11及阿里云各行业客户业务的考验,助力企业加速完成业务数字化转型。
核心特性
高可用
经过阿里多年双11验证的X-DB(X-Paxos共识协议能力),提供数据强一致,保证节点故障切换时 RPO=0。另外支持多样化的部署和容灾能力,比如基于Paxos强同步的同城三机房、三地五中心,另外搭配binlog异步复制的两地三中心、异地灾备、异地多活等。尤其在异地长距离传输上,基于 Batching & Pipelining 进行网络优化来提升性能。
高兼容
PolarDB-X主要兼容MySQL,包括SQL、函数类型等,技术上引入全局时间授时服务,提供全局一致性的分布式事务能力,通过TSO+2PC提供数据库完整的ACID能力,满足分布式下的Read-Commited/Repeatable-Read的隔离级别。同时在分布式事务的基础上,提供全局二级索引能力,通过事务多写保证索引和主表数据强一致的同时,引入基于代价的CBO优化器实现索引选择。除此以外,在元数据和生态对接层面,PolarDB-X基于Online DDL的技术提供了分布式下元数据的一致性。同时硬件层面,兼容主流国产操作系统和芯片认证,比如麒麟、鲲鹏、海光等。
另外在业界主流的分布式数据库里,分布式下的redolog/binlog等数据库变更日志其实一直被厂商所忽视,从关系数据库的发展历史来看,生态和标准对于市场规模化非常重要,PolarDB-X 2.0会支持全局binlog能力,全面兼容和拥抱MySQL数据库生态,用户可以将PolarDB-X当做一个MySQL库,采用标准的binlog dump协议获取binlog日志。
高扩展
PolarDB-X基于Share-Nothing的架构支持水平扩展,同时支持数据库在线扩缩容能力,在OLTP场景下可支持千万级别的并发、以及PB级别的数据存储规模,同样在OLAP场景下,引入MPP并行查询技术,扩展机器后查询能力可线性提升,满足TPC-H等的复杂报表查询诉求。
HTAP
随着移动互联网和Iot设备的普及,数据会产生爆炸式的增长趋势,传统的OLTP和OLAP的解决方案是基于简单的读写分离或者ETL模型,将在线库的数据T+1的方式抽取到数据仓库中进行计算,这种方案存在存储成本高、实时性差、链路和维护成本高。PolarDB-X 2.0设计中支持OLTP和OLAP的混合负载的能力,可以在一个实例里同时运行TPC-C和TPC-H的benchmark测试,保证AP的查询不影响TP流量的稳定性。核心技术层面,我们也有自己的创新性,比如我们会在计算层精确识别出TP和AP的流量,结合多副本的特性和多副本的一致性读能力,智能将TP和AP路由到不同的副本上,同时在AP链路上默认开启MPP并行查询技术,从而在满足隔离性的基础上,线性提升AP的查询能力。在存储层上,我们也在完善计算下推能力,未来也会提供高性能列存引擎,实现行列混合的HTAP能力。
极致弹性
PolarDB-X结合PolarDB云原生的技术,可以基于PolarDB的共享存储+RDMA网络优化能力,提供秒级备份、极速弹性、以及存储按需扩展的能力。基于共享存储的基础上,结合分布式的多点写入能力,可以在不迁移数据的前提下提供秒级弹性的能力,给到用户完全不一样的弹性体验。
开放生态
PolarDB-X全面拥抱和坚定MySQL的开源生态,做到代码完全自主可控的同时满足分布式MySQL的兼容性,架构做到简单开放,只要具备一定MySQL背景的同学即可完成持续运维。除此以外,PolarDB-X和阿里云的数据库生态有完整的闭环对接,支持如DTS/DBS/DMS等,可打通阿里云的整个大生态。
适用场景
按应用类型选择
PolarDB-X产品在高并发、分布式事务、复杂SQL优化、并行计算等方面都有比较好的用户沉淀和技术发展,适用于如下场景:
-
- 对数据一致性及高可靠、系统高可用、可扩展性、容灾要求较高的金融行业属性的场景。
- 对超高并发和大规模数据存储有较高要求的互联网在线事务类业务场景。
- 传统企业级应用因业务发展导致计算量与数据量呈爆发式增长,急需具备更强计算能力的在线事务型数据库场景,比如HTAP混合负载能力等。
按容量选择
在OLTP业务领域,数据库的容量通常关注并发度、数据存储、复杂SQL响应时间这3个维度。若当前数据库中任意一个维度出现瓶颈,或出于对业务不断高速发展提前规划数据库选型的考虑,当下选用PolarDB-X构建分布式数据库,可有效降低后期数据库的扩展及运维压力。
在业务发展初期,选择单机数据库还是分布式数据库,需要考量很多因素。但从数据库自身角度出发,业务使用的SQL语句、数据类型、事务、索引、其他功能均是确定的。对于大部分业务而言,只要SQL语法、数据类型、事务、索引支持较为完整,且具备有效手段可在各种极端场景下进行水平扩展,那么对于高速发展的业务而言,PolarDB-X即是所有分布式数据库中最具生命力及延续性的方案
按成本选择
对于数据库选型的成本考量,主要包括如下2个部分:
-
- 业务开发上手难度过高,往往会导致项目延期,业务效果不尽人意。对于一个新型数据库而言,如何有效兼容现有流行数据库的使用习惯和功能支持的完整度至关重要。PolarDB-X兼容MySQL生态,对于主流的客户端、驱动有着良好的兼容性,SQL语法兼容完善,业务可快速进行对接适配。
- 数据库长期持久的稳定性及优异的性能表现对于业务而言至关重要,因PolarDB-X将数据、负载分担至多个MySQL实例中,所以面对逐步增大的负载压力,PolarDB-X相比大规格单机数据库具备更强的稳定性。性能表现层面,因为天然支持分布式,抵御业务的超高并发是其强项,配合MPP并行计算,PolarDB-X能够覆盖绝大多数在线业务的复杂计算需求。
产品架构
PolarDB-X整个架构核心分为3部分:
-
- CN(全称:Compute Node/计算节点),主要提供分布式SQL引擎,解决分布式事务协调、优化器、执行器等。
- DN(全称:Data Node/存储节点),主要提供数据存储引擎,比如InnoDB和自研存储引擎(X-Engine和神秘列存),解决数据一致性和持久化,并提供计算下推能力满足分布式要求(比如Project/Filter/Join/Agg等下推计算),可支持本地盘和共享存储。
- GMS(全称:Global Meta Service/全局元数据服务),主要提供分布式下元数据和全局授时服务,比如TSO、表的metadata信息等。
除此以外,会有专门的接入点(endpoint)的设计,可以理解为基于负载均衡设备提供的vip/dns。一个数据库实例可以有不同策略的节点点,比如HTAP endpoint,我们会基于全局版本号、智能策略分流OLTP和OLAP到不同副本上,满足混合负载下的强一致、强隔离的诉求。
物理拓扑
PolarDB-X整个组件的物理部署上,可支持公共云、线下专有云的全形态部署能力,交互上提供面向后台的数据库管控和用户控制台,用户也可以基于OpenAPI完成管控集成。
PolarDB-X提供数据库实例化,实例有类似于8c32g/32c128g等更大规格,一个实例在物理上会有4种资源组成:三副本的GMS、一组CN节点(计算节点)、一组DN节点(存储节点)、一组CDC(提供全局binlog),组件之间会进行元数据和RPC请求的交互,不同的实例规格的最大区别在于CN/DN节点数量的不同,实例规格会和CN/DN节点数保持线性一致。
对于外部用户的使用来说,一个PolarDB-X的实例最终会通过接入点(endpoint)的vip/dns来访问,对于用户来说就是一个MySQL实例的体验,可以使用MySQL 命令行、GUI客户端等。
快速体验
-
- 进入阿里云产品页面:https://polardb-x.console.aliyun.com/cn-hangzhou/clustersX
- 切换PolarDB-X 2.0的Tab页之后,进入产品购买页面 (选择节点规格 和 节点数量)
- 获取实例的访问地址,适用MySQL客户端直接登录,就可以尽情的畅玩。