深度评测:PolarDB-X 开源分布式数据库的优势与实践

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建

深度评测: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个核心组件组成。

image.png

  • 计算节点(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进行数据分析,可构建智能化的城市公交系统,满足路线规划、站点查询、公交预报、业务报表结算、公交调度等需求,提升运营效率和服务水平。

image.png

二、评测内容

部署和安装开源 PolarDB-X 的指南

本指南介绍如何在 Windows 平台上通过 WSL 环境部署和安装开源 PolarDB-X 数据库。

准备环境

首先,需要在系统中安装 Python3 和 Docker,以便使用 PXD 工具来部署 PolarDB-X 数据库。

下载与安装

为了在 Windows 平台上运行 PolarDB-X,需要通过 WSL(Windows Subsystem for Linux)使用 Ubuntu 发行版。

步骤一:安装 WSL

  1. 按照 微软官方文档 进行 WSL 的安装。建议使用默认的 Ubuntu 发行版。

步骤二:安装 Docker Desktop

  1. 根据 Docker 官方文档 的指南安装 Docker Desktop,以确保 Docker 可以在 WSL 环境中运行。
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

image.png

步骤三:安装 Python3

如果系统尚未安装 Python3,请使用以下命令进行安装:

sudo apt-get update
sudo apt-get install python3
sudo apt-get install python3-venv

image.png

步骤四:安装 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

image.png

获取连接信息

创建完成后,系统会输出 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

image.png

查看 PolarDB-X 集群状态

执行如下命令查看 PolarDB-X 集群状态:

pxd list

image.png

卡点与问题

  • 在部署过程中,可能会遇到网络下载速度慢、依赖项安装失败、编译错误等问题。
  • PXD工具或源码中的某些默认配置可能需要根据实际环境进行调整。

产品改进建议

  • 优化官网和帮助文档的清晰度与详细度,特别是针对初学者的指南。
  • 提供更多的预编译包和镜像,减少用户编译的复杂性和时间成本。
  • 加强错误信息的提示和解决方案的提供,帮助用户快速定位并解决问题。

PolarDB-X 开源评测心得总结

在对 PolarDB-X 开源版本进行评测后,我对其作为阿里云的高性能云原生分布式数据库的实力有了更加深入的了解。PolarDB-X 展现了其在高并发、海量数据处理和高可用性方面的强大优势,同时也在实际部署过程中暴露了一些可改进的地方。

产品优势

  1. 高可用性与高可靠性:PolarDB-X 基于 X-Paxos 实现了数据三副本强一致性,这不仅提升了系统的可靠性,也为跨多个可用区的高可用性提供了保障。无论是在金融级高可靠场景还是在海量数据处理场景中,这一特性都显得尤为重要。

  2. 优异的扩展能力:其平滑的横向和纵向扩展能力使得系统能够适应不断增长的数据和业务需求,确保了在面对大规模数据和高并发请求时,性能依然稳定。

  3. 高效的混合负载处理:PolarDB-X 的 HTAP(Hybrid Transactional/Analytical Processing)特性使其能够同时处理在线事务和实时分析,无需进行 ETL 操作。这对数据分析和实时决策提供了极大的便利。

架构设计

PolarDB-X 的架构设计具有很高的合理性和实用性。计算节点、存储节点、元数据服务和日志节点的分离,使得系统能够在不同层面上进行高效的资源管理和任务处理。计算节点负责 SQL 解析和执行,存储节点确保数据持久化与一致性,元数据服务维护全局信息,日志节点支持增量订阅和复制,这种分布式设计为系统提供了极高的灵活性和可靠性。

部署与使用体验

  1. 部署过程:在 Windows 平台上通过 WSL 环境进行 PolarDB-X 的部署和安装,整体过程较为顺利。然而,需要注意环境准备的细节,如 Python3、Docker 和 MySQL Shell 的安装,以及 PXD 工具的正确配置。使用国内镜像源可以有效提高下载速度和安装成功率。

  2. 使用体验:通过实际操作和测试,PolarDB-X 的分布式特性表现出色。无论是创建分区表、处理分布式事务,还是查看集群状态,系统的表现都非常稳定。不过,可能会遇到网络问题和性能瓶颈,需要根据实际情况进行调整和优化。

改进建议

  1. 文档和帮助支持:目前的文档和帮助文档对于初学者来说可能不够详细和友好。建议进一步优化文档内容,提供更详细的教程和常见问题解答,以帮助用户更快上手和解决问题。

  2. 预编译包和镜像:提供更多的预编译包和镜像可以显著减少用户的编译时间和复杂性。这样可以进一步提升用户体验,使得 PolarDB-X 的部署过程更加顺畅。

  3. 错误信息和解决方案:加强对错误信息的提示和解决方案的提供,可以帮助用户更快速地定位和解决问题。这不仅能提升用户的操作体验,也能提高系统的整体稳定性。

总结

总的来说,PolarDB-X 作为一个高性能的分布式数据库系统,凭借其强大的功能和灵活的架构,能够满足各种复杂的业务需求。尽管在实际部署和使用过程中存在一些挑战,但其出色的性能和功能优势使得这些挑战在总体上是值得克服的。随着文档支持和工具的进一步优化,PolarDB-X 有望在未来的数据库市场中发挥更大的作用。

附录

PolarDB云原生数据库自研数据库_数据库-阿里云 (openpolardb.com)

image.png

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
阿里云PolarDB云原生数据库在TPC-C基准测试中以20.55亿tpmC的成绩刷新世界纪录,展现卓越性能与性价比。其轻量版满足国产化需求,兼具高性能与低成本,适用于多种场景,推动数据库技术革新与发展。
|
3月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB 开源基础教程系列 7.2 应用实践之 跨境电商场景
本文介绍了如何在跨境电商场景中快速判断商标或品牌侵权,避免因侵权带来的法律纠纷。通过创建品牌表并使用PostgreSQL的pg_trgm插件和GIN索引,实现了高性能的字符串相似匹配功能。与传统方法相比,PolarDB|PostgreSQL的方法不仅提升了上万倍的查询速度,还解决了传统方法难以处理的相似问题检索。具体实现步骤包括创建品牌表、插入随机品牌名、配置pg_trgm插件及索引,并设置相似度阈值进行高效查询。此外,文章还探讨了字符串相似度计算的原理及应用场景,提供了进一步优化和扩展的方向。
104 11
|
3月前
|
SQL 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.5 应用实践之 TPCH性能优化
PolarDB在复杂查询、大数据量计算与分析场景的测试和优化实践.
148 7
|
3月前
|
搜索推荐 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.3 应用实践之 精准营销场景
本文介绍了基于用户画像的精准营销技术,重点探讨了如何通过标签组合快速圈选目标人群。实验分为三部分: 1. **传统方法**:使用字符串存储标签并进行模糊查询,但性能较差,每次请求都需要扫描全表。 2. **实验1**:引入`pg_trgm`插件和GIN索引,显著提升了单个模糊查询条件的性能。 3. **实验2**:改用数组类型存储标签,并结合GIN索引加速包含查询,性能进一步提升。 4. **实验3**:利用`smlar`插件实现近似度过滤,支持按标签重合数量或比例筛选。
95 3
|
1月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
79 12
|
1月前
|
Cloud Native 关系型数据库 分布式数据库
登顶TPC-C|云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
云原生数据库PolarDB技术揭秘:Limitless集群和分布式扩展篇
|
3月前
|
SQL 数据建模 BI
【YashanDB 知识库】用 yasldr 配置 Bulkload 模式作单线程迁移 300G 的业务数据到分布式数据库,迁移任务频繁出错
问题描述 详细版本:YashanDB Server Enterprise Edition Release 23.2.4.100 x86_64 6db1237 影响范围: 离线数据迁移场景,影响业务数据入库。 外场将部分 NewCIS 的报表业务放到分布式数据库,验证 SQL 性能水平。 操作系统环境配置: 125G 内存 32C CPU 2T 的 HDD 磁盘 问题出现的步骤/操作: 1、部署崖山分布式数据库 1mm 1cn 3dn 单线启动 yasldr 数据迁移任务,设置 32 线程的 bulk load 模式 2、观察 yasldr.log 是否出现如下错
|
3月前
|
SQL 运维 关系型数据库
体验用分布式数据库突破资源瓶颈,完成任务领智能台灯!
体验用分布式数据库突破资源瓶颈,完成任务领智能台灯!
|
3月前
|
人工智能 关系型数据库 分布式数据库
PolarDB 开源基础教程系列 7.4 应用实践之 AI大模型外脑
PolarDB向量数据库插件通过实现通义大模型AI的外脑,解决了通用大模型无法触达私有知识库和产生幻觉的问题。该插件允许用户将新发现的知识和未训练的私有知识分段并转换为向量,存储在向量数据库中,并创建索引以加速相似搜索。当用户提问时,系统将问题向量化并与数据库中的向量进行匹配,找到最相似的内容发送给大模型,从而提高回答的准确性和相关性。此外,PolarDB支持多种编程语言接口,如Python,使数据库具备内置AI能力,极大提升了数据处理和分析的效率。
149 4

热门文章

最新文章