PolarDB for PostgreSQL文档翻译之架构和路线图

本篇翻译了PolarDB for PostgreSQL 的最终架构和开源路线图:

  1. 最终架构 - arch.md
  2. 开源路线图 - roadmap.md

最终架构 - arch.md

github原文地址: https://github.com/alibaba/PolarDB-for-PostgreSQL/blob/master/doc/polardb/arch.md
gitee原文地址: https://gitee.com/mirrors_alibaba/PolarDB-for-PostgreSQL/blob/master/doc/polardb/arch.md
中文翻译地址: https://www.jianshu.com/p/7c851acda6d3

架构和主要功能特性

PolarDB for PostgreSQL使用PostgreSQL作为主要组件实现了一个无共享(share-nothing)的架构。下文在没有特别指明的情况下,我们将用PolarDB来表示PolarDB for PostgreSQL。PolarDB与PostgreSQL完全兼容,且支持PostgreSQL的大部分SQL功能。作为一个分布式数据库系统,PolarDB实现了与单机数据库系统一样的数据一致性和ACID。PolarDB实现了基于Paxos的复制,在节点故障和集群重新配置期间,提供高可用性、数据冗余和跨节点的一致性。细粒度的分片和应用透明的分片重新定位使PolarDB能够有效地利用云资源,以适应不同的计算和存储需求。PolarDB的分布式SQL引擎通过结合PostgreSQL优化器的全面性和节点之间或节点内部并行执行的效率,实现了复杂查询的快速处理。

总的来说,PolarDB在商用硬件或标准云资源(如ECS和块存储服务)上提供可扩展的SQL计算和完整ACID支持的关系数据存储。

PolarDB的架构

译者注: PolarDB的功能计划分3个阶段分批开源, 下图是最终形态的架构图。

sharding_plug_in.png

PolarDB集群由三个主要部分组成:数据库节点(DN)、集群管理器(CM)和 交易和时间服务(TM)。它们是不同的进程,可以部署在多个服务器或ECS上。DN是主要的数据库引擎,它接收来自客户端或负载均衡器的SQL请求并处理它们。每个DN可以作为一个协调者,在许多DN之间分配查询和协调事务。每个DN处理存储在数据库中的部分数据。对这些数据的任何操作,包括读和写,都由其相应的DN来处理。一个DN中的数据被进一步划分为分片(shards)。当PolarDB扩大规模或重新平衡工作量时,这些分片可以被重新定位到其他DN上。DN之间有副本机制,通过基于Paxos的复制存储相同的数据。DN和它们的副本组成一个复制组(a replication group)。在这样一个组中,其中一个DN作为主节点负责处理所有的写请求,并将其结果传播给replica DN(或follower DN)。我们的Paxos复制也支持logger DN,它只存储日志记录而不是数据。

TM是一个中心化的服务,支持全局一致的、有序的状态或计数器。升序时间戳和全局事务ID是其中两个应用例子。

CM监控每个DN的状态并维护集群的配置。CM还支持管理PolarDB集群的工具和命令,如启动或停止DN、升级、备份和平衡工作负载。

上图显示了这些组件和它们之间的交互。

PolarDB正在进化中。上述三个组件的功能将逐步开放。路线图可以在这里找到。

PolarDB的主要功能特性

  • 具有ACID能力的分布式OLTP
  • 完全兼容PostgreSQL的SQL
  • 分布式SQL执行
  • 用最新的PostgreSQL版本快速升级
  • 基于Paxos复制的数据一致性
  • 细粒度的分片
  • 在线分片重新定位
  • 高性能
    • 基于时间戳的MVCC
    • 并行重做
    • 避免全页写入
    • 快速查询出货
    • 一阶段提交
    • ...
  • 可扩展性和弹性
    • 混合逻辑时钟
    • 可扩展的协调
    • 单节点事务优化
    • ...
  • 高可用性
    • 在线集群扩展
    • 低RTO故障切换
    • 零中断和用户透明的切换
      *跨AZ/DC的零RPO部署
    • 即时修复页面损坏
    • ...

Copyright © 阿里巴巴集团有限公司版权所有

开源路线图 - roadmap.md

github原文地址: https://github.com/alibaba/PolarDB-for-PostgreSQL/blob/master/doc/polardb/roadmap.md
gitee原文地址: https://gitee.com/mirrors_alibaba/PolarDB-for-PostgreSQL/blob/master/doc/polardb/roadmap.md
中文翻译地址: https://www.jianshu.com/p/7c851acda6d3

PolarDB 路线图

PolarDB项目将逐步推出功能和组件,最终形成一个无共享(share-nothing)的分布式数据库。每个主要的发布版本都作为一个RDBM系统提供完整的功能。我们计划推出三个主要版本。

在第一个版本中,我们的目标是基于Paxos复制的集群版本,增强单节点PostgreSQL系统的性能和高可用性。
在第二个版本中,我们引入了分布式事务、分布式MVCC和分布式SQL计算等技术,以支持无共享的OLTP系统。在这个版本中,PolarDB具备线性扩展性, 可以线性扩展到100多个节点的集群。同时,在SQL功能和ACID能力方面,它与单节点的PostgreSQL兼容。
在第三个版本中,实现了细粒度的分片。数据库组件,如协调器节点和数据节点,被统一在一个数据库节点上。 PolarDB扩展的大多数功能特性都是以PostgreSQL内核扩展或插件的形式实现。这使得PolarDB可以很容易地和社区版本一起及时升级。用户可以以最小的代价采用新的社区版本,同时享受PolarDB提供的高可用性和可扩展性。

PolarDB for PG version 1.0

Paxos based PolarDB cluster

如上图所示,这个版本支持基于Paxos的复制和集群管理。我们把PostgreSQL变成一个高可用的数据库集群,在数据库少数节点发生故障时也能存活。幸存的数据库节点保持数据的一致性,不会发生数据丢失。这个版本中使用的Paxos复制协议与阿里巴巴集团用于支持数百个阿里巴巴产品和平台的协议相同。在阿里巴巴各种不同的、经常是密集型的工作负荷下,这些实现已经充分测试了正确性和可靠性。

此外,还引入了一些针对单节点PostgreSQL的性能提升功能,如使用时间戳作为快照,并行重做,以及移除全页写入的WAL。

下面是主要功能特性的列表:

  • 高可用性:
    • 一个leader和两个follower的复制配置:零数据丢失和跨节点故障的数据一致性
    • 自动leader选举
    • 多角色支持: leader/follower/logger, 平衡数据冗余和存储空间,平衡恢复速度和存储成本
    • 集群管理: 集群状态监控、启动/停止节点或集群、主从切换和负载平衡
    • 并行WAL重做: 多种粒度的重做并行,如每个文件或每个页面
  • 高性能:
    • 使用时间戳作为事务快照: 消除ProcArray相关的瓶颈
    • CTS 多核可扩展性
    • 删除全页写入的WAL: 避免写密集型工作负载的大量WAL IO

PolarDB for PG version 2.0

HLC based Distributed OLTP

这个版本引入了分布式无共享OLTP系统的基本功能,以支持全局数据一致性、跨节点的ACID和分布式SQL流程。数据库数据根据选择的列进行分区。这些分区被分配到PolarDB集群的数据节点上。一个新的组件,协调者节点,被引入来处理SQL请求并决定如何在数据节点之间执行。数据节点是基于PostgreSQL的组件,负责存储分区数据并处理来自协调器节点的SQL查询。PolarDB允许分布式DML、DDL和DCL。协调者节点根据其访问数据向数据节点发送查询,以便执行。协调器节点还决定哪些操作或子查询可以下推到数据节点,并对数据节点的结果进行合并或聚合操作。对于数据一致性和ACID,PolarDB使用分布式事务、混合逻辑时钟(HLC)、分布式MVCC和基于HLC的vaccum和热链裁剪(hot-chain pruning)。

下面是一个功能特性列表:

  • 基于HLC的ACID
    • 混合逻辑时钟(HLC)
    • 基于HLC的数据一致性和分布式MVCC
    • 分布式事务的两阶段提交
    • 分布式事务的容错
    • 分布式死锁的预防和检测
    • 分布式Vacuum
  • 分布式SQL计算
    • SQL语言
      • 兼容SQL2003
      • 支持大多数PostgreSQL的SQL语法、数据类型和内部函数
      • 事务相关的语句的分布式处理
      • 数据控制语句(GRANT/REVOKE)的分布式处理
      • 支持游标(CURSOR)和触发器(TRIGGER)
      • 规则(RULE)
      • 用户定义函数(UDF)
    • 分布式查询执行
      • 简单DML和查询的直接分发
      • 基于CBO的复杂查询处理
      • 语句下推
    • 分布式DDL
      • 支持多种类型的分布式表的创建和删除: 复制(replication), 哈希(hash), 取模(modulo) and 轮询(round-robin)
      • 创建索引
      • 修改表定义
  • 高可用性
    • 分布式OLTP集群的Paxos复制和集群管理
    • 数据库日志和Paxos日志同步优化
    • follower的并行重做
    • 全局元数据管理和一致性
    • 节点故障后的负载平衡
  • ...

PolarDB for PG version 3.0

Sharding and Plug-in

PolarDB for PostgreSQL使用PostgreSQL作为主要组件实现了一个无共享(share-nothing)的架构。下文在没有特别指明的情况下,我们将用PolarDB来表示PolarDB for PostgreSQL。PolarDB与PostgreSQL完全兼容,且支持PostgreSQL的大部分SQL功能。作为一个分布式数据库系统,PolarDB实现了与单机数据库系统一样的数据一致性和ACID。PolarDB实现了基于Paxos的复制,在节点故障和集群重新配置期间,提供高可用性、数据冗余和跨节点的一致性。细粒度的分片和应用透明的分片重新定位使PolarDB能够有效地利用云资源,以适应不同的计算和存储需求。 PolarDB的分布式SQL引擎通过结合PostgreSQL优化器的全面性和节点之间或节点内部并行执行的效率,实现了复杂查询的快速处理。

总的来说,PolarDB在商用硬件或标准云资源(如ECS和块存储服务)上提供可扩展的SQL计算和完整ACID支持的关系数据存储。

这个版本中, 我们将提供以下功能特性:

  • 分片和弹性
    • 细粒度的分片
    • 高效的在线分片重新定位
    • 并行逻辑复制
    • 在线集群扩容和缩容
    • 热点清除和负载平衡
  • 基于扩展的增强
    • 基于扩展(extension)实现的分布式事务
    • 时间服务插件(plug-in)
    • 分布式MVCC补丁(patch)
    • 分布式锁和死锁管理补丁(patch)
    • 分布式DDL/TCL/DCL/CCL语句扩展(extension)
    • 基于扩展(extension)实现的元数据统一管理
    • 基于扩展(extension)实现的细粒度分片
    • 基于扩展(extension)或补丁(patch)实现的基于Paxos的高可用性
  • 统一的数据库节点
    • 每个数据库节点都存储了完整的元数据
    • 统一的协调器节点和数据节点
  • 高可用性增强
    • 基于Paxos的主元数据节点HA
    • 节点故障时的全局元数据一致性
    • 在线更换节点
    • 在线升级
    • 基于逻辑复制的Active-Active部署
  • ...

Copyright © 阿里巴巴集团有限公司版权所有

你可能感兴趣的:(PolarDB for PostgreSQL文档翻译之架构和路线图)