阿里巴巴已经开放了PolarDB的代码,PolarDB是一个基于PostgreSQL的分布式DBMS。

中国最大的IT公司之一阿里巴巴已经开放了基于PostgreSQL的分布式DBMS PolarDB的源代码。 PolarDB 通过分布式数据存储工具扩展了 PostgreSQL 的功能,具有完整性,并支持分布在不同集群节点的整个全局数据库上下文中的 ACID 事务。 PolarDB还支持分布式SQL查询处理、容错和冗余数据存储,以在一个或多个节点发生故障后恢复信息。 如果需要扩展存储,只需向集群添加新节点即可。 该代码在 Apache 2.0 许可证下开放。

PolarDB 由两个组件组成 - 扩展和一组 PostgreSQL 补丁。 补丁扩展了 PostgreSQL 核心的功能,扩展包括与 PostgreSQL 分开实现的组件,例如分布式事务管理机制、全局服务、分布式 SQL 查询处理器、附加元数据、用于管理集群、部署集群和简化集群的工具。现有系统向其迁移。

这些补丁向 PostgreSQL 核心添加了分布式版本的机制,用于使用不同隔离级别的多版本(MVCC,多版本并发控制)来控制对数据的并行访问。 PolarDB的大部分功能都包含在扩展中,减少了对PostgreSQL的依赖,简化了基于PolarDB的解决方案的更新和实施(简化了向新版本PostgreSQL的过渡并保持与PostgreSQL的完全兼容)。 为了管理集群,使用 pgxc_ctl 工具包,该工具包基于 PostgreSQL-XC 和 PostgreSQL-XL 中的类似实用程序。

集群由三个基本组件组成:数据库节点(DN)、集群管理器(CM)和事务管理服务(TM)。 此外,还可以使用代理负载平衡器。 每个组件都是一个单独的进程,可以在不同的服务器上运行。 数据库节点为来自客户端的 SQL 查询提供服务,同时在其他数据库节点的参与下充当分布式查询执行的协调器。 集群管理器监视每个数据库节点的状态,存储集群配置,并提供管理、备份、负载平衡、更新、启动和停止节点的工具。 事务管理服务负责维护整个集群的整体完整性。

阿里巴巴已经开放了PolarDB的代码,PolarDB是一个基于PostgreSQL的分布式DBMS。

PolarDB基于Shared-nothing分布式计算架构,数据分布式存储在不同节点上,所有节点不使用公共存储,每个节点负责与其关联的部分数据并执行相关查询到数据。 每个表都使用基于主键的散列分为多个部分(分片)。 如果请求跨越位于不同节点的数据,则激活分布式事务执行机制和事务协调器以确保原子性、一致性、隔离性和可靠性(ACID)。

为了确保容错性,每个段都被复制到至少三个节点。 为了节省资源,完整数据仅包含两个副本,其中一个仅限于存储回写日志(WAL)。 具有完整副本的两个节点之一被选举为领导者并参与处理请求。 第二个节点充当相关数据段的备用节点,第三个节点参与主节点的选择,并可用于在两个具有完整副本的节点发生故障时恢复信息。 集群节点之间的数据复制是使用 Paxos 算法组织的,这确保了在具有潜在不可靠节点的网络中一致的共识定义。

值得注意的是,PolarDB DBMS的全部功能计划通过三个版本发布:第一个版本将发布用于复制、高可用性和集群管理的工具。 第二个版本将采用分布式事务执行系统,支持跨节点 ACID 和分布式 SQL 执行。 第三个版本将包括 PostgreSQL 插件和跨节点灵活数据分发的工具,包括自适应放置段以实现最佳性能以及通过添加新节点来扩展集群的能力。

来源: opennet.ru

添加评论