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

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 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分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
23天前
|
消息中间件 数据安全/隐私保护 Python
AMQP在分布式系统中的角色与优势
【8月更文第28天】在分布式环境中,服务之间通常需要进行异步通信以提高系统的可伸缩性和可用性。AMQP 提供了一个开放的标准,允许不同的消息中间件平台相互操作,从而简化了不同技术栈之间的集成。
28 1
|
26天前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
54 5
|
27天前
|
存储 分布式计算 Hadoop
【揭秘Hadoop背后的秘密!】HDFS读写流程大曝光:从理论到实践,带你深入了解Hadoop分布式文件系统!
【8月更文挑战第24天】Hadoop分布式文件系统(HDFS)是Hadoop生态系统的关键组件,专为大规模数据集提供高效率存储及访问。本文深入解析HDFS数据读写流程并附带示例代码。HDFS采用NameNode和DataNode架构,前者负责元数据管理,后者承担数据块存储任务。文章通过Java示例演示了如何利用Hadoop API实现数据的写入与读取,有助于理解HDFS的工作原理及其在大数据处理中的应用价值。
40 1
|
29天前
|
Cloud Native 关系型数据库 分布式数据库
云原生关系型数据库PolarDB问题之PolarDB相比传统商用数据库的优势如何解决
云原生关系型数据库PolarDB问题之PolarDB相比传统商用数据库的优势如何解决
29 1
|
1月前
|
机器学习/深度学习 人工智能 负载均衡
【AI大模型】分布式训练:深入探索与实践优化
在人工智能的浩瀚宇宙中,AI大模型以其惊人的性能和广泛的应用前景,正引领着技术创新的浪潮。然而,随着模型参数的指数级增长,传统的单机训练方式已难以满足需求。分布式训练作为应对这一挑战的关键技术,正逐渐成为AI研发中的标配。
128 5
|
1月前
|
存储 Kubernetes 监控
深入浅出分布式事务:理论与实践
在数字化时代的浪潮中,分布式系统如同星辰大海般浩瀚而深邃。本文将带你航行于这片星辰大海,探索分布式事务的奥秘。我们将从事务的基本概念出发,逐步深入到分布式事务的核心机制,最后通过一个实战案例,让你亲自体验分布式事务的魅力。让我们一起揭开分布式事务的神秘面纱,领略其背后的科学与艺术。
64 1
|
1月前
|
关系型数据库 MySQL 分布式数据库
云原生数据库PolarDB MySQL版深度评测报告
作为一名开发人员,在日常工作中频繁与数据库打交道,对于数据库的性能、灵活性和易用性有着极高的要求。此次,我有幸对阿里云自主研发的云原生数据库PolarDB MySQL版进行了深入评测,旨在了解其是否能够满足现代应用的高性能、高可用性和弹性扩展需求。
43 4
|
20天前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
37 0
|
20天前
|
UED 存储 数据管理
深度解析 Uno Platform 离线状态处理技巧:从网络检测到本地存储同步,全方位提升跨平台应用在无网环境下的用户体验与数据管理策略
【8月更文挑战第31天】处理离线状态下的用户体验是现代应用开发的关键。本文通过在线笔记应用案例,介绍如何使用 Uno Platform 优雅地应对离线状态。首先,利用 `NetworkInformation` 类检测网络状态;其次,使用 SQLite 实现离线存储;然后,在网络恢复时同步数据;最后,通过 UI 反馈提升用户体验。
34 0
|
1月前
|
Go API 数据库
[go 面试] 分布式事务框架选择与实践
[go 面试] 分布式事务框架选择与实践

热门文章

最新文章