PolarDB-X 是由阿里巴巴自主研发的云原生分布式数据库,是一款基于云架构理念,并同时支持在线事务处理与在线分析处理的融合型分布式数据库产品,具备金融级数据高可用、分布式水平扩展、混合负载、低成本存储和极致弹性等能力。
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 客户端等。