一、Greenplum 是什么

是一款开源的分布式数据库存储解决方案,其主要关注在数据仓库和商业智能方面。可以在虚拟化x86服务器上运行无分享(shared-nothing)的大规模并行处理(MPP)架构。

Greenplum最早是在10多年前(大约在2002年)出现的,基本上和Hadoop是同一时期(Hadoop 约是2004年前后,早期的Nutch可追溯到2002年)。当时的背景是:

互联网行业经过之前近10年的由慢到快的发展,累积了大量信息和数据,数据在爆发式增长,这些海量数据急需新的计算方式,需要一场计算方式的革命;

传统的主机计算模式在海量数据面前,除了造价昂贵外,在技术上也难于满足数据计算性能指标,传统主机的Scale-up模式遇到了瓶颈,SMP(对称多处理)架构难于扩展,并且在CPU计算和IO吞吐上不能满足海量数据的计算需求;

分布式存储和分布式计算理论刚刚被提出来,Google的两篇著名论文发表后引起业界的关注,一篇是关于GFS分布式文件系统,另外一篇是关于MapReduce 并行计算框架的理论,分布式计算模式在互联网行业特别是收索引擎和分词检索等方面获得了巨大成功。

二、Greenplum 特性

  • 支持海量数据存储和处理
  • 高性价比
  • 支持Just In Time BI:通过准实时、实时的数据加载方式,实现数据仓库的实时更新,进而实现动态数据仓库(ADW),基于动态数据仓库,业务用户能对当前业务数据进行BI实时分析(Just In Time BI)
  • 系统易用性
    1. 支持主流的sql语法,使用起来十分方便,学习成本低
    2. 扩展性好,支持多语言的自定义函数和自定义类型等
    3. 提供了大量的维护工具,使用维护起来很方便
    4. 在internet上有这丰富的postgreSQL资源供用户参考
  • 支持线性扩展:采用MPP并行处理架构。在MPP结构中增加节点就可以线性提供系统的存储容量和处理能力
  • 较好的并发支持及高可用性支持除了提供硬件级的Raid技术外,还提供数据库层Mirror机制保护,也剧场将每个节点的数据在另外的节点中同步镜像,单个节点的错误不影响整个系统的使用。对于主节点,还提供Master/Stand by机制进行主节点容错,当主节点发生错误时,可以切换到Stand by节点继续服务
  • 支持MapReduce:一种大规模数据分析技术
  • 数据库内部压缩

三、Greenplum 架构

1、总体架构

数据库由Master Severs和Segment Severs通过Interconnect互联组成。

Master主机负责:建立与客户端的连接和管理;SQL的解析并形成执行计划;执行计划向Segment的分发收集Segment的执行结果;Master不存储业务数据,只存储数据字典。

Segment主机负责:业务数据的存储和存取;用户查询SQL的执行。

2、greenplum使用mpp架构

基本体系架构

master节点,可以做成高可用的架构

master node高可用,类似于hadoop的namenode和second namenode,实现主备的高可用。

segments节点

三、Greenplum 并行管理

对于数据的装载和性能监控。

并行备份和恢复。

数据访问流程,数据分布到不同颜色的节点上

查询流程分为查询创建和查询分发,计算后将结果返回。

对于存储,将存储的内容分布到各个结点上。

对于数据的分布,分为hash分布和随机分布两种。

均匀分布的情况:

五、Greenplum 衍生知识点梳理

5.1 OLTP与OLAP

数据库系统一般分为两种类型:OLTP、OLAP:

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

OLTP的基本特点:

  1. 数据在系统中产生
  2. 基于交易的处理系统(Transaction-Based)
  3. 每次交易牵涉的数据量很小
  4. 对响应时间要求非常高
  5. 用户数量非常庞大,主要是操作人员
  6. 数据库的各种操作主要基于索引进行

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

OLAP的基本特点是:

  1. 本身不产生数据,其基础数据来源于生产系统中的操作数据(OperationalData)
  2. 基于查询的分析系统
  3. 复杂查询经常使用夺标联结、全表扫描等,牵涉的数据量往往十分庞大
  4. 响应时间与具体查询有很大关系
  5. 用户数量相对较小,其用户主要是业务人员与管理人员
  6. 优于业务问题不固定,数据库的各种操作不能完全基于索引进行

greenplum属于OLAP

5.2 PostgreSQL与Greenplum的关系

5.2.1 PostgreSQL

PostgreSQL:是一种非常先进的对象-关系型数据库管理系统(ORDBMS),是目前功能最强大,特性最丰富和技术最先进的自由软件数据库系统之一

特性:

  1. 函数/存储过程

    1. 内置的plpgsql,一种类似oracle的plsql的语言
    2. 支持的脚本语言有:PL/Lua、PL/LOLCODE、PL/Perl、PL/HP、PL/Python、PL/Ruby、PL/sh、PL/Tcl和PL/Scheme
    3. 编译语言有C、C++、JAVA
    4. 统计语言PL/R
  2. 索引:支持用户歹意的索引访问方法,并且内置B-tree、哈希和GiST索引。特点如下:
    1. 可以从后向前扫描
    2. 可以创建表达式索引
    3. 部分索引
  3. 触发器
  4. 并发管理(MVCC,多版本并发机制)
  5. 规则(RULE):规则允许我们队由一个查询生成的查询数进行改写
  6. 数据类型
    1. 任意精度的数值类型
    2. 无线长度的文本类型
    3. 几何原语
    4. IPv4和IPv6类型
    5. CIDR块和MAC地址
    6. 数组
    7. 自定义类型
  7. 用户定义对象:索引、操作符(内部操作符可以被覆盖)、聚集函数、域、类型转换、编码转换
  8. 继承:表可以相互继承。一个表可以有父表,父表的结构变化会导致子表的结构变化,而对子表的插入和数据更新等也会反映到父表中
  9. 其他特性与扩展
    1. 二进制和文本大对象存储
    2. 在线备份
    3. TOAAT(The Oversized-Attribute Storage Technique)用于透明地在独立的地方保存大的数据库属性。当数据超过一定大小的时候,会自动进行压缩以节省空间
    4. 正则表达式
    5. Slony-I
    6. pgcluster
    7. Mammoth replicator
    8. Bucardo

5.2.2 Greenplum

本质上讲,greenplum 是一个关系型数据库集群,是由数个独立的数据库服务组合成的逻辑数据库。

与oracle RAC的shared-Everything架构不同,greenplum采用Shared-Nothing架构,整个集群由很多个数据节点(Segment Host)和控制节点(master Host)组成,其中每个数据节点上可以运行多个数据库。简单来说,Shared-Nothing是 一个分部式的架构,每个节点相对独立。在典型的Shared-Nothing中,每一个节点上所有的资源(CPU,内存,磁盘)都是独立的,每个节点都只有全部数据的一部分,也只能使用本节点的资源

在greenplum中,需要存储的数据在进入数据库时,将先进行数据分布的处理工作,将一个表中的数据平均分布到每个节点上,并为每个表指定一个分布列(distribute Column),之后便根据Hash来分布数据。基于Shared-Nothing的原则,Greenplum这样处理可以充分发挥每个节点处I/O的处理能力

5.2.3 并行与并发

并发是两个任务可以在重叠的时间段内启动,运行和完成。并行是任务在同一时间运行,例如,在多核处理器上。
并发是独立执行过程的组合,而并行是同时执行(可能相关的)计算。
并发是一次处理很多事情,并行是同时做很多事情。
应用程序可以是并发的,但不是并行的,这意味着它可以同时处理多个任务,但是没有两个任务在同一时刻执行。
应用程序可以是并行的,但不是并发的,这意味着它同时处理多核CPU中的任务的多个子任务。
一个应用程序可以即不是并行的,也不是并发的,这意味着它一次一个地处理所有任务。
应用程序可以即是并行的也是并发的,这意味着它同时在多核CPU中同时处理多个任务。

greenplum是基于低成本的开放平台基础上提供强大的并行数据计算性能和海量数据管理能力。这个能力主要指的是并行计算能力,是对大任务、复杂任务的快速高效计算。

六、Greenplum 适用场景

greenplum的主要特点是询速度快、数据装载速度快、批量DML处理快、性能可以随着硬件的添加呈线性增加、拥有非常良好的可扩展性。主要适用于面向分析的应用,如构建企业级ODS/EDW、数据集市等。

greenplum不适用像OLTP数据库一样,在极短的时间处理大量的并发小任务,这个并非MPP数据库所长。再通俗点说,Greenplum主要定位在OLAP领域,利用Greenplum MPP数据库做大数据计算或分析平台非常适合,例如:数据仓库系统、ODS系统、ACRM系统、历史数据管理系统、电信流量分析系统、移动信令分析系统、SANDBOX自助分析沙箱、数据集市等等。

而MPP数据库都不擅长做OLTP交易系统,所谓交易系统,就是高频的交易型小规模数据插入、修改、删除,每次事务处理的数据量不大,但每秒钟都会发生几十次甚至几百次以上交易型事务 ,这类系统的衡量指标是TPS,适用的系统是OLTP数据库或类似Gemfire的内存数据库。

七、Greenplum 部署及测试

请参考博文:https://www.jianshu.com/p/b5c85cadb362。

由于greenplum服务部署平台为linux,我没有在linux平台上工作过,因此需要他人部署验证,或等待我大致掌握了linux后再做继续做系列博文。

未完待续。。。。。

文章摘自:https://www.jianshu.com/p/b5c85cadb362

https://www.cnblogs.com/wujin/p/6781264.html

https://www.cnblogs.com/huajiezh/p/6052290.html

GreenPlum 浅谈相关推荐

  1. 浅谈服务治理、微服务与服务网格(Service Mesh)

    浅谈服务治理.微服务与Service Mesh Spring Cloud 之"出身名门望族" 作为当下最火热的微服务框架,Spring Cloud的名字可以说是无人不知.无人不晓, ...

  2. 浅谈MySQL存储引擎-InnoDBMyISAM

    浅谈MySQL存储引擎-InnoDB&MyISAM 存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式 ...

  3. 【大话设计模式】——浅谈设计模式基础

    初学设计模式给我最大的感受是:人类真是伟大啊!单单是设计模式的基础课程就让我感受到了强烈的生活气息. 个人感觉<大话设计模式>这本书写的真好.让貌似非常晦涩难懂的设计模式变的生活化.趣味化 ...

  4. 学校计算机机房好处,浅谈学校计算机机房维护

    浅谈学校计算机机房维护    现在的学校机房都配置了数量较多的计算机,而且机房的使用非常频繁.对于怎样维护好计算机,特别是计算机软件系统,对广大计算机教师来说是一个很重要且非常现实的问题.下面就本人在 ...

  5. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

  6. mybatis与php,浅谈mybatis中的#和$的区别

    浅谈mybatis中的#和$的区别 发布于 2016-07-30 11:14:47 | 236 次阅读 | 评论: 0 | 来源: 网友投递 MyBatis 基于Java的持久层框架MyBatis 本 ...

  7. 浅谈GCC预编译头技术

    浅谈GCC预编译头技术 文/jorge --谨以此文,悼念我等待MinGW编译时逝去的那些时间. 其 实刚开始编程的时候,我是丝毫不重视编译速度之类的问题的,原因很简单,因为那时我用BASICA.后来 ...

  8. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

    震惊!世上最接地气的字符串浅谈(HASH+KMP) 笔者过于垃圾,肯定会有些错的地方,欢迎各位巨佬指正,感激不尽! 引用:LYD的蓝书,一本通,DFC的讲稿,网上各路巨佬 Luguo id: 章鱼那个 ...

  9. 浅谈几种区块链网络攻击以及防御方案之其它网络攻击

    旧博文,搬到 csdn 原文:http://rebootcat.com/2020/04/16/network_attack_of_blockchain_other_attack/ 写在前面的话 自比特 ...

最新文章

  1. CentOS6.6+Puppet3.7.3分布式部署Zabbix2.4监控系统
  2. 欧氏空间内积定义_线性代数 (8) -- 欧式空间 (让生活大不同)
  3. php操作MySQL
  4. Hibernate 多对多映射实列
  5. --save 和--save-dev的区别
  6. render_template 网页模板
  7. linux 生成随机数 命令,Linux生成随机数的多种方法
  8. “持续亏钱”的NIO Power反而让蔚来更具竞争优势
  9. 【排序】内部排序算法实现
  10. 发布与安装Github Packages
  11. Python办公自动化——批量合并word文件
  12. matlab数据类型single vs double
  13. linux自动任务计划任务,「linux下的计划任务——只执行一次的定时任务」- 海风纷飞Blog...
  14. JavaFX源码分析和实战之音频播放:MediaPlayer和AudioClip播放音频剪辑以及AudioClip与MediaPlayer的区别
  15. WPS文字 JSA 学习笔记 - 转PDF后要带自定义目录
  16. DeepSpeech语音转文本合成技术
  17. 【源码共享】我花2小时写了微信官网的响应式布局HTML+CSS 换成旅行主题风格更炫酷了
  18. 胡喜:我是如何从菜鸟做到架构师的
  19. 多种图像配准方法的综合比较(KAZE、SIFT、SURF等)
  20. 原创文章:使用Vuejs实现个人所得税功能,以及5000起点和3500起点之间的缴费变化兼容移动端

热门文章

  1. IT草根创业者该做什么?
  2. 关于Web软件的界面设计——《Web软件用户界面设计指南》
  3. 【机械】二维钢桁架分析与设计附matlab代码
  4. Python assert函数
  5. matlab 思维数组_MATLAB多维数组常用方法
  6. Java 函数优雅之道
  7. SOCKS代理 与HTTP代理的区别
  8. unity 将3D物体显示在UI前面(保姆级 超容易)
  9. CNopendata机场信息数据简介
  10. java下面哪些定义正确,请问,以下哪些是java中定义的合法关键字?请选择所有正确答案:...