1.1 架构图示
在以上的架构中可以看出Greenplum主要是由Master和Segment组成的,Master承担生成查询计划并派发汇总执行结果,Segment是执行查询计划及数据储存管理。集群可以直接加载外部的数据。
官网请查看:https://greenplum.org/
Greenplum官方文档:https://gp-docs-cn.github.io/docs/common/gpdb-features.html
1.2 Master主机与Segment主机任务
Master主机负责 | Segment主机负责 |
1. 建立与客户端的会话连接和管理 | 1. 业务数据的存储和存取 |
2.sql的解析并形成分布式的执行计划 | 2.执行由master分发的sql语句 |
3.将生成好的执行计划分 | 3.对于master来说,每个 |
4.收集Segment的执行结果 | 4.每一台机器上可以配置 |
5.master不存储业务数据, | 5.由于每个Segment都是对 |
6.master主机可以一主一备, | 6.Segment分primary 和mirror两种, |
7.为了提高性能,master最好 |
|
1.3 数据库分布键分布数据策略
由于greenplum数据库是个分布式数据库,数据分布在每一个segment节点上,其中数据的分布策略有两种分别是hash分布于随机分布。
1.3.1 HASH策略
Hash分布是利用Distributed by (filed1,filed2....) 做为数据分布的条件,计算hash值,并通过hash值路由到制定的segment上,如果不指定分布键,默认的是获取第一个字段作为分布键。在字段作为分布键时,该字段的值尽量是唯一的,这样才能分布的均匀,效率会更高,否则会降低数据库的想能。
1.3.2 随机分布
随机分布也叫平均分布。数据会随机的落在每一个segment节点上,不管数据内容是什么格式都会落到segment上,在SQL查询数据,数据会重新分布,性能会比较差,随机分布的用法为Distributed randomly;
1.4 master主节点获取segment节点上的数据顺序
Master在执行sql语句时由于数据切分放在每个segment上,master获取结果的顺序是segment提交的顺序,segment提交到master的顺序是随机的,就会导致一样的数据每次的查询结果顺序不一致,这也是与其他的数据不一样的地方。