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出错。
相关推荐
greenplum 简介及数据库对比 。 greenplum hive infobright 对比。
- **主键**:DB2中的主键定义与GreenPlum/PostgreSQL相似,但需要注意的是,在GreenPlum/PostgreSQL中,主键约束通常会自动创建一个唯一索引。 - **外键**:DB2支持外键约束,但在GreenPlum/PostgreSQL中,外键约束...
标题中的“一个利用正则表达式分析出DB2、Greenplum、MySQL、Oracle、PostgreSQL和Te-HSP”指的是一个项目或工具,它使用正则表达式来解析和处理与这六种数据库系统相关的数据。这个项目可能涉及到数据提取、转换、...
由于没有提供更多关于GreenPlum的描述,我们无法确定其与DorisDB及ClickHouse的直接对比情况,但可以预见它在某些业务场景下具有独特的优势。 综合来看,在进行OLAP技术选型时,应考虑各种因素,包括数据库的性能、...
### Oracle与Greenplum数据交互的关键知识点 #### 1. 数据库分类与应用场景 - **OLTP(在线事务处理)**:主要用于日常业务操作,强调快速响应时间和事务处理能力,适用于前台应用程序,如银行交易系统。 - **OLAP...
《Greenplum与PostgreSQL数据库驱动详解》 在IT领域,数据库管理系统的高效运作是支撑企业数据处理和服务的核心。本文将深入探讨Greenplum和PostgreSQL两种数据库系统,以及它们对应的驱动包`greenplum-1.0.jar`的...
《Greenplum数据库驱动详解与应用》 Greenplum,作为一个高效、可扩展的企业级大数据分析平台,广泛应用于数据仓库和大数据处理场景。其强大的并行处理能力与优秀的性能表现,使得众多企业和开发者青睐有加。本文将...
《Greenplum数据库与Java连接实战指南》 在IT领域,大数据处理和分析已经成为不可或缺的一部分,而Greenplum作为一款高效、可扩展的并行数据库系统,被广泛应用于大规模数据仓库和数据分析场景。本文将围绕...
Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,因为有良好的体系结构,所以在数据存储,高并发,高可用,线性扩展,反应速度,易用性和性价比等方面有非常明显的优势,非常受欢迎.进入大数据...
"greenplum-jdbc-5.1.4.jar"是Greenplum数据库的JDBC驱动程序的一个版本,用于在Java环境中与Greenplum进行通信。 **Greenplum数据库** Greenplum是由Pivotal Software开发的一个高度可扩展的、并行处理的数据库...
本篇文章将重点介绍Greenplum的架构及其在与Hadoop结合时如何构建高效的数据解决方案。 **一、Greenplum概述** Greenplum是一款基于PostgreSQL的高性能并行数据库系统,由Pivotal公司开发,专门设计用于大数据分析...
本文将详细讨论如何通过Java连接到Greenplum数据库,并重点介绍“greenplum.jar.zip”这个压缩包中的核心组件——greenplum.jar,它是实现Java应用程序与Greenplum数据库交互的关键。 首先,让我们了解一下...
为了方便Java开发者与Greenplum数据库进行交互,Pivotal公司提供了Greenplum JDBC驱动,本次我们将深入探讨的是版本为5.1.4的JDBC驱动。 1. **Greenplum数据库简介** Greenplum是一种开源、分布式的关系型数据库...
绿盟(Greenplum)是一款基于MPP架构的开源大数据分析平台,专为大规模数据仓库和分析设计。它由Pivotal公司开发,现在成为Apache软件基金会的顶级项目。Greenplum提供了高度并行的数据处理能力,使得企业能够快速、...
分布与倾斜 Greenplum数据库依赖于跨节点的均匀数据分布。 插入, 更新, 和删除数据 这一节提供了Greenplum数据库中有关操纵数据和并发访问的信 息。 查询数据 本主题提供在Greenplum数据库中使用SQL的信息。 ...
### Greenplum数据库文档知识点详解 #### Greenplum数据库文档概述 Greenplum数据库文档是基于官方提供的资源,经过翻译和整理形成的中文版手册。该文档不仅内容详尽且易于理解,还特别注重实用性,旨在帮助用户更...
- **与开源Greenplum数据库的差异**:Greenplum 5.10.1可能在某些方面与其开源版本存在差异,文档会详细说明这些差异点,以帮助用户理解产品的不同之处。 - **支持的平台**:Greenplum官方文档会列出支持的硬件和...
Greenplum是基于PostgreSQL的开源分布式并行数据仓库,专为大数据分析而设计。在数据仓库的使用过程中,掌握一些常用函数对于提升工作效率和维护数据准确性至关重要。根据给定的文件内容,我们将详细介绍Greenplum中...
Greenplum可以与Hadoop生态系统无缝集成,允许用户在同一个环境中进行批处理和实时分析。 **Greenplum安装步骤** 1. **硬件与软件准备**:在安装Greenplum之前,需要确保硬件满足最低要求,包括足够的内存、CPU和...
Greenplum日常运维,针对运维dba,pivotal,postgresql