了解Greenplum(1)
了解系列废话:
数据管理系统实现,以Greenplum作为课后实验,这里将实验报告贴出来,纯粹灌水。
1.Greenplum架构
如上图所示,GP的基本结构是单master,多slave节点,客户端连接到master节点,master节点可以配置一个备机。多个segment节点都有主备两个数据区,镜像数据区存放的的是其他segment上的数据,只是目前看来,GP允许一个segment的失效,若有多个节点失效,有可能有的数据找不到镜像。节点间并不共享使用数据,而是通过internect模块相互通信。所有的客户端都是连接到master节点上,因此为了降低master的负载,master上执行的动作不会太多,只负责执行计划生成、分发、收集结果,数据字典管理,不承担数据的处理,存放等。Segment负责业务数据的存取、执行master发送过来的sql语句,彼此间对等。
2.Greenplum基本使用
首先根据教程安装好GP系统,参考了网络上的一篇博客教程:Greenplum 源码安装教程 —— 以 CentOS 平台为例http://www.cnblogs.com/arthurqin/p/5849354.html
GP安装好,并使用gpinitsystem 命令完成初始化之后,使用 psql -d postgres 可以开始使用GP。GP有一些基本命令如下:
GP服务启停
gpstart :启动GP服务。当虚拟机关闭重新登录时需要此命令。
gpstop :关闭GP服务。
gpstop -M fast :快速关闭。
gpstop –r :重启。
gpstop –u :重新加载配置文件。
登录与退出GP客户端
登录:
psql databasename
psql -d databasename -h hostname -p port -U gpusername
退出: \q
查看系统库版本
数据库基本操作
创建、删除数据库
在GP初始化系统后,GP会自动创建出三个数据库postgre,template0,template1.
其中postgre用作系统内部数据的存放,既不要删除它,也不要修改它。template1是系统默认的数据,创建数据库时可以以template1为模板,创建新的数据库。template0数据库是创建template1的模板。
命令:CREATE DATABASE dbname ; DROP DATABASE dbname;
GP基本sql语法
创建简单的表
列出数据库中所有的表
查看查询计划
基本SQL语法查看方式,使用帮助
GP的SQL语法特殊说明:
A.Create table:
GP的建表语句与通常的数据库语句基本一致,但是作为分布式数据库,有一些不同的地方。 1.建表时需要制定分布键distributed by,用以散列数据到不同的segment节点;2.partition by用某个字段将表建成分区表;3.like操作创建与like的表一样的结构;4.inherits可实现表的继承。
B.SELECT
GP的select语句,与普通数据库语句一样,但是可以不指定from语句,执行函数和简单的计算。在没有添加order by子句的时候,select的结果不能保证顺序,并且两次查询的结果也不一定是一样的。
查看数据分布
C.INSERT、UPDATE/DELETE
与标准Sql用法相同。Insert语句分布键要为空,否则数据都被保存在一个节点上,造成数据分布不均匀。Insert采用批量操作,可以提升执行速度,如isnert into values(),(),()。Update 不能对分布键进行更新。 Delete 在4.3版本中支持设计子查询语句,且子查询的结果设计数据重分布。TRUNCATE直接删除物理文件,然后重建新数据文件,对整张表删除更快,例truncate tbname。
3.Greenplum系统表含义
pg_class:
GP数据字典中最重要的一个系统表,保存着所有的表、试图、索引的元数据信息,每个DDL/DML操作都必须跟这个表发送联系。
字段 |
类型 |
引用 |
字段说明 |
oid |
oid |
pg_class中的唯一标识 |
|
relname |
name |
表、索引、视图等的名称 |
|
relnamespace |
oid |
pg_namespace.oid |
包含这个关系的名字空间的oid |
reltype |
oid |
pg_type.oid |
对应这个表的行类型的数据类型(索引为0,没有此项) |
relowner |
oid |
pg_authid.oid |
关系的所有者 |
Relam |
oid |
pg_am.oid |
索引的访问模式(B-tree/hash等) |
Reltuples |
float4 |
表中行的数目。估计值。 |
|
relhasindex |
bool |
是表且至少有一个索引为true |
|
relkind |
char |
r=普通表或appendonly表,i=索引,s=序列,v=视图,c=复合类型,t=TOAST表,o=内存appendonly文件,u=未列入目录的临时表。 |
|
relnatts |
Int2 |
关系中用户字段数目(除了关系中的系统字段)。 |
|
relacl |
Aclitem[] |
访问权限 |
pg_atrribute:
这个表记录了关系的字段的内容。表中实际上有一些隐藏字段如记录; 数据保存在哪个segment上的gp_segment_id。
字段 |
类型 |
引用 |
字段说明 |
attrelid |
oid |
pg_class.oid |
此字段所属的表 |
attname |
name |
字段名称 |
|
atttype |
oid |
pg_type.oid |
此字段的数据类型 |
attstattarget |
int4 |
控制ANALYZE为这个字段积累的统计细节的级别。0表示不收集统计信息。 |
|
attlen |
Int2 |
pg_type.typlen的副本 |
|
attnum |
int2 |
字段数目。从1开始计数 |
|
attisdropped |
bool |
字段删除标记 |
|
attnonull |
bool |
非空约束 |
|
attndims |
int4 |
字段为数组,表示维数。 |
gp_distribution_policy:
保存着表的分布键。
字段名 |
引用 |
字段说明 |
localoid |
pg_class.oid |
表的oid |
ocaloid |
pg_attribute.attnum |
保存分布键对应的attnum的一个数组 |
pg_stats:
数据库中表的统计信息保存在pg_statistic,由ANALYZE创建记录。在这个表pg_statistic的上面有一个视图pg_stats;
字段 |
类型 |
引用 |
字段说明 |
schemaname |
name |
pg_namespace.nspname |
包含此表的的模式名称(名字空间) |
tablename |
name |
pg_class.relname |
表的名称 |
attname |
name |
pg_attribute.attname |
这一条记录描述的字段的名称 |
null_frace |
real |
记录中字段为空的百分比 |
|
avg_width |
integer |
记录以字节为单位的平均宽度 |
|
most_common_vals |
anyarray |
一个字段中最常用数值的列表。没有数值比较常见则为NULL。 |
4.参考
关于GP的参考资料,首先最好的当然是去官网上有详尽的资料,可以去参考doc目录下的内容,各种手册还是比较详细的。
官网: https://pivotal.io/big-data/pivotal-greenplum
另外若需要先刷一下中文资料,可以参考《Greenplum企业应用实战》。这个资料好像csdn上有,我也给分享了百度云连接。里面还有一个ppt,算是DBA培训手册。
https://pivotal.io/big-data/pivotal-greenplum
其他,阿里云栖社区,有些话题会讨论greenplum,也可以逛逛。但是我尝试里面的一篇文章,扩展segment节点,没能成功/(ㄒoㄒ)/~~。
了解Greenplum(1)的更多相关文章
- Greenplum 的分布式框架结构
Greenplum 的分布式框架结构 1.基本架构 Greenplum(以下简称 GPDB)是一款典型的 Shared-Nothing 分布式数据库系统.GPDB 拥有一个中控节点( Master ) ...
- 海量数据处理利器greenplum——初识
简介及适用场景 如果想在数据仓库中快速查询结果,可以使用greenplum. Greenplum数据库也简称GPDB.它拥有丰富的特性: 第一,完善的标准支持:GPDB完全支持ANSI SQL 200 ...
- GreenPlum高效去除表重复数据
1.针对PostgreSQL数据库表的去重复方法基本有三种,这是在网上查找的方法,在附录1给出.但是这些方法对GreenPlum来说都不管用. 2.数据表分布在不同的节点上,每个节点的ctid是唯一的 ...
- 实现从Oracle增量同步数据到GreenPlum
简介: GreenPlum是一个基于PostgreSQL数据库开发的MPP架构的数据库仓库,适用于OLAP系统,支持50PB(1PB=1000TB)级海量数据的存储和处理. 背景: 目前有一个业务是需 ...
- Greenplum 源码安装教程 —— 以 CentOS 平台为例
Greenplum 源码安装教程 作者:Arthur_Qin 禾众 Greenplum 主体以及orca ( 新一代优化器 ) 的代码以可以从 Github 上下载.如果不打算查看代码,想下载编译好的 ...
- 大数据系列-java用官方JDBC连接greenplum数据库
这个其实非常简单,之所以要写此文是因为当前网上搜索到的文章都是使用PostgreSQL的驱动,没有找到使用greenplum官方驱动的案例,两者有什么区别呢? 一开始我也使用的是PostgreSQL的 ...
- Greenplum安装
最近需要安装Greenplum测试一些东西,在安装过程中出现了许多问题,所以在这里将安装过程整理一下,主要参考<Greenplum企业应用实践>和http://jxzhfei.blog.5 ...
- Greenplum查询计划分析
这里对查询计划的学习主要是对TPC-H中Query2的分析. 1.Query的查询语句 select s_acctbal, s_name, n_name, p_partkey, p_mfgr, s_a ...
- Greenplum 数据库安装部署(生产环境)
Greenplum 数据库安装部署(生产环境) 硬件配置: 16 台 IBM X3650, 节点配置:CPU 2 * 8core,内存 128GB,硬盘 16 * 900GB,万兆网卡. 万兆交换机. ...
- Greenplum测试环境部署
1.准备3台主机 本实例是部署实验环境,采用的是Citrix的虚拟化环境,分配了3台RHEL6.4的主机. |------|------| |Master|创建模板后,额外添加20G一块磁盘/dev/ ...
随机推荐
- php 单示例编程
<?php defined('SYSPATH') or die('No direct script access.'); class Kohana_BOTA { //私有构造方法,防止再次实例化 ...
- 原生JS获取元素宽高实践详解
开篇的话 任何不是亲身实践中求得的知识,都不是属于你的.任何求得的知识不去时常温习运用,也不是属于你的. 记录由来 在做个上拉广告功能中遇到了一个"理所当然"觉得对的用法,慢慢才排 ...
- PHP代码修改后提交,无法立即生效
今天遇到一个坑爹的问题,就是我修改了PHP代码,提交到网站根目录以后,刷新浏览器居然无法立即生效,差不多得一分钟的样子再去刷新,才会看到更改后的效果. 出现这个问题的原因,是因为手头的项目需要较高的P ...
- Linux内核调试方法总结之死锁问题分析
死锁问题分析 死锁就是多个进程(线程)因为等待别的进程已占有的自己所需要的资源而陷入阻塞的一种状态,死锁状态一旦形成,进程本身是解决不了的,需要外在的推动,才能解决,最重要的是死锁不仅仅影响进程业务, ...
- 二十四、python中sys模块
'''1.sys.argv:命令行参数List,第一个元素是程序本身路径''' import sys print (sys.argv)-------------------------------[' ...
- windows传输文件到linux脚本
安装pscp https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html cmd脚本 @echo off rem 拷贝的文件名称 se ...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_8_使用try_catch_finally处理流中的异常
变量没有初始化的赋值 变量可能赋值会失败.设置fw为null.close报错 把close也用try catch捕获异常 修改写入w盘.实际盘符没有这个 上面异常是这里打印的 继续优化代码
- Java ——JDBC数据库编程
数据库分类 关系型数据库:以表来存放数据的,数据与数据之间的关系通过表之间的连接体现 面向对象的数据库:保存的是对象本身 其它 数据库:数据库管理系统中创建一个个的保存数据的单位 数据是保存在数据库的 ...
- Noi2018 归途
zz:https://blog.csdn.net/dreaming__ldx/article/details/81106748 以海拔为第一关键字对边进行从大到小的排序,然后修建kruskal重构树, ...
- 应用安全 - Web安全 - 上传漏洞 - 攻防
客户端绕过 抓包改包(先上传一个gif类型的木马,然后通过burp将其改为asp/php/jsp后缀名即可) 服务端校验 content-type字段校验 文件头检验(常见文件头: () .JPEG; ...