分布式数据库
聊起分布式数据库,大家第一印象估计是 谷歌的 Spanner ,以及 TiDB。其实还有另外一种分布式 Postgres-XC (目前已经迭代到 PostgreSQL-X2 ),Postgres-XC 数据库系统主要是基于水平可伸缩的share nothing 架构,支持全局事务,表分区,复制以及查询计划在各个节点并行执行。
国内的代表作是鹅厂的 TBase 基于Postgres-XC 二次开发并且做了很大改进,在性能和功能上有比较大提升。
架构
Postgres-XC主要组件有gtm(Global Transaction Manager) , gtm_standby , gtm_proxy, Coordinator 和Datanode。
基于postgres-xc 的 tbase 架构图
从上图可以看出Coordinator和Datanode节点可以配置为多个,并且可以位于不同的主机上。只有Coordinator节点直接对应用服务,Coordinator节点将数据分配存储在多个数据节点datanode上。
gtm:全局事务管理器(Global transaction manager.), 是 Postgres-XC 的核心组件,用于全局事务控制以及tuple的可见性控制。gtm 为分配GXID和管理PGXC MVCC的模块 , 在一个集群中只能有一台主gtm。gtm_standby 为gtm的备机 。
gtm_proxy
用于对coordinator节点提交的任务进行分组等操作。一个XC 集群中可以存多个gtm_proxy 节点。
coordinator:协调节点(简称CN),对外提供接口,负责数据的分发和查询规划,多个节点位置对等,每个节点都提供相同的数据库视图;在功能上CN上只存储系统的