深度评测:PolarDB-X 开源分布式数据库的优势与实践
PolarDB分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主研发的高性能云原生分布式数据库产品,其采用 Shared-nothing 与存储计算分离架构,支持水平扩展、分布式事务、混合负载等能力,具备企业级、云原生、高可用、高度兼容 MySQL 系统及生态等特点。
一、产品介绍
PolarDB 作为阿里云的核心数据库产品,以其高性能、高可用性和可扩展性在业界享有盛誉。特别是在Gartner的全球云数据库报告中,PolarDB 连续四年稳居“领导者”象限,充分证明了其在技术实力和市场认可度上的优势。此次评测聚焦于PolarDB的开源版本,特别是PolarDB-X(分布式版)和PolarDB-PG(PostgreSQL兼容版),旨在通过实际部署和使用,评估其易用性、性能及文档质量。
1.1 产品优势
金融级高可靠场景。基于X-Paxos实现的数据三副本强一致,让业务轻松具备跨多可用区的高可用与容灾能力。
海量数据归集场景。PolarDB-X的平滑扩展能力,让客户轻松实现横向和纵向的容量变更且保持访问性能不变。
超高并发访问场景。深度优化的PolarDB-X计算下推能力显著提升在线事务处理性能,令访问尖峰丝般顺滑。
HTAP混合负载场景。无需进行ETL,可对在线数据做实时报表分析。
1.2 架构
PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计,系统由4个核心组件组成。
- 计算节点(CN, Compute Node)
计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。
- 存储节点(DN, Data Node)
存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。
- 元数据服务(GMS, Global Meta Service)
元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。
- 日志节点(CDC, Change Data Capture)
日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。
应用场景,交通物流:每秒万级并发(在线业务超高并发,轻松解决)
如在城市公交场景下,涉及大量的车辆和车型、多样的计费方式,不仅要求数据库系统具有海量存储的能力,还需满足复杂查询计算。基于PolarDB分布式版存储海量数据,通过AnalyticDB进行数据分析,可构建智能化的城市公交系统,满足路线规划、站点查询、公交预报、业务报表结算、公交调度等需求,提升运营效率和服务水平。
二、评测内容
部署和安装开源 PolarDB-X 的指南
本指南介绍如何在 Windows 平台上通过 WSL 环境部署和安装开源 PolarDB-X 数据库。
准备环境
首先,需要在系统中安装 Python3 和 Docker,以便使用 PXD 工具来部署 PolarDB-X 数据库。
下载与安装
为了在 Windows 平台上运行 PolarDB-X,需要通过 WSL(Windows Subsystem for Linux)使用 Ubuntu 发行版。
步骤一:安装 WSL
- 按照 微软官方文档 进行 WSL 的安装。建议使用默认的 Ubuntu 发行版。
步骤二:安装 Docker Desktop
- 根据 Docker 官方文档 的指南安装 Docker Desktop,以确保 Docker 可以在 WSL 环境中运行。
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
步骤三:安装 Python3
如果系统尚未安装 Python3,请使用以下命令进行安装:
sudo apt-get update
sudo apt-get install python3
sudo apt-get install python3-venv
步骤四:安装 pip
确保已安装 pip,这是 Python 的包管理工具:
sudo apt-get install python3-pip
步骤五:安装 MySQL 命令行工具
根据 MySQL 官方文档 的指南安装 MySQL Shell 以便进行数据库操作。
安装 PXD 工具
步骤一:创建虚拟环境
为了避免影响系统的全局环境,建议在虚拟环境中安装 PXD 工具。请使用以下命令创建和激活虚拟环境:
python3 -m venv venv
source venv/bin/activate
步骤二:升级 pip
在安装 PXD 之前,建议先升级 pip 以确保安装过程顺利:
pip install --upgrade pip
步骤三:安装 PXD
通过以下命令安装 PXD 工具:
pip install pxd
如果在国内,可能会遇到从 pypi 下载包速度较慢的问题,可以使用阿里云的镜像源:
pip install -i https://mirrors.aliyun.com/pypi/simple/ pxd
步骤四:验证安装
安装完成后,使用以下命令验证 PXD 是否安装成功:
pxd version
如果执行上述命令时遇到如下错误:
Click discovered that you exported a UTF-8 locale but the locale system could not pick up from it because it does not exist.
请执行以下命令,然后重试:
export LC_ALL=en_US.utf-8
export LANG=en_US.utf-8
至此已经成功在 Windows 平台上通过 WSL 环境部署并安装了 PolarDB-X 数据库。
部署验证:PolarDB-X 部署指南
本部分介绍如何在 PolarDB-X 中部署企业版集群,适用于需要高并发、大规模数据处理和加速分析的企业级场景。
部署 PolarDB-X 企业版集群
PolarDB-X 企业版是一个分布式架构集群,支持大数据量处理和复杂查询。可以通过 pxd tryout
命令快速创建一个最新版本的 PolarDB-X 企业版集群,默认包含一个 GMS、一个 CN、一个 DN 和一个 CDC 节点:
pxd tryout
创建指定版本的实例
如果需要创建指定版本的 PolarDB-X 实例,可以使用以下命令获取各个组件的最新镜像标签(tag):
curl -s "https://polardbx-opensource.oss-cn-hangzhou.aliyuncs.com/scripts/get-version.sh" | sh
示例输出(以 PolarDB-X V2.4.0 版本为例):
CN polardbx/polardbx-sql:v2.4.0_5.4.19
DN polardbx/polardbx-engine:v2.4.0_8.4.19
CDC polardbx/polardbx-cdc:v2.4.0_5.4.19
使用以下命令创建指定版本的实例,同时指定 CN、DN 和 CDC 节点的副本数量和版本:
pxd tryout -cn_replica 1 -cn_version v2.4.0_5.4.19 -dn_replica 1 -dn_version v2.4.0_8.4.19 -cdc_replica 1 -cdc_version v2.4.0_5.4.19
创建三副本集群
tryout
模式默认创建单副本模式的 GMS 和 DN。如果需要创建基于 Paxos 的三副本集群,可以使用以下命令:
pxd tryout -leader_only false
注意:三副本模式要求 pxd 版本 >= 0.3.0
获取连接信息
创建完成后,系统会输出 PolarDB-X 数据库的连接信息。请注意,管理员账号的密码是随机生成的,仅在此时显示,请务必妥善保存。
初步体验 PolarDB-X 的分布式特性
使用 MySQL 客户端连接 PolarDB-X 数据库后,可以执行以下 SQL 命令来体验其分布式特性。更多 SQL 详情请参考 SQL 概述:
-- 检查 GMS 状态
select * from information_schema.schemata;
-- 创建分区表
create database polarx_example partition_mode='partitioning';
use polarx_example;
create table example (
`id` bigint(11) auto_increment NOT NULL,
`name` varchar(255) DEFAULT NULL,
`score` bigint(11) DEFAULT NULL,
primary key (`id`)
) engine=InnoDB default charset=utf8
partition by hash(id)
partitions 8;
insert into example values(null,'lily',375),(null,'lisa',400),(null,'ljh',500);
select * from example;
show topology from example;
-- 检查 CDC 状态
show master status;
show binlog events in 'binlog.000001' from 4;
-- 检查 DN 和 CN 状态
show storage;
show mpp;
以上就是在 PolarDB-X 中部署企业版集群的详细步骤。
执行如下命令,登录PolarDB-X数据库。
mysql -h127.0.0.1 -P8527 -upolardbx_root -p123456
查看 PolarDB-X 集群状态
执行如下命令查看 PolarDB-X 集群状态:
pxd list
卡点与问题
- 在部署过程中,可能会遇到网络下载速度慢、依赖项安装失败、编译错误等问题。
- PXD工具或源码中的某些默认配置可能需要根据实际环境进行调整。
产品改进建议
- 优化官网和帮助文档的清晰度与详细度,特别是针对初学者的指南。
- 提供更多的预编译包和镜像,减少用户编译的复杂性和时间成本。
- 加强错误信息的提示和解决方案的提供,帮助用户快速定位并解决问题。
PolarDB-X 开源评测心得总结
在对 PolarDB-X 开源版本进行评测后,我对其作为阿里云的高性能云原生分布式数据库的实力有了更加深入的了解。PolarDB-X 展现了其在高并发、海量数据处理和高可用性方面的强大优势,同时也在实际部署过程中暴露了一些可改进的地方。
产品优势
高可用性与高可靠性:PolarDB-X 基于 X-Paxos 实现了数据三副本强一致性,这不仅提升了系统的可靠性,也为跨多个可用区的高可用性提供了保障。无论是在金融级高可靠场景还是在海量数据处理场景中,这一特性都显得尤为重要。
优异的扩展能力:其平滑的横向和纵向扩展能力使得系统能够适应不断增长的数据和业务需求,确保了在面对大规模数据和高并发请求时,性能依然稳定。
高效的混合负载处理:PolarDB-X 的 HTAP(Hybrid Transactional/Analytical Processing)特性使其能够同时处理在线事务和实时分析,无需进行 ETL 操作。这对数据分析和实时决策提供了极大的便利。
架构设计
PolarDB-X 的架构设计具有很高的合理性和实用性。计算节点、存储节点、元数据服务和日志节点的分离,使得系统能够在不同层面上进行高效的资源管理和任务处理。计算节点负责 SQL 解析和执行,存储节点确保数据持久化与一致性,元数据服务维护全局信息,日志节点支持增量订阅和复制,这种分布式设计为系统提供了极高的灵活性和可靠性。
部署与使用体验
部署过程:在 Windows 平台上通过 WSL 环境进行 PolarDB-X 的部署和安装,整体过程较为顺利。然而,需要注意环境准备的细节,如 Python3、Docker 和 MySQL Shell 的安装,以及 PXD 工具的正确配置。使用国内镜像源可以有效提高下载速度和安装成功率。
使用体验:通过实际操作和测试,PolarDB-X 的分布式特性表现出色。无论是创建分区表、处理分布式事务,还是查看集群状态,系统的表现都非常稳定。不过,可能会遇到网络问题和性能瓶颈,需要根据实际情况进行调整和优化。
改进建议
文档和帮助支持:目前的文档和帮助文档对于初学者来说可能不够详细和友好。建议进一步优化文档内容,提供更详细的教程和常见问题解答,以帮助用户更快上手和解决问题。
预编译包和镜像:提供更多的预编译包和镜像可以显著减少用户的编译时间和复杂性。这样可以进一步提升用户体验,使得 PolarDB-X 的部署过程更加顺畅。
错误信息和解决方案:加强对错误信息的提示和解决方案的提供,可以帮助用户更快速地定位和解决问题。这不仅能提升用户的操作体验,也能提高系统的整体稳定性。
总结
总的来说,PolarDB-X 作为一个高性能的分布式数据库系统,凭借其强大的功能和灵活的架构,能够满足各种复杂的业务需求。尽管在实际部署和使用过程中存在一些挑战,但其出色的性能和功能优势使得这些挑战在总体上是值得克服的。随着文档支持和工具的进一步优化,PolarDB-X 有望在未来的数据库市场中发挥更大的作用。