当前位置: 首页 > news >正文

GreenPlum小结

什么是GreenPlum?

GreenPlum是业界最快最高性价比的关系型分布式数据库,它在开源的PostgreSQL的基础上采用MPP架构(Massive Parallel Processing,海量并行处理),具有强大的大规模数据分析任务处理能力。

GreenPlum作为大数据融合存储平台中众多数据库之一,与其他数据库系统和文件系统一起,为OceanMind提供完整的OceanStorage大数据融合存储解决方案。

GreenPlum的特点

  • 数据的强一致性:GreenPlum数据库支持分布式事务,支持ACID,保证数据库中数据的强一致性。

  • 标准SQL接口,比MapReduce接入更方便

  • 完整的分布式事务能力,确保强数据一致性

  • 近乎线性的在线扩展能力

  • 高并发数据加载技术

  • 高灵活的行、列以及混合存储及压缩技术

  • 高可用技术方案

  • 丰富的生态系统,便捷对接hadoop等

  • 良好的线性扩展能力:GreenPlum数据库采用MPP架构,其基本特征是有多台SMP(Symmetric Multi-Processor,对称多处理器)服务器通过节点互联网络连接而成,是一种Share Nothing(完全无共享)结构,因而扩展能力最强,理论上可以无限扩展。目前的技术可以实现512个节点互联,包含数千个CPU。借助MPP,Greenplum在大型数据集上执行复杂SQL分析的速度比很多解决方案都要快。Greenplum也带来了其它开源方案中没有的数据管理质量特性、升级和扩展能力。同时Greenplum也降低了大规模实时数据分析的门槛,相比于 Map-Reduce,SQL语法简单,功能强大,易上手,使用和开发成本低,易于对接其他第三方数据分析工具。

GreenPlum数据库 VS传统数据库

使用传统数据库时,我们经常会通过分库分表的方式将数据打散到多个数据库实例中。

其缺点在于可能会出现不平均的情况:数据在后端被打散成许多数据分片,但是有些分片的数据量很大,热度很高,有些分片相对来说热度较低。当进行数据统计或分析时,一部分用户数据处理速度慢,一部分用户数据处理速度快,使得许多用户的体验下降。

GreenPlum数据库采用分而治之的方法,将数据非常均衡的分布在所有节点上。而且当服务器数量不够或者计算能力不够的时候,可以在线横向扩展,此时数据库会重新做二次分片,也就是表数据需要重新分布,在保证强大处理能力的同时也时刻保持用户性能的均衡,提升用户体验。

GreenPlum分析

Greenplum是一个关系型数据库,是由数个独立的数据服务组合成的逻辑数据库。与oracle RAC的shared-Everything架构不同,greenplum采用shared-Nothing(MPP)架构,整个集群由多个数据节点(Segment Host)和控制节点(Master Host)组成。在典型的shared-Nothing中,每个节点上所有的资源的cpu、内存、磁盘都是独立的,每个节点都只有全部数据的一部分,也只能使用本节点的数据资源,节点之间的信息交互都是通过节点高速互联网络实现,其主要的优点是大规模的并行处理能力。

在Greenplum中,需要存储的数据在进入到数据时,将先进行数据分布的处理工作,将一个表中的数据平均分布到每个节点上,并为每个表指定一个分布列(distribute column),之后便根据hash来分布数据,基于shared-Nothing的原则,Greenplum这样处理可以充分发挥每个节点处IO的处理能力。Greenplum对标准SQL的支持非常完善。一个SQL执行后,经过Master节点会进行执行计划的拆分,下发到下面的n个节点中,并行处理。再到Master节点进行汇总。

大规模数据存储

GreenPlum数据库通过将数据规律地分布到多个节点上来实现大规模数据的存储,支持50PB级海量数据的存储和处理。

  • Greenplum数据库通过将数据分布到多个节点上来实现规模数据的存储。数据库的瓶颈经常发生在I/O方面,数据库的诸多性能问题最终总能归罪到I/O身上,久而久之,IO瓶颈成为了数据库性能的永恒的话题。

  • Greenplum采用分而治之的办法,将数据规律的分布到节点上,充分利用Segment主机的IO能力,以此让系统达到最大的IO能力(主要是带宽)。

  • 在Greenplum中每个表都是分布在所有节点上的。Master节点首先通过对表的某个或多个列进行hash运算,然后根据hash结果将表的数据分布到Segment节点中。整个过程中Master节点不存放任何用户数据,只是对客户端进行访问控制和存储表分布逻辑的元数据。

Greenplum提供称为“多态存储”的灵活存储方式。多态存储可以根据数据热度或者访问模式的不同而使用不同的存储方式。一张表的不同数据可以使用不同的物理存储方式。支持的存储方式包含:

  • 行存储:行存储是传统数据库常用的存储方式,特点是访问比较快,多列更新比较容易。行存储比较适合OLTP业务,适合频繁的更新或访问大部分字段的场景。Greenplum作为一款HTAP数据库,做了很多对OLTP场景的优化,在这种场景下,可以选用行存储。

  • 列存储:列存储按列保存,不同列的数据存储在不同的地方(通常是不同文件中)。适合一次只访问宽表中某几个字段的情况。列存储的另外一个优势是压缩比高。列存储更适合压缩,查询列子集时速度快,适用于分析型场景。不同列可以使用不同压缩方式:gzip(1-9),quicktz,delta,RLE,zstd

  • 外部表:数据保存在其他系统中例如HDFS,数据库只保留元数据信息。外部表是PostgreSQL的优势之一,Greenplum也继承了这一优势。历史数据和不常访问的数据存储在HDFS或者其他外部系统中。可以无缝查询所有数据。支持Text,CSV,Binary,Avro,Parquet,ORC格式。

并行数据加载

  • 并行加载技术充分利用分布式计算和分布式存储的优势,保证发挥出每一块Disk的I/O资源

  • 并行加载比串行加载,速度提高40-50倍以上,减少ETL窗口时间

  • 增加Segment和ETL Server,并行加载速度呈线性增长

主流的系统架构

主流的系统架构主要有三类:对称多处理结构(SMP),非一致存储访问结构(NUMA)和海量并行处理架构(MPP)。

SMP

较为典型的包括Oracle、MySQL等

特点

存储,包括CPU、内存和IO都是共享的。在一台机器就能支撑起整个网站的Web时代,SMP架构是非常流行的,足以支撑前端业务。

不足

扩展能力有限。随着业务的扩大,数据量的增长,在业务场景上就有了很大的限制。

NUMA

特点

拥有多个CPU模块,每个模块由多个CPU组成,有独立的本地内存;节点之间通过互联模块进行连接和信息交互,较好解决SMP系统的扩展问题。

不足

互联模块访问效率和本地内存访问不在一个效率层级,系统性能无法随着CPU数线性增加。

MPP

例如Greenplum的架构

特点

MPP是采用SMP组成的多个服务器,多个服务器共同完成任务。在硬件使用上可以发挥SMP架构的优势,多节点并行处理时,内存、CPU、网络、IO、磁盘均不共享,即Share-Nothing架构,每个节点只访问本地内存和存储,节点信息交互和节点本身是并行处理的。所有数据节点角色一样,可以提升并行计算能力。

  • Share Nothing节点之间数据不共享,只有通过网络连接实现的协同,每个节点有独立的存储和内存。

  • 数据根据某种规则(如Hash)散布到各个节点

  • 计算任务也是会发布到各个节点并行执行,后再将结果聚合到整体返回

  • 用户使用时会看做整体

不足

MPP架构也存在一些不足,如果多台服务器在进行并行处理时,如果有一台服务器出现部分性能下降,会影响到整个MPP集群的性能,即木桶的短板效应。MPP架构集群规模不能过大,不能像Hadoop那样,几千个集群同时运行某个查询逻辑。此外,并发度不能过高。MPP架构正常情况下都是进行两阶段事务提交的,需要有一个事务汇总和底层事务查询的过程,如果并发过高,资源损耗会过大,会影响到整体系统的响应。

不同的系统架构有其擅长的应用场景,很难说某个架构更好,在其擅长的应用场景下,都可以发挥其优势。

Greenplum架构

GreenPlum数据库是典型的Master/Slave架构。在Greenplum集群中,存在一个Master节点和多个Segment节点。Master实例是GreenPlum数据库服务端,服务端通过端口监听客户端连接。Segment由Master分配,管理一部分数据存储进程,每个Segment都采用独立端口监听。Master实例协调所有数据库实例,分布式请求Segment并且合并从Segment返回的结果。Greenplum数据库是由Master Server、Segment Server和Interconnect三部分组成,Master Server和Segment Server的互联使用过Interconnect。

图中的架构可以被拆解为三部分来看,第一部分是上面的Master节点,第二部分是中间的高速交互网络,第三部分是下面的Segment 节点,是存储生产数据的地方,会利用多个不同的机器,将数据均匀分布在上面。例如图中使用了5台机器,数据会被均匀分布在这5台机器上,充分利用MPP架构的优势,5台机器同时运算,从而提高查询效率。

  • Master 节点:是整个系统的控制中心和对外的服务接入点,它负责接收用户SQL请求,将SQL生成查询计划并进行并行处理优化,然后将查询计划分配到所有的Segment节点并进行处理,协调组织各个Segment节点按照查询计划一步一步地进行并行处理,最后获取到Segment的计算结果,再返回给客户端。从用户的角度看Greenplum集群,看到的只是Master节点,无需关心集群内部的机制,所有的并行处理都是在Master控制下自动完成的。Master节点一般只有一个或二个。

  • Segment节点: 是Greenplum执行并行任务的并行计算节点,它接收Master的指令进行MPP并行计算,因此所有Segment节点的计算性总和就是整个集群的性能,通过增加Segment节点,可以线性化得增加集群的处理性能和存储容量,Segment节点可以是1~10000个节点。外部数据在加到Segment时,采用并行数据流进行加载,直接加载到Segment节点,这项独特的技术是Greenplum的专有技术,保证数据在最短时间内加载到数据库中。

  • Interconnect: 是Master节点与Segment节点、Segment节点与Segment节点之间进行数据传输的组件,它基于千兆交换机或者万兆交换机实现数据再节点之间的高速传输。

Greenplum适用场景?

Greenplum虽然是关系型数据库产品,它的特点主要就是查询速度快,数据装载速度快,批量DML处理快。而且性能可以随着硬件的添加,呈线性增加,拥有非常良好的可扩展性。因此,它主要适用于面向分析的应用。比如构建企业级ODS/EDW,或者数据集市等等。

GP常用指令

GP常用指令好文参考:https://blog.csdn.net/m0_51197424/article/details/123524159

官方文档:http://docs-cn.greenplum.org/v6/admin_guide/intro/about_loading.html

相关文章:

GreenPlum小结

什么是GreenPlum?GreenPlum是业界最快最高性价比的关系型分布式数据库,它在开源的PostgreSQL的基础上采用MPP架构(Massive Parallel Processing,海量并行处理),具有强大的大规模数据分析任务处理能力。GreenPlum作为大数据融合存储…...

C语言中数组和指针

文章目录前言一、指针的概念二、指针的大小三、指针的用法1.指针指向变量2.指针指向数组3.指针指向函数总结前言 本文将给大家带来C语言中非常重要的两个知识点,指针和数组。 一、指针的概念 指针,是C语言中的一个重要概念及其特点,也是掌…...

Leetcode.剑指 Offer II 022 链表中环的入口节点

题目链接 Leetcode.剑指 Offer II 022 链表中环的入口节点 mid 题目描述 给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。 为了表示给定链表中的环&#…...

4种不同编程语言的打印方式

意义 打印方式是编程中不可或缺的一部分,它可以帮助开发人员有效地调试和测试代码,并提供有用的信息来监视程序的运行状态和性能。 编程语言中的打印方式是指将程序输出到终端或控制台上进行显示。这个功能在编程中非常重要,因为它可以帮助开…...

websocket介绍

我们聊聊轮询技术,什么是轮询?轮询就是在特定的时间间隔,由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。 轮询分为两种: 短轮询:通过不断的向服务端发送数据,客户端发送Request,服务端直接返回Response(不管服务端数据有没有改变)。长轮…...

Educational Codeforces Round 144 (Rated for Div. 2),C,D

C. Maximum Set 思路: 我们求最大数组,显然是L一直乘2,直到再乘2就越过区间位置。我们说过,再乘一个2就不行,那么我们除一个2,换句话说,就是再乘一个4就不行了。发现,我们可能有机会乘一个3&a…...

【redis学习篇】Redis三种持久化方式详解

官方文档 一、Redis持久性 Redis如何将数据写入磁盘 持久性是指将数据写入持久存储,如固态磁盘(SSD)。Redis提供了一系列持久性选项。其中包括: RDB(快照):RDB持久性以指定的时间间隔执行数据…...

垃圾回收中的分代年龄

为什么CMS里的分代年龄是6而不是15 CMS (Concurrent Mark Sweep) 是一种基于分代的垃圾收集器,其中分代年龄指的是一个对象在年轻代中经历了多少次垃圾收集。在 CMS 中,当一个对象的分代年龄达到阈值时,就会被晋升到老年代中。 在 CMS 中&a…...

蓝桥杯-左移右移(2022国赛)

蓝桥杯-左移右移1、问题描述2、解题思路与代码实现2.1 方法一:使用LinkedList双向链表实现(50%)2.2 方法二:使用HashMap左右临界值实现(100%)1、问题描述 小蓝有一个长度为 N 的数组, 初始时从左到右依次是 1,2,3,…N 。 之后小蓝对这个数组进行了 M 次操…...

你还在手撸SQL?ChatGPT笑晕在厕所

文章目录你还在手撸SQL?ChatGPT笑晕在厕所一、背景二、面向Chat编程1. 数据库设计2. 建表语句3. 加中文注释4. 数据模拟5. 查询成绩6. 修改课程任课老师7. 删除课程8. 删除一个有关联数据的课程总结你还在手撸SQL?ChatGPT笑晕在厕所 一、背景 经典3表设…...

【Redis】Redis慢查询

文章目录慢查询记录慢查询两个配置参数修改配置参数慢查询日志慢查询记录 我们都知道像mysql等持久化数据库会有慢查询日志,其实Redis中也有慢查询日志的功能。慢查询就是系统在执行命令的前后计算每条命令的执行时间,如果超过我们预设的时间&#xff0c…...

【Kubernetes】第二十一篇 - k8s 项目部署流程和操作梳理

一,前言 上一篇,介绍了 k8s 污点和容忍度; 在了解前面 k8s 介绍之后,设计并完成一个前后端项目的部署和持续集成; 本篇,介绍基于 k8s 项目部署流程设计; 二,项目部署流程设计 本…...

推荐系统[九]项目技术细节讲解z2:搜索Query理解[Term Weight、Query 改写、同义词扩写]和语义召回技术

搜索Query理解和语义召回技术 随着用户规模和产品的发展, 搜索面临着越来越大的 query 长尾化挑战,query 理解是提升搜索召回质量的关键。本次将介绍搜索在 query term weighting,同义词扩展,query 改写,以及语义召回等方向上的实践方法和落地情况。 1.面临问题:长尾 qu…...

【项目精选】基于SSH的医院在线挂号系统(视频+论文+源码)

点击下载源码 医院挂号系统主要用于实现医院的挂号,前台基本功能包括:用户注册、用户登录、医院查询、挂号、取消挂号、修改个人信息、退出等。 后台基本功能包括:系统管理员登录、医院管理、科室管理、公告管理、退出系统等。 本系统结构如…...

Pandas库:从入门到应用(一)

一、Pandas简介 pandas是 Python 的核⼼数据分析⽀持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。pandas是Python进⾏数据分析的必备⾼级⼯具。 pandas的主要数据结构是 **Series(**⼀维数据)与 DataFrame (⼆维数据…...

MySQL中concat()、concat_ws()、group_concat()函数使用

在平时工作中,经常记不清或者记混他们的用法,正好有时间就记录一下~concat()函数语法:concat(str1, str2, int1...)例如执行sql:SELECT CONCAT(id,USERNAME,USER_PHONE) FROM tb_user输出查询结果为: 1test15216756754…...

【JavaEE初阶】第四节.文件操作 和 IO (上篇)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、文件 1.1 文件的概念 1.2 文件的路径二、 Java中文件系统操作 2.1 File类的属性 2.2 File类的构造方法 2.3 File类的方法 …...

开源免费堡垒机Teleport堡垒机的安装

准备:纯净centos7系统一个作为堡垒机,若干个linux系统或windows系统服务器作为受保护的服务器 堡垒机IP:192.168.1.15 服务器IP:192.168.1.10 1、teleport安装 下载地址: https://www.tp4a.com/static/download/teleport-server-linux-x64-3.6.4-b3.tar.gz xshell上传压缩…...

图形报表ECharts

图形报表ECharts1 图形报表ECharts1.1 ECharts简介-富客户端图表库ECharts缩写来自Enterprise Charts,商业级数据图表,是百度的一个开源的使用JavaScript实现的数据可视化工具,可以流畅的运行在PC和移动设备上,兼容当前绝大部分浏…...

便捷式储能电源核心技术--单相逆变器设计

便捷式储能电源核心技术–单相逆变器设计 1.逆变器的规格参数 输入电压直流400V输出电压交流rms220V开关频率10kHz滤波电容6.23uF控制方式单极性倍频2.视频学习链接 视频学习链接 3.主电路仿真设计...

Gamma矫正

Gamma 曲线Gamma校正被使用在8位RGB图中。用来解决在有限的存储空间中保存尽可能多的人类感受敏感的色彩内容。Gamma 矫正Gamma校正的方式就是采样时,和输出到显示器给人类看时,对亮度进行的调整.如采样时 Gamma1/2.2 调亮Gamma,如显示时 Gamma2.2 调暗Gamma实际亮度…...

速懂cookie,session,token

文章目录cookiesessiontoken区别cookie 是浏览器提供的一种能力,可以在每次发起请求前,带上cookie里面的内容(一些key,value值) 分类: 会话级cookie:默认情况,就是会话级cookie&…...

javaEE初阶 — HTML 中的常见标签

文章目录注释标签标题标签:h1 h6段落标签:p换行标签:br格式化标签图片标签:img1. img 的 alt 属性2. img 的 title 属性3. width 与 heigth 属性用来描述图的尺寸超链接标签:a表格标签列表标签表单标签1. from 标签2. …...

MySQL慢查询

2 慢查询 2.1 慢查询介绍 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。具体指运行时间超过long_query_time值的SQL&…...

tensorflow【import transformers 报错】

目录 一、安装 安装好了tensorflow,但是import时候报错: import transformers 报错 一、安装 (1)创建环境: conda create -n [name] python3.3-3.7 (2)激活环境: conda activate [name] …...

JMU软件20 计算机网络复习

文章目录题型单位换算第一章协议与划分层次、网络协议的三个组成要素,分层的思想等协议网络协议的三个组成要素分层的思想⭐计算机网络体系结构OSI 的七层协议TCP/IP 的四层协议五层协议发送时延、传播时延、总时延、往返时间RTT计算第二章 物理层传输媒体导向性传输…...

Java基础之《dubbo(1)—dubbo基础入门》

一、为什么要使用dubbo 1、dubbo是什么 dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 2、dubbo有何特点 (1)远程通讯:提供透明化的远程方法调用,提供…...

HTML注入的一种攻击思路(超链接替换为点击验证,现在常见)

目录 背景 利用方法 举一反三 场景1:截获 TOKEN 场景2:截获后台信息 总结...

Redis-6集群

文章目录前言Redis集群原理搭建Redis集群集群拓展后记前言 前两期介绍和搭建了Redis的主从复制架构和哨兵模式,虽然哨兵模式能够实现自动故障转移主备切换,一定程度上提高了系统的容错性 但这两种架构模式都不能解决单节点的并发压力和物理上线的问题&…...

Spring Cloud学习笔记:基础知识

这是本人学习的总结,主要学习资料如下 马士兵教育 目录1、Spring Cloud 简介2、Eureka3、建立Spring Cloud项目3.1、启动Server3.1.1、dependency3.1.2、配置文件3.1.3、Server端启动代码3.2、启动Client3.2.1、dependency3.2.2、配置文件3.3.3、Client端启动代码3…...