2009年11月29日星期日

GreenPlum





基于PostgreSQL大型并行处理(Massively parallel processing, MPP, 即share-nothing architecture)数据库


Greenplum DB 布署图

Master : 主机
Greenplum DB的入口, 安装有PostgreSQL 8.2.10,使客户端可以用psql连接连入或用API如JDBC,ODBC. 存放global system catalog.(系统表的集合,包含有Greenplum DB的元数据.但不包括用户数据.

Segment : 段
用于存放数据(用户自定义表和索引)和处理查询的主要地方. Segment实例是数据库服务器进程.推荐用一个有效的CPU或CPU核来服务一个Segment.

Interconnect : 互联
Greenplum DB的网络层面.采用标准的标准的千兆以太网.默认使用UDP,如使用TCP会有1000个段的限制

Greenplum DB可选的支持冗余和故障恢复,无SPOF.有如下保障措施
1) 段监控:
可设置镜像段,,可以用镜像段在主段失效的时候恢复.条件是要有足够的机器
在镜像打开的时候,系统会自动故障恢复,当Master连接一个段失败,它会标记这个段是不可用的直到这个段重新上线,Master会重标记它为可用.
故障恢复要求系统配置成fault operational mode.在只读模式下,DDL,DML命令瘵不能执行.而continue mode,每个数据块只要有有一个段实例在运行,系统会连续运行,一旦有一个失败,系统必须关闭来恢复失效的段. 如果镜像没有打开.

2) 主机监控:
可以布署主机实例的镜像或备份.备份主机采用warm standby(热备)方式.备份主机通过复制transaction log的方法同步.

3) 冗余的互联:
双千兆交换机,和冗余的连线.

并行数据装载:
外部表装载.如果采用Greenplum DB并行文件服务器(gpfdist),可以达到装载效率2T/小时


Greenplum如何存贮数据:
采用star schema的一个例子, factor table是sale, dimension table是customer, vendor, product.
如上图所示,sale, customer, product, vendor分别是不同的表.

GreenplumDB的分布策略:
1) Hash分布 : 这是默认的,一个或多个表的列的值做为分布键(distribution key),这个分布的Key用来hash每一行到一个特定段.相同的键值,总是被Hash到同一个段.如果没有定义,一般以主键或第一个列作为分布键
2)随机分布:用round-robin方式分布每行记录.这种性能不如Hash分布好

查询处理:
当Greenplum从前端接收到SQL语句,主机会分析这个查询,并做优化,创建并发查询计划(parallel query plan),主机分发这个计划给所有的segment来执行.每个Segment执行本地数据库操作来响应.
除了典型的数据库操作(扫描,联接)GreenplumDB还有附加的操作类型称为motion,一个motion操作有在段之间移动数据元组的动作.
GreenplumDB将工作从查询计划切分为slices.一个分片是能在段的层次上独立完成的一部分工作(不单是一个工作项,而有可能是多个工作项).当一个motion发生时,在参与段的两端各有一个slice.

GreenplumDB创建一批量的进程来处理查询的工作.在主机上查询的工作进程称为query dispatcher (QD), QD负责创建分发查询计划,并汇总和展现最终结果.在段上,一个查询工作进程称为query executor(QE). QE负责完成工作的片断.每个slice都有被指派到一个工作进程上. 每个段都有一定量的进程进行并发的服务.相关的工作于同一slice查询的进程被称为gang.



MapReduce:

允许开发者写Map和Reduce用多种的脚本语言,如Python和Perl.GreenPlum的MapReduce提供开发者访问数据的弹性,可以在文件中,可以在网站上,甚至是任意的操作系统命令.Greenplum提供这些数据相对于传统数据库而言无额外的开销:无锁,日志,分布提交协议.在另一方面,对必须要由RDBMS全功能保护的数据,Greenplum MapReduce 提供了有效的原生方法访问数据记录.它会把MapReduce程序推向Greenplum并行的数据库引擎上,来获取数据.

MapReduce的特性:
1) 由于GreenplumDB表分布在多台机器上,初始的Map阶段运行在数据分区所在的数据引擎上.
2) Greenplum扩展表机制允许文件和数据生成程序被注册为只读表,然后通过SQL语句来查询.
3) Greenplum能存贮MapReduce的结果到一个文件系统,但能同样方便的保存到GreenplumDB,并且有全的ACID支持及可选的子查询通过BI工具分析这些输出.产生结果也是并发的
4) Greenplum MapReduce framework能使用任意的SQL查询作为输入.另一方面,Greenplum MapReduce脚本能被注册成数据库中的视图(view)来作为查询中的虚拟表.

报价:
Perpetual license : $ 16K / core, 或者说 $70K/terabyte. 年维护费22%维护价. 或50%永久许可证下年订阅费. 可以再商量

没有评论:

发表评论