Postgres-XL架构
由GTM、GTM-Proxy、Coordinator、Datanode组成。
GTM负责提供事务的ACID属性;
Datanode负责存储表的数据和本地执行由Coordinator派发的SQL任务;
Coordinator负责处理每个来自Application的SQL任务,并且决定由哪个Datanode执行,然后将任务计划派发给相应的Datanode,根据需要收集结果返还给Application;
GTM通常由一台独立的服务器承担,GTM需要处理来自所有GTM-Proxy或者Coordinator和Datanode的事务请求。
每台机器最好同时配置一个Coordinator、一个Datanode与GTM-Proxy。
每台机器同时配置一个Coordinator和一个Datanode,可以负载均衡,同时降低网络流量。GTM-Proxy会减少GTM的负载,将Coordinator和Datanode上进程的请求和响应聚集到一台机器上,同时会帮助处理GTM失效的情况。
GTM可能会发生单点故障,可以配置一个GTM-Standby节点作为GTM的备用节点。
协调器(Coordinator)
处理客户端连接。
分析查询语句,生成执行计划,并将计划传递给数据节点实际执行。
对数据节点返回的查询中间结果集执行最后处理。
管理事务两阶段提交(2PC)。
存储全局目录(GlobalCatalog)信息。
数据节点(DataNode)
实际存储表和索引数据,数据自动打散分布到集群中各数据节点。
只有协调器连接到数据节点才能可读写。
执行协调器下传的查询,一个查询在所有相关节点上并行查询。
两个数据节点间可建立一对一通讯连接,交换分布式表关联查询(Join类)的相关信息。
全局事务管理器(GTM)
全局事务管理器(GTM:Global Transaction Manager)
全集群只有一个GTM节点,会有单点故障问题,可以配置StranBy热备节点保证高可用。
通过部署GTM Proxy,解决GTM性能瓶颈。
提供事务间一致性视图。
处理必须的MVCC任务:
transaction IDs 事务ID。
snapshots 数据快照,MVCC使用。
管理全局性数据值:
timestamps 时间戳。
sequences 序列对象。
数据分布
数据分布有两种模式: 复制表(Replicated Table)与分布表(Distributed Table)
复制表(Replicated Table):每行记录复制到集群中所有的数据节点,每节点一份。
分布表(DistributedTable):记录分片存在不同节点,可用的分片策略方式Hash、Round Robin、Modulo。
高可用性
全局事务管理器采用热备方式。
多个协调器间负载均衡。
数据节点使用流复制,复制数据到备节点。
功能特性
license:Mozilla PublicLicense许可,允许将开源代码与闭源代码混在一起使用。
完全的ACID支持。
可横向扩展的关系型数据库(RDBMS)。
支持OLAP应用,采用MPP(Massively Parallel Processing大规模并行处理系统)架构模式。
支持OLTP应用,读写性能可扩展。
集群级别的ACID特性。
多租户安全。
支持分布式Key-Value存储、支持JSON和XML格式。
事务处理与数据分析处理混合型数据库。
支持丰富的SQL语句类型,如关联子查询。
支持绝大部分PostgreSQL的SQL语句。
分布式多版本并发控制(MVCC:Multi-version Concurrency Control)。
支持所有支持PostgresSQL类型的驱动JDBC, ODBC, OLE DB,Python,Ruby,perl DBI,Tcl。
功能不足
需要使用外部机制实现高可用,如pg流复制、Corosync/Pacemaker等。
增删节点/重新分片数据(re-shard)的比较复杂。
数据重分布(redistribution)期间会锁表。
某些外键、唯一性约束功能欠缺。