GreenPlum 浅谈

一、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)
  • 系统易用性
  • 支持主流的sql语法,使用起来十分方便,学习成本低
  • 扩展性好,支持多语言的自定义函数和自定义类型等
  • 提供了大量的维护工具,使用维护起来很方便
  • 在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的基本特点:

  • 数据在系统中产生
  • 基于交易的处理系统(Transaction-Based)
  • 每次交易牵涉的数据量很小
  • 对响应时间要求非常高
  • 用户数量非常庞大,主要是操作人员
  • 数据库的各种操作主要基于索引进行
  • OLAP(On-Line Analytical Processing,联机分析处理)系统:是基于数据仓库的信息分析处理过程,是数据仓库的用户接口部分。是跨部门的、面向主题的。

    OLAP的基本特点是:

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