Greenplum 从入门到放弃 四

Greenplum 从入门到放弃(四)

PostgreSQL与Greenplum的关系

PostgreSQL

PostgreSQL是一种非常先进的对象–关系型数据库管理系统(ORDBMS),是目前功能最强大,特性最丰富和技术最先进的自由软件数据库系统之一,其某些特性甚至连商业数据库都不具备。

PostgreSQL的特点可以说是数不胜数,称其为最先进的开
源软件数据库当之无愧,支持绝大部分的主流数据库特性,主
要体现在如下几方面:

  1. 函数/存储过程

PostgreSQL对非常丰富的过程类语言提供支持,可以编写自定义函数/存储过程

  • 内置的plpgsql,一种类似Oracle的PLsql的语言
  • 支持的脚本语言有:PL/Lua、PL/LOLCODE、PL/Perl、PL/HP、PL/Python、PL/Ruby、PL/sh、PL/Tcl和PL/Scheme。、
  • 编译语言有C、C++和JAVA。
  • ·统计语言PL/R
  1. 索引

PostgreSQL支持用户定义的索引访问方法,并且内置了Btree、哈希和GiST索引。PostgreSQL中的索引有下面几个特点:

  • 可以从后向前扫描
  • 可以创建表达式索引
  • 部分索引
  1. 触发器

触发器是由SQL查询的动作触发的事件。比如,一个INSERT查询可能激活一个检查输入值是否有效的触发器。大多数触发器都只对INSERT或者UPDATE查询有效。PostgreSQL完全支持触发器,可以附着在表上,但是不能在视图上。不过视图可以有规则。多个触发器是按照字母顺序触发的。我们还可以用其他过程语言书写触发器函数,不仅仅PL/PgSQL。

  1. 并发管理(MVCC)

PostgreSQL的并发管理使用的是一种叫做“MVCC”(多版本并发机制)的机制,这种机制实际上就是现在在众多所谓的编程语言中极其火爆的“Lock Free”,其本质是通过类似科幻世界的时空穿梭的原理,给予每个用户一个自己的“时空”
,然后通过原子的“时空”控制来控制时间基线,并以此控制并发更改的可见区域,从而实现近乎无锁的并发,而同时还能在很大程度上保证数据库的ACID特性。

  1. 规则(RULE)

规则允许我们对由一个查询生成的查询树进行改写。

  1. 数据类型

PostgreSQL支持非常广泛的数据类型,包括:

  • 任意精度的数值类型;
  • 无限长度的文本类型;
  • 几何原语;
  • IPv4和IPv6类型;
  • CIDR块和MAC地址;
  • 数组。

用户还可以创建自己的类型,并且可以利用GiST框架把这些类型做成完全可索引的,比如来自PostGIS的地理信息系统(GIS)的数据类型。

  1. 用户定义对象

因为PostgreSQL使用一种基于系统表的可扩展的结构设计,所以PostgreSQL内部的几乎所有对象都可以由用户定义,这些对象包括:

  • 索引;
  • 操作符(内部操作符可以被覆盖);
  • 聚集函数;
  • 域;
  • 类型转换;
  • 编码转换。
  1. 继承

PostgreSQL的表是可以相互继承的。一个表可以有父表,
父表的结构变化会导致子表的结构变化,而对子表的插入和数
据更新等也会反映到父表中。

  1. 其他特性与扩展
  • 二进制和文本大对象存储;
  • 在线备份;
  • TOAST(The Oversized-Attribute Storage Technique)用于透明地在独立的地方保存大的数据库属性,当数据超过一定大小的时候,会自动进行压缩以节省空间;
  • 正则表达式。

此外PostgreSQL还有大量的附加模块和扩展版本,比如,多种不同的主从/主主复制方案:

  • Slony-I;
  • pgcluster;
  • Mammoth replicator;
  • Bucardo。

Greenplum 从入门到放弃 三

Greenplum 从入门到放弃(三)

master 和 segment关系

Master和Segment其实都是一个单独的PostgreSQL数据库。
每一个都有自己单独的一套元数据字典,在这里,Master节点
一般也叫主节点,Segment也叫做数据节点。
Segment节点与Master节点的通信,通过千兆(或万兆)
网卡组成的内部连接(InterConnect),在同一台数据节点机
器上可以放多个Segment,不同的Segment节点会被赋予不同的
端口,同时,Segment之间也不断地进行着交互。为了实现高
可用,每个Segment都有对应的备节点(Mirror Segment),分
别存在于不同的机器上。

Client一般只能与Master节点进行交互,Client将SQL发给Master,然后Master对SQL进行分析后,再将其分配给所有的Segment进行操作,并且将汇总结果返回给客户端。

数据库存储

对于数据库来说,在性能上磁盘IO很容易成为瓶颈,由于数据库的特性,每一个SQL基本都是对全表数据进行分析,每次处理的数据量非常大,数据基本上都是没有缓存的(数据字典除外),极度消耗IO资源(全表扫描主要都是顺序IO),所以Greenplum对存储的要求比较高。在文件系统的选择上,在Linux下建议使用XFS,在Solaris下建议使用ZFS,对于Raid根据需求选择硬Raid或软Raid,如果需要更大的空间,建议使用Raid5,如果对性能有更高的要求,可以选择Raid 1+0。

网络

在确定机器配置的时候,要保证所有机器的网络都是通的,并且每台机器的防火墙都是关闭的,避免存在网络不通的问题。

Greenplum 从入门到放弃 二

Greenplum 从入门到放弃(二)

OLTP与OLAP

数据库系统一般分为两种类型,一种是面向前台应用的,应用比较简单,但是重吞吐和高并发的OLTP类型;一种是重计算的,对大数据集进行统计分析的OLAP类型。Greenplum属于后者。

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

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

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

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

Greenplum 从入门到放弃 一

Greenplum 从入门到放弃(一)

  • Greenplum的性能在数据量为TB级别时表现非常优秀,单机性能相比Hadoop要快好几倍

  • Greenplum是基于PostgreSQL的一个完善的数据库,在功能和语法上都要比Hadoop上的SQL引擎Hive好用很多,对于普通用户来说更加容易上手。

  • Greenplum有着完善的工具,相比Hive,整个体系都比较完善,不需要像Hive一样花太多的时间和精力进行改造,非常适合作为一些大型的数据仓库解决方案。

  • Greenplum能够方便地与Hadoop进行结合,可直接把数据写在Hadoop上,还可以直接在数据库上写MapReduce任务,并且配置简单。