Greenplum数据库是一种大规模并行处理(MPP)的以PostgreSQL开源技术为基础的数据库服务器。
MPP(又称无共享架构)是指两个或两个以上的处理器合作开展的一项行动 -每个处理器拥有自己的内存,操作系统和磁盘系统。
Greenplum利用这种高性能的系统架构,可以把TB级的数据仓库分布地加载进来,并能够使用系统的所有资源并行处理查询。
Greenplum数据库基本上是几个PostgreSQL数据库实例一起运行作为一个整体的数据库管理系统。它是基于PostgreSQL8.2.15,并在大多数情况下是非常相似PostgreSQL对SQL的支持,
功能,配置选项和最终用户功能。数据库用户与Greenplum数据交互,就像他们与PostgreSQL数据库的数据库管理系统交互。(DBMS)
PostgreSQL的内部已被修改或补充,以支持Greenplum数据的并行结构。
例如系统目录,查询规划,优化,执行查询,事务管理器组件已被修改,增强,能够在所有PostgreSQL数据库实例上马上并行执行查询.
Greenplum的互连(网络层),能够连接不同的PostgreSQL实例,允许数据库系统表现为一个逻辑数据库。
(gp通过内部连接,使很多独立的postgresql数据库变成一个逻辑库,对于客户端来说就是一个整体)
Greenplum数据库还包括优化PostgreSQL对商业智能(BI)的功能
例如,已加入Greenplum的并行数据加载(外部表),资源管理,查询优化和存储,这不是普通的PostgreSQL所拥有的。
Greenplum的许多特性跟优化功能还是用到了PostgreSQL的功能。例如,表分区是Greenplum的现在是标准的PostgreSQL开发的功能。
1.About the Greenplum Architecture
Greenplum数据库是能够处理和存储分布在多个服务器或主机的大量的数据。
一个在Greenplum数据库实际上是一个PostgreSQL数据库的数组,一起工作,显示一个单一的数据库映像。
master是Greenplum数据系统的入口点。它是客户端连接,并提交SQL语句的数据库实例所在。
It is the database instance where clients connect and submit SQL statements
master负责协调系统中的其他数据库实例, segement,它主要处理数据的处理和存储工作。
master不存储用户数据,segment存储数据并负责SQL查询,master节点负责相应客户端请求,并将请求的sql语句进行转换,转换后调度后台的segment节点进行查询,把结果给客户端.
master 进行工作调度
segment 进行数据存储和数据处理
About the Greenplum Master
master是Greenplum数据系统的入口点。它是数据库的过程中接受客户端连接和处理该系统的用户发出的SQL命令。
Greenplum是基于PostgreSQL的,用户与Greenplum数据库的交互(通过master),就像一个典型的PostgreSQL数据库与客户端进行交换一样。
他们可以使用客户端程序连接数据库,如psql或JDBC或ODBC应用程序编程接口(API)。
master是全局系统目录所在(系统表包含有关Greenplum的数据库系统本身的元数据集),但master不包含任何用户数据,数据位于各段(子节点)segement。
master认证客户端连接的工作,处理传入的SQL命令,(segement)之间分配工作负荷,协调各个(segement)返回的结果,并展示最终的结果给客户端程序。
(分发工作给后端的子节点中,将结果返回客户端)
About the Greenplum Segments
在Gp数据库中,segment是数据存储和大部分查询处理的地方,用户表和索引分布在gp数据库系统可用的segments上,
每个segment包含了总数据的一部分,segment实例是数据库服务进程用来服务segments(Segment instances are the database server processes that serve segments)
Greenplum用户不直接交互数据库系统的segment,而是通过master来调度segment。
推荐Greenplum数据的硬件配置,每一个活动的segment分配一个CPU或CPU核心。
例如,如果你的子节点主机有两个双核心处理器,你的每个主机可以有四个主要segment。
一般建议4core左右分配一个子节点,每个子节点必须在不同的网段.
About the Greenplum Interconnect
互联网连接是Greenplum数据引擎的网络层。当用户连接到数据库和发出查询,
每个segment创建一个进程来处理该查询的工作。
互联网连接指的是segements的之间的进程通信,就像网络基础设施之间的通信。互连使用标准的千兆以太网交换结构。
默认情况下,互连使用UDP(用户数据报协议)通过网络发送的消息。
Greenplum的软件使用额外的数据包验证和检查 这些验证和检查不通过UDP进行执行,
所以可靠性是相当于TCP(传输控制协议),性能和可伸缩性超过的TCP。
如果用TCP协议,Greenplum的有1000个segment实例的可扩展性限制。UDP协议无此限制,UDP是现在互联网连接的默认协议。
About Redundancy and Failover in Greenplum Database
Greenplum数据库的提供给系统部署选项,不包括单点故障。本节介绍Greenplum数据的冗余组件。
冗余,指重复配置系统的一些部件,当系统发生故障时,冗余配置的部件介入并承担故障部件的工作,由此减少系统的故障时间。
About Segment Mirroring
当您部署Greenplum的数据库系统,您可以选择配置镜像segment。
镜像segments允许数据库查询故障转移到备份节点,当master segement变得不可用。
要配置镜像,您必须在您的Greenplum的数据库系统有足够的主机,
因此,次要segement总是位于跟主segment不同的主机上。
图1.2显示了等镜像配好时,表数据如何分布在不同的segment上.
Mirror segment始终位于跟primary segement不同的主机上.
Segment Failover and Recovery
Greenplum数据系统启用镜像时,当a primary copy变得不可用,系统会自动转移到镜像copy,
如果一个segment的实例或主机出现停机,只要所有的数据都可以在余下的活动的segement使用。Greenplum的数据库系统可以继续运行
当master无法连接到一个segment实例,在Greenplum的数据库系统日志里会标志该segment down,在出错的地方使用镜像来代替。失败的部分实例将不继续运作,直至采取措施,使该sgement恢复(online)。该系统是运行起来时失败的部分可以恢复,恢复过程只是复制该segment没运行时候变化的部分