GreenPlumn 实际上是由一组 PostgreSQL 数据库组合而成的强大数据仓库, GreenPlumn 基于PostgreSQL 8.2.14 开发, 并且在多数据情况下和 PostgreSQL 非常相似,以至于用户可以像是在使用PostgreSQL 一样来使用GreenPlumn。
2 GreenPlumn 体系结构
GreenPlumn可以将数据按一定算法全部分发到所有 segment Host上,因而能够处理大量的数据请求。GreenPlumn的系统结构实际上是多台 PostgreSQL 数据库服务器组成的矩阵,GreenPlumn分两部分, Master 主机和 Segments 主机,master主机是GreenPlumn的入口,客户端,终端用户连接Master来执行 sql。当用户在 Master 节点上执行查询SQL时,MASTER会将 SQL,以及SQL PLAN分发到所有 segments 节点, segments 处理好后,将数据发回 Master 节点, 如下图。
--2.1 GreenPlumn 的 Master 节点
Master 节点是访问 GreenPlumn的入口, 用于处理客户端的连接,和 SQL命令请求,用户可以使用psql,或者应用程序接口来连接 Master, 例如 JDBC,ODBC接口。
Master 节点仅存储 GreenPlumn的系统数据,而不存储用户数据,相反,用户数据存在所有的Segments 节点上,Master 负责以下工作:处理客户端的连接请求,处理客户端发出的SQL命令,将SQL命令分发到所有Segments 节点,协调所有节点处理的结果数据,并将这些数据展现给终端用户。
--2.2 GreenPlumn 的 Segment 节点
在GreenPlumn中, Segments存诸用户的数据,并且负责处理Master 分发出的SQL请求任务,用户定义的表和索引按一定算法分发到所有的 segments节点,每个节点含有独立的一部分数据,用户不需要直接和 segments 交互,相反,只需通过和 Master 节点交互。 一般地,建议一个CPU上跑一个活跃的 segments。
3 GreenPlumn的镜像备份功能
--3.1 关于 Segments节点的镜像
搭建GreenPlumn时,为了保证系统的高可用性,可以给每个 Segment 搭建 Mirror Segment, 当Primary Segment 不可用时, Mirror Segment可以fail over 接替工作。Mirror Segment(镜像节点)通常和Primary Segment 分布在不同的主机上。
--3.2 关于 Master 节点的镜像
搭建GreenPlumn时,也可以配置一个 Master 的镜像,称作 Master Standby, Standby Master通过WAL日志复制来同步数据,如果 Master 不可用,日志复制进程则会中断,并且 Standby Master可以接替工作,同时,最近一次复制过来的WAL日志状态会变化来标记最近一次事务提交的时刻。
由于 Master 不存储用户数据,所以Master Standby 只需要同步 Master 系统表数据,这些数据不会非常频繁地改变,当 Master 节点数据变化时,这些变化会自动地应用到 Master Standby节点上。从而使得 Master Standby 数据 始终和 Master 保持一致。