Greenplum数据库系统架构

news2024/12/22 12:53:01

Greenplum数据库系统架构

Greenplum是一个纯软件的MPP数据库服务器,其系统架构专门用于管理大规模分析型数据仓库或商业智能工作负载。从技术上讲,MPP无共享架构是指具有多个节点的系统,每个节点都有自己的内存、操作系统和磁盘,它们协作执行一项操作。Greenplum使用这种高性能系统架构分配PB级别的数据,并行使用系统的所有资源来处理请求。

3.2.1  Greenplum与PostgreSQL

Greenplum 6版本基于PostgreSQL 9.4开源数据库,本质上是若干面向磁盘的PostgreSQL数据库实例,共同作为一个内聚的数据库管理系统(DBMS)。大多数情况下,Greenplum在SQL支持、配置选项和最终用户功能方面与PostgreSQL非常相似。用户操作Greenplum数据库就像与常规PostgreSQL交互一样。

Greenplum与PostgreSQL的主要区别为:

  1. 除了支持Postgres优化器外,还有自己的GPORCA优化器。
  2. Greenplum数据库可以使用Append-Optimized存储格式。
  3. Greenplum支持列存储,即逻辑上组织为表的数据,物理上以面向列的格式存储数据。列存储只能与Append-Optimized表一起使用。

Greenplum对PostgreSQL的内部结构进行了修改和补充,以支持数据库的并行结构。例如,对系统目录、优化器、查询执行器和事务管理器组件做过修改和增强,能够在所有并行PostgreSQL数据库实例上同时运行查询。Greenplum依赖Interconnect(内部互连)在网络层支持不同PostgreSQL实例之间的通信,使得系统作为单一逻辑数据库运行。

较之标准PostgreSQL,Greenplum还增加了并行数据装载(外部表)、资源管理、查询优化和存储增强功能。Greenplum开发的许多功能和优化也进入了PostgreSQL社区,促进了PostgreSQL的发展。例如,表分区是Greenplum首先开发的一个特性,现在已成为标准PostgreSQL的一部分。

Greenplum顶层系统架构如图3-1所示。Master是Greenplum数据库系统的入口,是客户端连接并提交SQL语句的数据库实例。Master将其工作与系统中其他叫作Segment的数据库实例进行协调,这些数据库实例负责实际存储和处理用户数据。每个Master和Segment都是一个PostgreSQL数据库实例。

 

3.2.2  Master

Master是Greenplum的系统入口,它接收客户端连接和SQL查询,并将工作分配给Segment实例。最终用户通过Master与Greenplum数据库交互,就像与典型PostgreSQL数据库交互一样。用户可以使用诸如psql之类的客户端程序或JDBC、ODBC、libpq之类的应用程序编程接口(API)连接到数据库。

Master数据库实例中存储全局系统目录(Global System Catalog)。全局系统目录是一组系统表,其中包含关于Greenplum本身的元数据。Master实例中不包含任何用户数据,用户数据仅驻留在Segment实例中。Master验证客户端连接,处理传入的SQL命令,在Segment之间分配工作负载,协调每个Segment返回的结果,并将最终结果返给客户端程序。

Greenplum数据库使用写前日志(WAL)进行主/备Master镜像。在基于WAL的日志记录中,所有修改都会在应用之前写入日志,以确保任何进程内操作的数据完整性。

3.2.3  Segment

Greenplum的Segment实例是独立的PostgreSQL数据库,每个数据库存储一部分数据并执行一部分查询处理。当用户通过Master连接到数据库并发出查询时,将在每个Segment数据库中创建进程以处理该查询的工作。有关查询过程的更多信息,参见3.3.3节。

用户定义的表及其索引分布在所有可用的Segment中,每个Segment都包含互斥的部分数据(复制表除外,这种表会在每个Segment实例上存储一份完整的数据拷贝)。提供服务的数据库服务器进程在相应的Segment实例下运行。

Segment在称为段主机的服务器上运行。一台段主机通常运行2~8个Segment实例,具体数量取决于CPU核、内存、磁盘、网卡和工作负载。所有段主机的配置应该相同,以避免木桶效应。让Greenplum获得最佳性能的关键是将数据和负载均匀分布到多个能力相同的Segment上,以便所有Segment同时处理任务并同时完成其工作。

3.2.4  Interconnect

Interconnect即内部互连,是Greenplum数据库系统架构中的核心组件,互连指的是Segment在网络间的进程间通信。Interconnect使用标准以太网交换数据,出于性能原因,建议使用万兆网或更快的系统。

默认情况下,Interconnect使用带有流量控制的用户数据报协议(UDPIFC)进行通信,通过网络发送消息。Greenplum软件执行超出UDP提供的数据包验证,这意味着其可靠性相当于传输控制协议(TCP),性能和可扩展性超过TCP。如果将Interconnect改为TCP,Greenplum数据库的可扩展性则限制为1000个Segment实例,UDPIFC作为Interconnect的默认协议不受此限制。

Interconnect实现了对同一集群中多个PostgreSQL实例的高效协同和并行计算,承载了并行查询计划生产、查询分派(QD)、协调节点上查询执行器(QE)的并行工作、数据分布、Pipeline计算、镜像复制、健康探测等诸多任务。

本文节选自《Greenplum构建实时数据仓库实践》,内容发布获得作者和出版社授权。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/543013.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【天线专题】天线(Antenna)的理解

天线,英文名称是(Antenna),本义是指像蚂蚁、蜜蜂这样的小动物头顶上的触角。天线的作用就是将调制到射频频率的数字信号或模拟信号发射到空间无线信道,或从空间无线信道接收调制在射频频率上的数字或模拟信号。简单来说就是有发射和接收电磁波的功能。 所以两只蚂…

chatgpt赋能Python-python3_5怎么用

Python 3.5是什么? Python是一种高级编程语言,非常流行并广泛使用。Python3.5是Python编程语言的一个较新的版本,它具有许多新的功能和改进。Python 3.5已包含许多流行的Python框架。它可以用于各种任务,例如web开发,数据科学&a…

StableDiffusion模型发展历史

参考资料: 相应的github和huggingface LDM [github] StableDiffusion v1.1 ~ v1.4 [github] [huggingface] StableDiffusion v1.5 [huggingface] [github] StableDiffusion v2 v2.1 [github] [huggingface]   首先说一下,这篇文章的目的是让你清晰地了…

Django SQL注入漏洞 CVE-2022-28347

漏洞简介 在Django 2.2 的 2.2.28 之前版本、3.2 的 3.2.13 之前版本和 4.0 的 4.0.4 之前版本中的 QuerySet.deexplain() 中发现了SQL注入问题。这是通过传递一个精心编制的字典(带有字典扩展)作为**options参数来实现的,并将注入负载放置在…

[golang gin框架] 36.Gin 商城项目-RESTful API 设计指南,允许Cros跨域 ,提供api接口实现前后端分离,以及JWT的使用

一.RESTful API 设计指南 请看:Restful API 的接口规范 二.Gin 中配置服务器端允许跨域 github官方地址: https://github.com/gin-contrib/cors 在 main.go文件中配置跨域请求 代码如下: 在使用cors时,需要 引入该插件,先: import ( "github.com/gin-contrib/cors" )…

Cocos CreatorXR 1.2.0 今日发布,正式支持 WebXR ,并开启 MR 之路

去年九月,Cocos CreatorXR v1.0.1 版本支持了 VR 内容创作,成为率先支持 XR 的国产引擎,今年三月,Cocos CreatorXR v1.1.0 版本实现了对 AR 内容开发的支持。在完成基本功能的建设后,更多开发者开始尝试使用 Cocos Cre…

Linux内核oops panic简析

源码基于:Linux 5.4 0. 前言 内核异常的级别大致分为三个:BUG、oops、panic。 BUG 是指那些不符合内核的正常设计,但内核能够检测出来并且对系统运行不会产生影响的问题,比如在原子上下文中休眠,在内核中用 BUG 标识。…

case

[rootes3 data]# cat case11.sh #!/bin/bash. /etc/rc.d/init.d/functionsdisable_selinux(){sed -i s/SELNUXenforcing/SELINUXdisabled/ /etc/selinux/config action "SELINUX 已经禁用,重启生效" }disable_firewalld(){ systemctl disable --now firew…

chatgpt赋能Python-python3_9_1怎么打开

Python 3.9.1 使用指南:如何打开 Python 3.9.1 Python 3.9.1 是 Python 最新版本的一个分支,包含各种新特性和改进,能够让开发者快速、简单地创建并运行 Python 程序。如果您想要使用 Python 3.9.1,下面是一个简单的指南&#xf…

菜单选择shell

[rootes3 data]# vi action.sh #!/bin/bash . /etc/init.d/functionsecho -en "\E[$[RANDOM%731];1m"cat <<EOF请选择&#xff1a;1) 备份数据库2)清理日志3)软件升级4)软件回滚5)删库跑路EOFecho -en \E[0mread -p "请选择上面的项对应的数字1-5&#xf…

Spring Boot-如何让你的 bean 在其他 bean 之前完成加载

今天有个小伙伴给我出了一个难题&#xff1a;在 SpringBoot 中如何让自己的某个指定的 Bean 在其他 Bean 前完成被 Spring 加载&#xff1f;我听到这个问题的第一反应是&#xff0c;为什么会有这样奇怪的需求&#xff1f;Talk is cheap&#xff0c;show me the code&#xff0c…

「读书感悟系列」原则:应对变化中的世界秩序(达利欧)

作者 | gongyouliu 编辑 | gongyouliu 最近2个月读完了达利欧的『原则2&#xff1a;应对变化中的世界秩序』&#xff0c;收获非常大。几年之前读他的『原则1&#xff1a;工作与生活』就非常喜欢&#xff0c;很有启发&#xff0c;这次读起来一如既往的喜欢。这本书利用周期的思路…

Qt推流程序自动生成网页远程查看实时视频流(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)

一、前言说明 推流程序将视频流推送到流媒体服务器后&#xff0c;此时就等待验证拉流播放&#xff0c;一般可以选择ffplay命令行播放或者vlc等播放器打开播放&#xff0c;也可以选择网页直接打开拉流地址播放&#xff0c;一般主流的浏览器都支持网页直接播放hls/m3u8/webrtc类…

流批一体的近实时数仓的思考与设计

摘要&#xff1a;基于对数据时间旅行的思考&#xff0c;引出了对目前三种数仓形态和两种数仓架构的思考。结合数据湖在 Flink 的应用和数据湖元数据类型的思考&#xff0c;探索了基于数据湖的 Flink SQL 流批一体的实践&#xff0c;在流批一体 SQL 表达一致、结果一致性、流批任…

【JS】1686- 重学 JavaScript API - Clipboard API

&#x1f3dd; 1. 什么是 Clipboard API 1.1 概念介绍 Clipboard API[1] 是一组 JavaScript API&#xff0c;用于在浏览器中操作剪贴板。通过 Clipboard API&#xff0c;开发者可以将文本、图片和其他数据复制到剪贴板&#xff0c;也可以从剪贴板中读取数据&#xff0c;实现复制…

OPPO解散芯片团队的真相,真的不缺钱?

OPPO解散芯片研发团队&#xff0c;各方都喜欢说OPPO不缺钱&#xff0c;解散芯片研发团队应该不是因为资金问题&#xff0c;然而仔细看看当下全球智能手机市场的表现&#xff0c;就未必会如此想了。 全球手机市场的出货量在2022年下跌了12%&#xff0c;跌穿了12亿部&#xff1b;…

【JVM】4. 虚拟机栈

文章目录 4.1. 虚拟机栈概述4.1.2. 初步印象4.1.3. 内存中的栈与堆4.1.4. 虚拟机栈基本内容Java虚拟机栈是什么&#xff1f;生命周期作用栈的特点面试题&#xff1a;开发中遇到哪些异常&#xff1f; 4.2. 栈的存储单位4.2.1. 栈中存储什么&#xff1f;4.2.2. 栈运行原理4.2.3. …

GPT理解的CV:基于Yolov5的半监督目标检测

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G 主要贡献是提出了一种名为“Efficient Teacher”的半监督目标检测算法。与传统的监督学习算法不同&…

10人面试9个答错?鹅厂T12详解MySQL加锁机制

&#x1f449;腾小云导读 鹅厂有一道关于「数据库锁」的面试题。我们发现其实很多 DBA &#xff08;数据库管理员&#xff0c;Database administrator&#xff09;包括工作好几年的 DBA 都答得不太好。这说明 MySQL 锁的机制其实还是比较复杂&#xff0c;值得深入研究。本文对3…

探索Vue的组件世界-实现Vue插件

一个好的框架满足几大设计原则&#xff1a; 开闭原则&#xff1a;对修改源码关闭&#xff0c;对功能扩展开放 vue作为一个优秀的组件框架&#xff1a;满足开闭原则&#xff0c;提供良好的插件机制&#xff0c;以提供三方来扩展功能 Mixin模式 Vue.mixin(mixin) 全局注册的m…