分布存储
Greenplum是一个分布式数据库系统,因此其所有的业务数据都是物理存放在集群的所有Segment实例数据库上;在Greenplum数据库中所有表都是分布式的,所以每一张表都会被切片,每个Segment实例数据库都会存放相应的数据片段。在下图中sale、customer、vendor、product四张表的数据都会切片存放在所有的Segment上,所有Segment实例同时工作,由于每个Segment只需要计算一部分数据,所以计算效率会大大提升。
表分布的策略-并行计算的基础
Hash分布
语法格式:
CREATE TABLE … DISTRIBUTED BY (column [,…])
同样数值的内容被分配到同一个Segment上;当选择Hash分布策略时,可指定表的一列或者多列组合。GP会根据指定的Hash Key列计算每一行数据对应的Hash值,并映射至相应的Segment实例。当选择的Hash Key列的值唯一时,数据将会均匀地分散至所有的Segment实例。GP数据库默认采用Hash分布,如果创建表时未指定Distributed Key,则会选择Primary Key作为Distributed Key,如果Primary Key也不存在,则会选择表的第一列作为Distributed Key。