首页 > 云计算 > 开源云工具 > Greenplum基础
MPP(Massively Parallel Processing)架构是一种用于处理大规模数据的计算架构,它通过将任务分配给多个处理单元并行执行,以提高处理速度和性能。MPP 架构的由来可以追溯到对大规模数据处理需求的不断增长,传统的单一处理器或对称多处理器(SMP)架构无法满足这些需求。MPP 架构允许在大规模数据集上实现水平扩展,通过添加更多的处理单元来增加计算和存储能力。
一些知名的 MPP 数据库系统包括 Teradata、Greenplum、Amazon Redshift 等。这些系统广泛应用于企业数据仓库、商业智能和大数据分析等领域。总体而言,MPP 架构通过将任务分布到多个节点并行执行,以及有效地利用分布式存储和处理的方式,提供了一种高性能、可伸缩的数据处理解决方案,适用于处理大规模数据的场景。
Greenplum是基于开源PostgreSQL的分布式数据库,采用shared-nothing(共享无状态)架构,即主机、操作系统、内存、存储都是每台服务器独立自我控制,不存在共享。
Greenplum本质上是一个关系型数据库集群,实际上是由多个独立的数据库服务组合而成的一个逻辑数据库。这种数据库集群采取的是MPP(Massively Parallel Processing)架构,大规模并行处理。

GreenPlum数据库是由Master Server、Segment Server和Interconnect三部分组成,Master Server和Segment Server的互联使用Interconnect。
协调者(Coordinator) 和 Master 节点 是同一个概念,只是不同版本或文档中使用的术语不同。它们都指的是 Greenplum 集群中负责查询解析、任务分发和结果汇总的核心节点。
在较新版本的 Greenplum(特别是 Greenplum 6 及以后),官方文档逐渐采用 Coordinator(协调者) 这一术语取代Master,以更清晰地描述其功能。
在技术领域,“Master” 这一术语逐渐被认为不够中立或可能引发歧义,因此许多开源项目(如 Greenplum、PostgreSQL 等)开始采用更中立的术语,如 “Coordinator” 或 “Primary”。
“Coordinator” 更准确地描述了该节点的核心功能,即协调整个集群的工作,而不是“主从”关系中的“主”。
Greenplum是一个关系型数据库,是由数个独立的数据服务组合成的逻辑数据库,整个集群由多个数据节点(Segment Host)和控制节点(Master Host)组成。在典型的Shared-Nothing中,每个节点上所有的资源的CPU、内存、磁盘都是独立的,每个节点都只有全部数据的一部分,也只能使用本节点的数据资源。
在Greenplum中,需要存储的数据在进入到表时,将先进行数据分布的处理工作,将一个表中的数据平均分布到每个节点上,并为每个表指定一个分布列(Distribute Column),之后便根据Hash来分布数据,基于Shared-Nothing的原则,Greenplum这样处理可以充分发挥每个节点处IO的处理能力。
Master/Coordinator节点是整个系统的控制中心和对外的服务接入点,它负责接收用户SQL请求,将SQL生成查询计划进行并行处理优化,然后将查询计划分配到所有的Segment节点并进行处理,协调组织各个Segment节点按照查询计划一步一步地进行并行处理,最后获取到Segment的计算结果,再返回给客户端。
从用户的角度看Greenplum集群,看到的只是Master节点,无需关心集群内部的机制,所有的并行处理都是在Master控制下自动完成的。Master节点一般只有一个或二个。

Segment节点是Greenplum执行并行任务的并行计算节点,它接收Master的指令进行MPP并行计算,因此所有Segment节点的计算性总和就是整个集群的性能,通过增加Segment节点,可以线性化得增加集群的处理性能和存储容量,Segment节点可以是1~10000个节点。
Mirror 是 Segment 的冗余副本,用于保障高可用性。当 Primary Segment 故障时,Mirror 会自动接管服务。

Interconnect是Master节点与Segment节点、Segment节点与Segment节点之间进行数据传输的组件,它基于千兆交换机或者万兆交换机实现数据再节点之间的高速传输。
外部数据在加载到Segment时,采用并行数据流进行加载,直接加载到Segment节点,这项独特的技术是Greenplum的专有技术,保证数据在最短时间内加载到数据库中。
官方介绍的Greenplum架构:

psql 命令登录gp,psql/命令用法可以通过 psql --help 查看帮助信息。
psql 命令格式为:psql -h hostname -p port -d database -U user -W password
一般直接psql默认登录就可以:
远程客户端登录gp
配置其他用户或者客户端远程登陆gp,需要配置以下2个文件:
| 类型 | 长度 | 描述 | 范围 |
|---|---|---|---|
| bigint | 8字节 | 大范围整数 | -9223372036854775808 到 +9223372036854775807 |
| smallint | 2字节 | 小范围整数 | -32768到+32767 |
| integer(int) | 4字节 | 常用整数 | -2147483648 到 +2147483647 |
| decimal | 可变长 | 用户指定的精度,精确 | 小数点前 131072 位;小数点后 16383 位 |
| real | 4字节 | 可变精度,不准确 | 6位十进制数字精度 |
| double precision | 8字节 | 可变精度,不准确 | 15位十进制数字精度 |
| smallserial | 2字节 | 自增的小范围整数 | 1到32767 |
| serial | 4字节 | 自增整数 | 1到2147483647 |
| bigserial | 8字节 | 自增的大范围整数 | 1到9223372036854775807 |
| character | 别名char | 定长,不足补空白 | |
| character | varying | 别名varchar | 可变长,有长度限制 |
| text | 可变长 | 无长度限制 | |
| timestamp | 8字节 | 日期和时间,无时区 | 4713 BC到294276 AD |
| timestamp with time zone | 8字节 | 日期和时间,有时区 | 4713 BC到294276 AD |
| date | 4字节 | 只用于日期 | 4713 BC到5874897 AD |
| boolean | 1字节 | true/false | |
| money | 8字节 | 货币金额 | -92233720368547758.08 到 +92233720368547758.07 |
example:
枚举类型是一个包含静态和值的有序集合的数据类型,类似于Java中的enum类型,需要使用create type命令创建。
原文作者:Aimyon_36;如有侵权,请联系管理员删除。