Comparison of DB2 and GreenPlum

DB2 and GreenPlum Comparison
Architecture:
Both are MPP, SHARE NOTHING
Type:
DB2 RDBMS + Object Storage Extension + XML
GP ORDBMS (Object Relational Database Management System)
Features:
Extensibility --> Both have good scalability, node increase, performance Linear improvement
(DB2 partition database feature, GP multi-segment feature)
applicability --> all are suitable for the construction of large data warehouse systems, OLAP application
availability --> after both support expansion, the distribution of node data can be online and offline Completed, the occupation of resources in this process can be controlled artificially.
Support for BI:
DB2 provides rich data loading, import and export, and rules restrict
GP. Insufficient tools for ETL process of massive data

 

 

Greenplum vs. DB2 DPF

 

1. General structure description:

(1)Greenplum: 

 

MPP architecture (Massively Parallel Processing): massively parallel processing system.

The entire system is a set of independent database arrays. Each database is independent of each other, with independent data storage, logs, indexes, etc.

There are two types of HOST in the cluster, one is MASTER HOST and the other is SEGMENT HOST. MASTER HOST

It does not store data, only stores the global system catalog (stores some metadata of the data itself), is responsible for client connections, processes SQL commands, distributes SEMENT tasks, summarizes the results returned by SEGMENT, and displays the final results to the client program.

SEGMENT HOST stores user data and indexes. Multiple INSTANCEs can be deployed on the same HOST based on hardware (CPU core, network, etc.), and two INSTANCEs on the same SEGMENT HOST cannot be directly accessed.

(2)DB2 DPF:

 

The DPF architecture is similar to the MPP architecture. Each database has independent log, engine, lock, and cache management. Data is exchanged between servers through 10G switches. Servers access each other through share_memory. Server 16core, each core corresponds to 8G memory, a RAID group.

 

 

Summary: The biggest feature of the MPP structure is that it does not share resources. The node only accesses its own memory and storage, and the information interaction between nodes is parallel to the processing of the nodes. The performance of MPP can basically achieve linear expansion when adding nodes. MPP systems do not share resources, so when a certain scale is reached, there are more resources than SMP. Because the MPP system needs to transmit information between different processing units, when the communication time is relatively small, MPP can give full play to its resource advantages and achieve high efficiency.

 

2. Database core technology (multi-dimensional partition or hybrid partition brought by parallel data flow engine):

In the MPP architecture, the parallel processing problem of each node is solved. Greenplum and ISAS both take the same idea: table partitioning is to put a complete table on different nodes as balanced as possible through the HASH algorithm.

 

 

The following describes the multidimensional partitioning of ISAS and Greenplum:

1) Hash partition

   Partition key, this must be specified, there is no concept similar to random partition in GP. If there is no suitable column as the partition key, you can add an automatically generated column to the table, fill the column with random data, and then use this automatically generated column as the partition key.

   The partition key supports multiple columns as the partition key. The database automatically calculates the HASH value through these two columns, and then determines the partition position.

   After specifying the partition key, a hashmap will be generated. If the data is uneven, you can fine-tune the data distribution by adjusting the hashmap. This is not seen in GP so far.

   In the current ISAS test, the msisdn number is used as the partition key. If there is no such field in the table, the location area code composed of fields such as MCC+MNC+CC is used as the partition key. The purpose is to make the table records evenly distributed to each computing node according to the value of the partition key.

   Hash partitioning and specifying the Distrubute key type for each table in Greenplum.

 

2) Table partition

   On the basis of hash partitioning, data of the same range is stored in the same range. Only RANGE partitions are supported. LIST partitioning is not supported.

   Table partitioning is to further divide the table on the basis of hash partitioning, reduce the amount of scanned data and reduce I/0 when querying.

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

   这个在Greenplum中ranger 表分区。

 

3)多维聚族索引(MDC)

物理上将多个维上具有类似值的行聚集在一起放在磁盘上。

这个和表分区有两个主要的区别,首先,所有的索引一定是固定的值,不能像表分区一样是范围,另外,数据库内部是通过索引映射实现的。

当前BSASE表中,所有批次数据存放在同一张表中,60分钟汇聚使用starttime,批次号作为多维聚簇。这样汇聚的时候只会取需要汇聚的4部分数据。

这个和Greenplum中list表分区。

 

ISAS 的3个分区模式可以根据条件组合使用。

 

 

其中ISAS表可以指定分区。维度表可以指定存在0分区上,然后通过表复制,32个分区上就都有维度表的数据。事实表和维度表非分区键合并连接时,避免在分区之间发送数据,从而提高查询性能。

 

另外,还可以通过MQT(物化查询表)实现同样的功能。

MQT,物化查询表,依查询结构而定,可以认为是一种物化的试图,数据可以来自一个或者多个视图。

哈希分区和GP类似。

表分区和Greenplum range类似,多维聚簇, Greenplum中list表分区。

 

 

3、两种MPP数据的细节区别:

两种都是MPP架构的数据。设计思路类似,但是一些细节上还是有一些区别。下面简单说明下:

3.1 数据装载:

Greenplum MASTER节点只承担少量控制功能以及和客户度的交互,完全不承担任何计算。ISAS装载必须有admin节点来完成,通过admin节点上其多进程对数据进行分发。装载需要消耗一定的性能(目前看测试20G文件转载1分钟左右,CPU 33%)。与之相反的是Greenplum在数据装载时,不是我们一般想象的存在一个中心的数据分发节点,而是所有节点同时读取数据,然后根据hash算法,将属于自己的数据留下,将其他的节点的数据通过网络直接传送给他,所以数据装载的速度非常快。

 

 

 

3.2 HA架构:

(1)Greenplum的HA架构:

 

MSATER是通过单独的HOST做备份冗余。最大的特点是segment通过mirror镜像来实现冗余。segment镜像和segment一定保存在不同的host上,master如果连接不上,就标记为Invalid,下次连接上了,就标记为valid状态。

系统如果没有配置mirror,master检测invalid的segment时,就会关闭数据库,来保证数据不出错。如果系统配置了镜像,那么系统在read-only模式和continue模式下处理模式不同,前面不允许DDL和DML操作,可以在线恢复。

后者的操作必须限制在非invalid的segment上的数据,而且invalid的segment恢复时必须重启数据库系统。master镜像就是master的在线standby,因为master上面只保存目录表和系统日志,因此在standby上面一个事务重复记录进程(gpsyncagent连接master以同步,一旦master连不上即坏掉,该进程停止工作,并让standby从master上一个成功事务操作之后开始接管系统(PS:master出故障前,standby上面只gpsyncagent一个进程运行。

 

(2)ISAS HA结构:

通过操作系统或者第三方的软件实现HA。

 

 

 

3.3数据存储:

ISAS只支持行存储。

Greenplum支持混合存储:

(1) 普通的行存储,支持读写。普通的堆积表。

(2) AOT表,行存储,只读,不支持update,delete,可选压缩。

(3) AOT表列存储,只读,不支持update,delete,支持压缩。

列存储的优势是在于适合宽表设计,在查询只查询部分字段的情况下,效率高于行模式。(因为只需要读出相应的列,减少I/O),同时因为都是同样的数据类型,所以更容易压缩。

 

3.4 数据压缩技术:

ISAS压缩基于表级别,目前不能指定压缩级别。提供类似Winzip的压缩级别。ISAS压缩的特点是不光对数据进行压缩。索引和临时表也会自动压缩。目前ISAS宣称的压缩比例是 60~70%。

Greenplum支持两种压缩算法ZLIB,压缩比比较高,提供1到9个级别,数字越大,压缩比越高,一种QUICKLZ,压缩比小,对应的带来的CPU负荷低。

最新的4.2版本提供一种RLE的新的基于列的压缩算法,提供基于列级别的压缩。

 

3.5索引技术:

ISAS只支持B+索引。

Greenplum支持三种索引B-Tree,Bitmap,hash,第三种不推荐使用。

B-Tree:

用在完全不同的列。

用于单列查询。

Bitmap:

低基数列。

列被作为查询的谓语。

Hash:

可以,但是不推荐。

 

还可以指定对语句建部分索引。

索引影响insert,update,创建的时候消耗CPU。

 

创建索引遵守的原则:

 

 

(1)不要把给经常变更的列建索引。全表扫描性能不好时才需要创建索引。

(2)不要建重复的索引并给索引命名。

(3)低基数的列用bitmap索引。单列的查询使用B-Tree索引。

(4)加载数据的时候先drop掉索引,加载之后再重新创建索引。

(5)扫描一个大表的子集时,使用部分索引。

(5)重创建索引执行执行Analyze。

 

 

3.6 Workload manager

 

队列的限制包括:活动的声明计数,活动声明的内存,活动的声明权限,活动声明的花费

Work load manager是数据仓库提供的负载均衡工具。

可以通过设置CPU(百分比),内存(优先级),I/O(优先级),给不同任务。动态的分配资源给不同的任务。

 

GP有类似的resource queue的概念。Resource queue可以配置以下限制:

Active statement count

Active statement memory

Active statement priority

Active statement cost 这个是查询计划估计的,以获取磁盘Page为单元。

 

resource queue 通过设置内存(指定每个statement的内存大小和resource queue的总大小,每个statement 一旦运行,就分配了所有指定的内存直到结束。)

 

GP中CPU是设置优先级和ISAS有区别。

3.8在线扩容:

支持在线扩容,扩容时,表数据需要重新分布。重分布时,是一张一张表进行。正在进行数据重分布的表,不能加载数据。这个类似GP,GP进行数据重分布时,正在重分布的表不能读写。另外GP会自动去掉唯一性限制,所以在表重分布时,碰到重复的行不会报错,所以可能导致ETL出错。

 

 

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 表分区。

 

3)多维聚族索引(MDC)

物理上将多个维上具有类似值的行聚集在一起放在磁盘上。

这个和表分区有两个主要的区别,首先,所有的索引一定是固定的值,不能像表分区一样是范围,另外,数据库内部是通过索引映射实现的。

当前BSASE表中,所有批次数据存放在同一张表中,60分钟汇聚使用starttime,批次号作为多维聚簇。这样汇聚的时候只会取需要汇聚的4部分数据。

这个和Greenplum中list表分区。

 

ISAS 的3个分区模式可以根据条件组合使用。

 

 

其中ISAS表可以指定分区。维度表可以指定存在0分区上,然后通过表复制,32个分区上就都有维度表的数据。事实表和维度表非分区键合并连接时,避免在分区之间发送数据,从而提高查询性能。

 

另外,还可以通过MQT(物化查询表)实现同样的功能。

MQT,物化查询表,依查询结构而定,可以认为是一种物化的试图,数据可以来自一个或者多个视图。

哈希分区和GP类似。

表分区和Greenplum range类似,多维聚簇, Greenplum中list表分区。

 

 

3、两种MPP数据的细节区别:

两种都是MPP架构的数据。设计思路类似,但是一些细节上还是有一些区别。下面简单说明下:

3.1 数据装载:

Greenplum MASTER节点只承担少量控制功能以及和客户度的交互,完全不承担任何计算。ISAS装载必须有admin节点来完成,通过admin节点上其多进程对数据进行分发。装载需要消耗一定的性能(目前看测试20G文件转载1分钟左右,CPU 33%)。与之相反的是Greenplum在数据装载时,不是我们一般想象的存在一个中心的数据分发节点,而是所有节点同时读取数据,然后根据hash算法,将属于自己的数据留下,将其他的节点的数据通过网络直接传送给他,所以数据装载的速度非常快。

 

 

 

3.2 HA架构:

(1)Greenplum的HA架构:

 

MSATER是通过单独的HOST做备份冗余。最大的特点是segment通过mirror镜像来实现冗余。segment镜像和segment一定保存在不同的host上,master如果连接不上,就标记为Invalid,下次连接上了,就标记为valid状态。

系统如果没有配置mirror,master检测invalid的segment时,就会关闭数据库,来保证数据不出错。如果系统配置了镜像,那么系统在read-only模式和continue模式下处理模式不同,前面不允许DDL和DML操作,可以在线恢复。

后者的操作必须限制在非invalid的segment上的数据,而且invalid的segment恢复时必须重启数据库系统。master镜像就是master的在线standby,因为master上面只保存目录表和系统日志,因此在standby上面一个事务重复记录进程(gpsyncagent连接master以同步,一旦master连不上即坏掉,该进程停止工作,并让standby从master上一个成功事务操作之后开始接管系统(PS:master出故障前,standby上面只gpsyncagent一个进程运行。

 

(2)ISAS HA结构:

通过操作系统或者第三方的软件实现HA。

 

 

 

3.3数据存储:

ISAS只支持行存储。

Greenplum支持混合存储:

(1) 普通的行存储,支持读写。普通的堆积表。

(2) AOT表,行存储,只读,不支持update,delete,可选压缩。

(3) AOT表列存储,只读,不支持update,delete,支持压缩。

列存储的优势是在于适合宽表设计,在查询只查询部分字段的情况下,效率高于行模式。(因为只需要读出相应的列,减少I/O),同时因为都是同样的数据类型,所以更容易压缩。

 

3.4 数据压缩技术:

ISAS压缩基于表级别,目前不能指定压缩级别。提供类似Winzip的压缩级别。ISAS压缩的特点是不光对数据进行压缩。索引和临时表也会自动压缩。目前ISAS宣称的压缩比例是 60~70%。

Greenplum支持两种压缩算法ZLIB,压缩比比较高,提供1到9个级别,数字越大,压缩比越高,一种QUICKLZ,压缩比小,对应的带来的CPU负荷低。

最新的4.2版本提供一种RLE的新的基于列的压缩算法,提供基于列级别的压缩。

 

3.5索引技术:

ISAS只支持B+索引。

Greenplum支持三种索引B-Tree,Bitmap,hash,第三种不推荐使用。

B-Tree:

用在完全不同的列。

用于单列查询。

Bitmap:

低基数列。

列被作为查询的谓语。

Hash:

可以,但是不推荐。

 

还可以指定对语句建部分索引。

索引影响insert,update,创建的时候消耗CPU。

 

创建索引遵守的原则:

 

 

(1)不要把给经常变更的列建索引。全表扫描性能不好时才需要创建索引。

(2)不要建重复的索引并给索引命名。

(3)低基数的列用bitmap索引。单列的查询使用B-Tree索引。

(4)加载数据的时候先drop掉索引,加载之后再重新创建索引。

(5)扫描一个大表的子集时,使用部分索引。

(5)重创建索引执行执行Analyze。

 

 

3.6 Workload manager

 

队列的限制包括:活动的声明计数,活动声明的内存,活动的声明权限,活动声明的花费

Work load manager是数据仓库提供的负载均衡工具。

可以通过设置CPU(百分比),内存(优先级),I/O(优先级),给不同任务。动态的分配资源给不同的任务。

 

GP有类似的resource queue的概念。Resource queue可以配置以下限制:

Active statement count

Active statement memory

Active statement priority

Active statement cost 这个是查询计划估计的,以获取磁盘Page为单元。

 

resource queue 通过设置内存(指定每个statement的内存大小和resource queue的总大小,每个statement 一旦运行,就分配了所有指定的内存直到结束。)

 

GP中CPU是设置优先级和ISAS有区别。

3.8在线扩容:

支持在线扩容,扩容时,表数据需要重新分布。重分布时,是一张一张表进行。正在进行数据重分布的表,不能加载数据。这个类似GP,GP进行数据重分布时,正在重分布的表不能读写。另外GP会自动去掉唯一性限制,所以在表重分布时,碰到重复的行不会报错,所以可能导致ETL出错。

 

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326539692&siteId=291194637
db2
db2