GP数据库知识点总结
2022-04-20 14:42:37 0 举报
AI智能生成
为你推荐
查看更多
GP数据库知识点总结
作者其他创作
大纲/内容
Greenplum(以下简称GP)是一款开源数据仓库。基于开源的PostgreSQL改造,主要用来处理大规模数据分析任务,相比Hadoop,Greenplum更适合做大数据的存储、计算和分析引擎GP是典型的Master/Slave架构,在GP集群中,存在2个Master节点(一个Primary节点和一个Standby)和多个Segment节点,其中每个节点上可以运行多个数据库。GP采用Shared nothing架构(MPP)。是典型的Shared Nothing系统会集数据库。通过内存Cache存储状态的信息,而不在节点上保存状态的信息。节点之间的信息交互都是通过节点互联网络实现,通过将数据分布到多个节点上来实现规模数据的存储,通过并行查询处理来提高查询性能。每个节点仅查询自己的数据,所得到的结果再经过主节点汇总处理得到最终结果,通过增加节点数目达到系统线性扩展
简介
一般是针对单个主机,完全透明共享CPU/MEMORY/IO,并行处理能力是最差的,典型的代表 SQLServer
Shard Everything
各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表DB2和Hadoop ,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转我们常说的 Sharding 其实就是Share Nothing架构,它是把某个表从物理存储上被水平分割,并分配给多台服务器(或多个实例),每台服务器可以独立工作,具备共同的schema,比如MySQL Proxy和Google的各种架构,只需增加服务器数就可以增加处理能力和容量Shared nothing架构(shared nothing architecture)是一 种分布式计算架构。这种架构中的每一个节点( node)都是独立、自给的,而且整个系统中没有单点竞争。在一个纯Shared Nothing系统中,通过简单地增加一些廉价的计算机做为系统的节点却可以获取几乎无限的扩展Shared nothing系统通常需要将他的数据分布在多个节点的不同数据库中(不同的计算机处理不同的用户和查询)或者要求每个节点通过使用某些协调协议来保留它自己的应用程序数据备份 ,这通常被成为数据库Sharding
Shard Nothing
各个处理单元都有自己私有的CPU/内存/硬盘等,不存在共享资源,类似于MPP(大规模并行处理)模式,各处理单元之间通过协议通信,并行处理和扩展能力更好。典型代表DB2和Hadoop ,各节点相互独立,各自处理自己的数据,处理后的结果可能向上层汇总或在节点间流转
Shard Disk
数据库架构
MPP即大规模并行处理(Massively Parallel Processor )。它是一种基于PostgreSQL的分布式数据库,采用Shared-Nothing架构,主机、操作系统、内存、存储都是自我控制的,不存在共享。数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务MPP工作原理:MPP是将多个任务分散到多个节点上执行,然后将各节点的执行结果汇总到一起得到最终结果(与Hadoop相似)MPP虽然是关系型数据库产品,它的特点主要就是查询速度快,数据装载速度快,批量DML处理快。而且性能可以随着硬件的添加,呈线性增加,拥有非常良好的可扩展性。因此,它主要适用于面向分析的事务场景
MMP
1、访问系统的入口 2、数据库侦听进程 (postgres) 3、处理所有用户连接 4、建立查询计划 5、协调工作处理过程 6、管理工具 7、系统目录表和元数据(数据字典) 8、不存放任何用户数据
Master Host
1、每段(Segment)存放一部分用户数据 2、一个系统可以有多段 3、用户不能直接存取访问 4、所有对段的访问都经过 Master 5、数据库监听进程(postgres)监听来自 Master 的连接
Segment
1、Greenplum 数据库之间的连接层 2、进程间协调和管理 3、基于千兆以太网架构 4、属于系统内部私网配置 5、支持两种协议:TCP or UDP
Interconnect
组成
Greenplum架构
架构
一、概述
CREATE DATABASE new_dbname;
创建数据库
DROP DATABASE dbname;
删除数据库
CREATE DATABASE new_dbname TEMPLATE old_dbname;
克隆一个数据库
创建和管理数据库
CREATE TABLESPACE fastspace LOCATION '/fastdisk/gpdb';
创建表空间
如果在创建数据库时没有指定表空间,则使用与该数据库模板库一样的表空间。
查询表空间
DROP TABLESPACE name;
删除表空间
创建和管理表空间
数据库中:数据库是一个大别墅,SCHEMA是每个房间
数据仓库中:数据仓库是一群大别墅,SCHEMA是某个别墅中的房间
是什么
CREATE SCHEMA myschema;
创建一个SCHEMA
创建和管理SCHEMA
创建
指定列级约束
创建列表
创建表
GP的分布键作用是保证数据能够均匀分布在不同的存储节点上,充分利用并行计算带来的高性能。GP的分布策略包括HASH分布和随机分布。HASH分布的关键字是:distributed by (列名)随机分布的关键字是:distributed by randonly全分布的关键字是:distributed replicated在创建表或者修改表定义的时候,必须使用distributed by来执行分布键,从而使数据均匀的存储在不同的segment上。如果指定的分布键(列名)不是主键,则无法创建(指定的列必须是主键)。
声明hash分布
声明随机分布
选择表的分布策略
创建和管理表
堆表存储在OLTP类型负载下表现最好,这种环境中数据会在初始载入后被频繁地修改。
堆表最适合于较小的表,例如维度表,它们在初始载入数据后会经常被更新。
堆存储
适合大表,通常是批量装载数且只进行只读查询操作
追加优化存储(即AO表)
默认的建表存储模式为堆存储。
类型
create table test(id int)distributed by(id);
创建堆存储表
创建AO表
适用于具有许多迭代事务的OLTP类型的工作负载以及一次需要多列的单行,因此检索是高效的。
面向行的存储
适合于在少量列上计算数据聚集的数据仓库负载,或者是用于需要对单列定期更新但不修改其他列数据的情况。
面向列的存储
概念
表中的数据需要做更新操作,选择行存储
如果表经常有insert操作,选择行存储
如果在select和where中涉及表的全部或大部分列时,选择行存储
默认情况下,表是按行存储的方式存储
行存储
面向列的表存储只能用于追加优化表(即AO表)。
如果在where和having中对单列做聚合操作且返回少量的行,选择列存储
列存储只在访问宽表的少量列的查询中性能更高
列存储根据有压缩优势
列存储
如何选择
选择面向行或者面向列的存储
表压缩的目的是为了减少占用存储空间,用于数据仓库中的事实表。不经常进行数据和表结构的操作。压缩表必须是AO表。GP数据库的压缩方式分为:表级压缩、列级压缩行存储: 表级压缩,列级压缩 压缩算法:ZLIB、QUICKLZ列存储: 表级压缩,列级压缩 压缩算法:RLE_TYPE、ZLIB、QUICKLZ
表级
列级
创建压缩表
select get_ao_distribution(test1);
查看AO表test1的分布情况
select get_ao_compression_ratio(test1);
查看AO表test1的压缩率
select pg_size_pretty(pg_total_relation_size(test1));
查看AO表test1的占用空间大小
查看
压缩表
选择表存储模型
待续
对大型表分区
二、数据库操作
Greenplum数据仓库
0 条评论
回复 删除
下一页