Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Greenplum数据库使用总结(干货满满)--

Greenplum数据库使用总结(干货满满)--

作者头像
小徐
发布于 2019-08-02 09:15:51
发布于 2019-08-02 09:15:51
8.4K0
举报
文章被收录于专栏:GreenplumGreenplum

1 Greenplum整体架构信息

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.将生成好的执行计划分发到每个Segment上执行

3.对于master来说,每个Segment都是对等的,负责对应数据的存储和计算

4.收集Segment的执行结果

4.每一台机器上可以配置一到多个Segment

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的顺序是随机的,就会导致一样的数据每次的查询结果顺序不一致,这也是与其他的数据不一样的地方。

2 Greenplum数据库常用知识

2.1 Greenplum 概念

Greenplum的架构采用了MPP(大规模并行处理)。在 MPP 系统中,每个 SMP节点也可以运行自己的操作系统、数据库等。换言之,每个节点内的 CPU 不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配(Data Redistribution) 。与传统的SMP架构明显不同,通常情况下,MPP系统因为要在不同处理单元之间传送信息,所以它的效率要比SMP要差一点,但是这也不是绝对的,因为 MPP系统不共享资源,因此对它而言,资源比SMP要多,当需要处理的事务达到一定规模时,MPP的效率要比SMP好。这就是看通信时间占用计算时间的比例而定,如果通信时间比较多,那MPP系统就不占优势了,相反,如果通信时间比较少,那MPP系统可以充分发挥资源的优势,达到高效率。

中国已有:中信实业银行,东方航空公司,阿里巴巴,华泰保险,中国远洋(Cosco),李宁公司等大型企业用户选择Greenplum的产品。

2.2 OLTP与OLAP的理解

2.2.1 描述概念

Greenplum 支持OLTPOLAP机制,同时也支持AO表与堆方式储存,其中OLTP与OLAP的特点如下:

OLTP(On-Line Transaction Processing,联机事务处理)系统也称为生产系统,它是事件驱动的、面向应用的,比如电子商务网站的交易系统就是一个典型的OLTP系统。OLTP的基本特点是:

数据在系统中产生,

基于交易的处理系统(Transaction-Based),

每次交易牵涉的数据量很小,

对响应时间要求非常高,

用户数量非常庞大,主要是操作人员,

数据库的各种操作主要基于索引进行。

OLAP(On-Line Analytical Processing,联机分析处理)是基于数据仓库的信息分析处理过程,是数据仓库的用户接口部分。OLAP系统是跨部门的、面向主题的,其基本特点是:

本身不产生数据,其基础数据来源于生产系统中的操作数据(OperationalData)

基于查询的分析系统,

复杂查询经常使用多表联结、全表扫描等,牵涉的数据量往往十分庞大,

响时间与具体查询有很大关系,

用户数量相对较小,其用户主要是业务人员与管理人员,

由于业务问题不固定,数据库的各种操作不能完全基于索引进行。

2.2.2 图示解释

OLTP与OLAP的比较

OLTP与OLAP对于硬件的要求

2.3 其他名词概念

2.3.1 HTAP概念

HTAP(Hybrid Transactional / Analytical Processing)

一份数据,支持在线事务与在线分析

分布式share nothing架构,线性扩展

3-15倍压缩

https://yq.aliyun.com/articles/193401?utm_content=m_29900

2.3.2 Append-only 的概念

AO表为追加存储,当删除、更新记录时,有一个BITMAP对象来存储对应的记录是否被删除。对于AO存储,虽然是appendonly,但实际上GP是支持DELETE和UPDATE的,被删除或更新的行,通过BITMAP来标记,性需要用vacuum来释放。

2.4 数据仓库设计规则

2.4.1 数据仓库概念

数据仓库,英文名称为Data Warehouse,可简写为DW或DWH。数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。

2.4.2 数据仓库设计规则相关资料

具体的可以参考数据仓库之父Bill Inmon在1991年出版的"Building the Data Warehouse",下载地址为:链接: https://pan.baidu.com/s/1I5ImKxDv0Jbx3psqTY2TzQ 提取码: gm8k

2.4.3 数据仓库设计规范参考

名词

名词简称

名词解释

Data Warehouse

DW

数据仓库主体

Operational Data Store

ODS

数据原始接入层,需要对数据频繁的增删改查,是支持对近期数据的OLTP查询,以减轻业务系统负载。

Data Warehouse Detail

DWD

数据源的细节层,有的也称为ODS层,是业务层与数据仓库的隔离层,在该层可以把业务表分的更细

Data Warehouse Base

DWB

数据仓库基础数据层,存储的是客观数据,一般用作中间层,可以认为是大量指标的数据层

Data Warehouse Service

DWS

服务数据层,基于DWB上的基础数据,主要整合汇总最终的结果供应用层使用,一般是宽表和高度压缩表。

Data Warehouse History

DWH

该层不在数据仓库设计的范围之内,按照业务新增的数据层,主要储存历史数据。

Data Warehouse Exception

DWE

该层不在数据仓库设计的范围之内,按照业务新增的数据层,主要储存异常数据。

Enterprise Data Warehouse

EDW

作为企业唯一的数据仓库,EDW提供统一的数据服务,查询结果有效一致。数据设计支持跨部门,支持海量数据,并支持大量的查询请求。

Data Mart

DM

和EDW类似,但更专注于部门级别而不是公司级别的统一数据服务。提供EDW不能提供的,针对部门的特殊数据服务需求

BI/Analytic Database

BID/AD

为商业智能和分析而优化的数据处理技术。包括数据清理,ETL,数据挖掘等。生产报表,也支持adhoc查询,数据反范式设计。

Data Lake Database

DLD

该层存储非加工数据,比如日志、视频等,以后结构化数据,并且不分类,没有为了特定程序进行设计和加工。

详细资料请参考:https://blog.csdn.net/xfg0218/article/details/85092196

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 河马coding 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java源码系列2——HashMap
HashMap 的源码很多也很复杂,本文只是摘取简单常用的部分代码进行分析。能力有限,欢迎指正。
超超不会飞
2020/09/18
3440
Java源码系列2——HashMap
HashMap实现原理和源码详细分析
HashMap 基于哈希表的 Map 接口实现,是以 key-value 存储形式存在 ,HashMap 的实现不是同步的,这意味着它不是线程安全的。它的 key、value 都可以为 null,此外,HashMap 中的映射不是有序的。
SmileNicky
2021/09/08
4560
JDK8中的HashMap实现原理及源码分析
在写上一篇线性表的文章的时候,笔者看的是Android源码中support24中的Java代码,当时发现这个ArrayList和LinkedList的源码和Java官方的没有什么区别,然而在阅读HashMap源码的时候,却发现Android中的Java与官方版的出入略大,遂不得不转而用Eclipse导入jdk源码阅读,这里不得不吐槽一句,用惯了IDEA的快捷键,Eclispe还真是用不习惯~~好了,接下来我们言归正传:
技术zhai
2019/02/15
6240
内含扩容源码的面试题,目标是手写HashMap!
    推荐在单线程环境下使用HashMap替代,如果需要多线程使用则用ConcurrentHashMap。
上分如喝水
2021/08/16
3970
内含扩容源码的面试题,目标是手写HashMap!
HashMap常见面试题(超全面):实现原理、扩容机制、链表何时升级为红黑树、死循环
十一、为什么我们需要hash()函数 (n-1)\&hash,而不是直接用key的hashcode直接计算下标
寻求出路的程序媛
2024/10/17
8290
HashMap常见面试题(超全面):实现原理、扩容机制、链表何时升级为红黑树、死循环
手撕HashMap
在我扒拉那么多大厂面试题目后,发现HashMap的出现频率是非常高的,当然也会拿出一些类似的进行对比解析,比如HashTable、ConCurrentHashMap、LinkedHashMap,不着急我们后面慢慢聊它们。在讲HashMap前我们先简单回忆一下Hash的相关内容。
东边的大西瓜
2022/05/05
2350
手撕HashMap
HashMap原理分析和具体实现
通过hash的方法,通过put和get存储和获取对象。存储对象时,我们将K / V传给put方法时,它调用hashCode计算hash从而得到bucket位置,进一步存储,HashMap会根据当前bucket的占用情况自动调整容量 (超过 Load Facotr则resize为原来的2倍)。获取对象时,我们 K传给get,它调用hashCodeO()计算hash从而得到bucket位置,并进一步调用equals()方法确定键值对。如果发生碰撞的时候,Hashmap通过链表将产生碰撞冲突的元素组织起来,在JDK8中,如果一个bucket中碰撞冲突的元素超过8哥,则使用红黑树来替换链表,从而提高速度。
对话、
2022/02/22
5500
HashMap源码阅读
HashMap是Map家族中使用频度最高的一个,下文主要结合源码来讲解HashMap的工作原理。 1. 数据结构 HashMap的数据结构主要由数组+链表+红黑树(JDK1.8后新增)组成,如下图所示: 左侧数组是哈希表,数组的每个元素都是一个单链表的头节点,当不同的key映射到数组的同一位置,就将其放入单链表中来解决key的hash值的冲突。 当链表的长度>8时,JDK1.8做了数据结构的优化,会将链表转化为红黑树,利用红黑树快速增删改查的特点提升HashMap的性能,查询效率链表O(N),红黑树是O(l
butterfly100
2018/04/17
7140
HashMap源码阅读
集合源码解析之HashMap(基于Java8)1 概述2 HashMap的数据结构三大集合与迭代子3 源码分析单线程rehash多线程并发下的rehashFast-fail
1 概述 HashMap是基于哈希表实现的,每一个元素是一个key-value对,其内部通过单链表解决冲突问题,容量不足(超过了阀值)时,同样会自动增长. HashMap是非线程安全的,只适用于单线程环境下,多线程环境下可以采用concurrent并发包下的concurrentHashMap. HashMap 实现了Serializable接口,因此它支持序列化,实现了Cloneable接口,能被克隆。 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用nul
JavaEdge
2018/05/16
9880
深入理解HashMap
HashMap是一个非常重要的集合,日常使用也非常的频繁,同时也是面试重点。本文并不打算讲解基础的使用api,而是深入HashMap的底层,讲解关于HashMap的重点知识。需要读者对散列表和HashMap有一定的认识。
Java旅途
2021/02/04
5580
深入理解HashMap
了解HashMap数据结构,超详细!
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。
程序员的时光001
2020/11/02
6190
了解HashMap数据结构,超详细!
深入理解 HashMap
​ HashMap 是基于哈希表的 Map 接口是实现的。此实现提供所有可选操作,并允许使用 null 做为值(key)和键(value)。HashMap 不保证映射的顺序,特别是它不保证该顺序恒久不变。此实现假定哈希函数将元素适当的分布在各个桶之间,可作为基本操作(get 和 put)提供稳定的性能。在jdk1.7中的HashMap是基于数组+链表实现的,在jdk1.8中的HashMap是由数组+链表+红黑树实现的(不懂,一开始就讲那么难的谁受得了?没关系,继续往下看)
全栈程序员站长
2022/09/30
3420
深入理解 HashMap
HashMap 底层源码解读(一行一行读,有基础就能看懂)
哈希冲突主要因为 哈希表底层的数组容量是小于实际存储的关键字的数量,所以发生冲突是必然的,我们只能够尽量避免,不能完全消除。
RAIN7
2022/04/11
5510
HashMap 底层源码解读(一行一行读,有基础就能看懂)
史上最强HashMap源码深度解析(3w字图文并茂)
HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。
小熊学Java
2023/10/04
2.1K0
史上最强HashMap源码深度解析(3w字图文并茂)
HashMap 精选面试题(背诵版)
对于 Java 求职者来说,HashMap 可谓是重中之重,是面试的必考点。然而 HashMap 的知识点非常多,复习起来花费精力很大。
沉默王二
2021/12/23
7650
HashMap 精选面试题(背诵版)
Java面试题:ArrayList底层实现原理、HashMap的实现原理、HashMap的jdk1.7和jdk1.8有什么区别
举个例子:在一开始,如果默认的长度为10的数组已经装满了,在装满的情况下,我一次性要添加100个数据 addAll,很显然 10扩容1.5倍 变成15,还是不够,怎么办? ——> 此时新数组的长度,就以实际情况为准,就是110(100+10)
寻求出路的程序媛
2024/06/04
2680
Java面试题:ArrayList底层实现原理、HashMap的实现原理、HashMap的jdk1.7和jdk1.8有什么区别
HashMap常见面试题_java面试题大汇总
大家好,又见面了,我是你们的朋友全栈君。 目录 1.HashMap的数据结构? 2.HashMap的工作原理? 3.当两个对象的hashCode相同会发生什么? 4.你知道hash的实现吗?为什么要这
全栈程序员站长
2022/09/22
3980
HashMap常见面试题_java面试题大汇总
基于JDK8的HashMap详解
HashMap是程序员使用频率较高的一种用于映射(键值对)处理的数据类型,随着JDK(Java Development Kit)版本的更新,HashMap也在不断被优化。其中JDK1.8在HashMap底层引入了红黑树的数据结构并对其扩容进行了优化等。本文将结合JDK1.7与JDK1.8对HashMap进行分析,浅析HashMap在JDK1.8中的改进。
Java阿呆
2020/11/04
4260
基于JDK8的HashMap详解
超硬核HashMap底层构成以及扩容原理
JDK1.8 之前 HashMap 底层是node数组和链表结合在一起使用也就是链表散列。HashMap 通过 key 的 hashCode 经过扰动函数处理过后得到 hash 值,然后通过(n-1)&hash判断当前元素存放的位置(这里的n指的是数组的长度),如果当前位置存在元素的话,就判断该元素与要存入的元素的hash 值以及key 是否相同,如果相同的话,直接覆盖,不相同就通过
名字是乱打的
2022/05/13
5430
超硬核HashMap底层构成以及扩容原理
Java 基础概念·Java HashMap
HashMap 是 Java 使用频率最高的用于映射(键值对)处理的数据类型。JDK1.8 对 HashMap 底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。
数媒派
2022/12/01
5680
推荐阅读
相关推荐
Java源码系列2——HashMap
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档