日期:2014-05-16  浏览次数:20442 次

Greenplum与DB2 DPF对比

?

1、总体架构说明:

(1)Greenplum:?

?

MPP架构(Massively?Parallel?Processing):大规模并行处理系统。

整个系统是一组独立的数据库阵列。每个数据库相互独立,有独立的数据存储,日志,索引等等。

集群中HOST分为两种,一个是MASTER?HOST,一个是SEGMENT?HOST。MASTER?HOST

不存放数据,只存放全局系统目录(存放数据自身一些元数据),负责客户端连接,处理SQL命令,分发SEMENT任务,汇总SEGMENT返回的结果,展现给最后的结果给客户端程序。

SEGMENT?HOST存放用户数据和索引。同一个HOST上可以根据硬件(CPU?core,network等)部署多个INSTANCE,同一个SEGMENT?HOST上的两个INSTANCE也不能直接访问。

(2)DB2?DPF:

?

DPF架构类似,也是MPP架构,每个数据库有独立的日志,引擎,锁,缓存管理。服务器之间是通过万兆交换机交换数据。服务器内部通过share_memory实现相互之间访问。服务器16core,每个core对应8G内存,一个RAID组。

?

?

总结:MPP结构最大的特点是,不共享资源。节点内部只访问本身的内存和存储,节点之间信息交互与节点的处理时并行的。MPP在增加节点时性能基本可以实现线性扩展。MPP系统不共享资源,因此,当达到一定规模时,资源比SMP要多。因为MPP系统因为要在不同处理单元之间传递信息,通讯时间比较少的时候,MPP就能充分发挥资源优势,达到高效率。

?

2、数据库核心技术(并行数据流引擎带来的多维分区或者混合分区):

MPP架构中,解决各个节点的并行处理问题。Greenplum?和ISAS都采取了同样的思路:表分区,就是将一张完整的表,通过HASH算法,尽量均衡的放在不同的节点上。

?

?

下面说明ISAS和Greenplum的多维分区:

1)哈希分区

???分区键,这个必须指定,没有类似GP中随机分区的概念。如果没有一个合适的列作为分区键,可以通过表新增一个自动生成列,列中填充随机数据,然后以这个自动生成列作为分区键。

???分区键支持多个列作为分区键,数据库自动通过这两个列计算出HASH值,然后决定分区位置。

???指定分区键之后,会生成hashmap,如果数据不均,可以通过调整hashmap,微调数据分布。这个是GP中目前没有看到的。

???当前ISAS测试中按msisdn号码作为分区键,如表中没有此字段,则用MCC+MNC+CC等字段拼接成的位置区号作为分区键。目的是为了使表记录按分区键的值均匀分布到各计算节点。

???哈希分区和Greenplum中每个表指定Distrubute?key类型。

?

2)表分区

???哈希分区的基础上,将同一范围的数据存放在同一范围。只支持RANGE分区。不支持LIST分区。

???表分区是在哈希分区的基础上进一步将表划分,查询的时候减少扫描的数据量,减少I/0。

???当前性能测试中未使用表分区。

???这个在Greenplum中ranger?表分区。

?