Greenplum简介
MPP是Massively Parallel Processing,即大规模并行处理。
Greenplum是建立在MPP框架之上的大数据并行处理数据库。
Greenplum是承载多个Postgresql实例的平台,对Psql进行多节点并发的改造,从而实现大数据并发的数据处理。
数据重分布、广播–数据迁移
顾名思义,数据迁移就是数据的迁移。
并发数据库架构MPP的重要特点就是,关联数据在不同的节点之上,这种情况对于普通关系型数据库来说是没办法的,可是MPP可以通过数据迁移实现。
分布键
哈希分布和随机分布
对于减小数据库开销和增加效率来说我们有几种方法:
1、分区
主要是为了缩小query所需要扫描的数据
greenplum支持LIST和RANGE两种分区类型
2、索引
避免全局扫描,快速定位到所关联的数据
3、设计适当的模式和search_path
使得不同用户在操作表时快速定位到模式和表
4、设计适当的分布键
(1)尽量选择经常需要JOIN的列:当关联键和分布键均一致时,可以在 Segment 中完成 JOIN,不需要重分布或者广播小表;当关联键和分布键不一致时,则需要重分布不一致的表或者广播小表,带来额外的开销。
(2)尽量选择分布均匀的列或者多列:若选择的分布列值分布不均匀,则可能导致数据倾斜。某些 Segment 非常大(压力大)某些 Segment 非常小。根据木桶原理,时间消耗会卡在数据多的节点上。
(3)尽量选择高并发查询的条件列(指该查询条件产生的中间结果集小的,如果中间结果集很大,那就让所有节点都来参与运算更好,因此不选)如果数据经常被高并发的键值或离散查询,可以将查询条件的列作为分布列,这样不需要连接到所有的 Segment 去查,可以大大提高并发能力。
(4)不要轻易使用随机分布
基本用法:
\h获取具体命令的语法,比如
\h create table
建库:
CREATE DATABASE newname USING TEMPLATE tmplatedbname;
建模式:
CREATE SCHEMA schema_name;
(在哪个用户下建立的,就只能哪个用户访问除了gpadmin,也可以设置权限,以及搜索路径search_path)
建用户:
CREATE ROLE role_name WITH PASSWORD ‘***’;
我们也可以把一个用户赋予另一个用户
CREATE ROLE role_name CREATEROLE CREATEDB;
GRANT role_name TO role_name1,role_name2;
那么role_name1和2就可以使用和role_name一样的权限
建表:
在Greenplum中建表时需要指定表的分布键。
如果表需要用某个字段分区,可以通过partition by将表建成分区表。
可以使用like操作创建与like的表一样结构的表,功能类似
create table t1 as select*from t2 limit 0。
可以使用inherits实现表的继承,具体的实现可以参考postgreSQL文档。
CREATE TABLE test01(id int primary key,name varchar(128)) distrubuted(id);
数据类型
任意精度的数值
无限制长度文本
几何图元
IP地址与IPv6地址
无类域间路由地址块,MAC地址
数组
查询语句可以不指定from,比如在执行函数的时候
select greatest(1,2)
explain用于查询一个表的执行计划
insert可以批量操作,但是分布键不可以为空,否则分布键默认为null
update不能对分布键进行批量执行
delete整张表建议使用TRUNCATE
du -h --max-depth=1
查看文件夹大小
psql -d [dbname] -f **.sql
在greenplum中安装插件