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

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 本文对阿里云开源分布式数据库 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分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
28天前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
3月前
|
存储 SQL 分布式数据库
OceanBase 入门:分布式数据库的基础概念
【8月更文第31天】在当今的大数据时代,随着业务规模的不断扩大,传统的单机数据库已经难以满足高并发、大数据量的应用需求。分布式数据库应运而生,成为解决这一问题的有效方案之一。本文将介绍一款由阿里巴巴集团自主研发的分布式数据库——OceanBase,并通过一些基础概念和实际代码示例来帮助读者理解其工作原理。
309 0
|
8天前
|
关系型数据库 分布式数据库 数据库
PostgreSQL+Citus分布式数据库
PostgreSQL+Citus分布式数据库
39 15
|
1月前
|
SQL 关系型数据库 分布式数据库
Citus 简介,将 Postgres 转换为分布式数据库
【10月更文挑战第4天】Citus 简介,将 Postgres 转换为分布式数据库
82 4
|
30天前
|
SQL NoSQL MongoDB
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
一款基于分布式文件存储的数据库MongoDB的介绍及基本使用教程
41 0
|
2月前
|
存储 监控 数据挖掘
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势
飞轮科技技术副总裁姜国强于「数据分析与洞察」专场分享[阿里云数据库 SelectDB 版在日志存储分析、实时报表生成、用户行为分析及 Lakehouse 场景应用方案
飞轮科技携手观测云亮相云栖大会,全方位展示阿里云数据库 SelectDB 版核心优势
|
1月前
|
存储 NoSQL Java
使用 Java 了解和学习 NoSQL 数据库:三个主要优势
使用 Java 了解和学习 NoSQL 数据库:三个主要优势
13 0
|
3月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
63 0
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
什么是云原生数据库PolarDB分布式版
本文介绍什么是云原生数据库PolarDB分布式版,也称为PolarDB分布式版,本手册中简称为PolarDB-X。
92 0