《Greenplum企业应用实战》一1.3 PostgreSQL与Greenplum的关系

1.3 PostgreSQL与Greenplum的关系

1.3.1 PostgreSQL

PostgreSQL是一种非常先进的对象–关系型数据库管理系统(ORDBMS),是目前功能最强大,特性最丰富和技术最先进的自由软件数据库系统之一,其某些特性甚至连商业数据库都不具备。这个起源于伯克利(BSD)的数据库研究计划目前已经衍生成一项国际开发项目,并且有非常广泛的用户。
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。
(2)索引
PostgreSQL支持用户定义的索引访问方法,并且内置了B-tree、哈希和GiST索引。PostgreSQL中的索引有下面几个特点。
可以从后向前扫描。
可以创建表达式索引。
部分索引。
(3)触发器
触发器是由SQL查询的动作触发的事件。比如,一个INSERT查询可能激活一个检查输入值是否有效的触发器。大多数触发器都只对INSERT或者UPDATE 查询有效。
PostgreSQL完全支持触发器,可以附着在表上,但是不能在视图上。不过视图可以有规则。多个触发器是按照字母顺序触发的。我们还可以用其他过程语言书写触发器函数,不仅仅PL/PgSQL。
(4)并发管理(MVCC)
PostgreSQL的并发管理使用的是一种叫做“MVCC”(多版本并发机制)的机制,这种机制实际上就是现在在众多所谓的编程语言中极其火爆的“Lock Free”,其本质是通过类似科幻世界的时空穿梭的原理,给予每个用户一个自己的“时空”,然后通过原子的“时空”控制来控制时间基线,并以此控制并发更改的可见区域,从而实现近乎无锁的并发,而同时还能在很大程度上保证数据库的ACID特性。
(5)规则(RULE)
规则允许我们对由一个查询生成的查询树进行改写。
(6)数据类型
PostgreSQL支持非常广泛的数据类型,包括:
任意精度的数值类型;
无限长度的文本类型;
几何原语;
IPv4和IPv6类型;
CIDR块和MAC地址;
数组。
用户还可以创建自己的类型,并且可以利用GiST框架把这些类型做成完全可索引的,比如来自PostGIS的地理信息系统(GIS)的数据类型。
(7)用户定义对象
因为PostgreSQL使用一种基于系统表的可扩展的结构设计,所以PostgreSQL内部的几乎所有对象都可以由用户定义,这些对象包括:
索引;
操作符(内部操作符可以被覆盖);
聚集函数;
域;
类型转换;
编码转换。
(8)继承
PostgreSQL的表是可以相互继承的。一个表可以有父表,父表的结构变化会导致子表的结构变化,而对子表的插入和数据更新等也会反映到父表中。
(9)其他特性与扩展
PostgreSQL还支持大量其他的特性,比如:
二进制和文本大对象存储;
在线备份;
TOAST(The Oversized-Attribute Storage Technique)用于透明地在独立的地方保存大的数据库属性,当数据超过一定大小的时候,会自动进行压缩以节省空间;
正则表达式。
此外PostgreSQL还有大量的附加模块和扩展版本,比如,多种不同的主从/主主复制方案:
Slony-I;
pgcluster;
Mammoth replicator;
Bucardo。

1.3.2 Greenplum

简单地说,Greenplum就是一个与Oracle、DB2、PostgreSQL一样面向对象的关系型数据库。我们通过标准的SQL可以对Greenplum中的数据进行访问存取。
本质上讲,Greenplum是一个关系型数据库集群,它实际上是由数个独立的数据库服务组合成的逻辑数据库。与Oracle RAC的Shared-Everything架构不同,Greenplum采用Shared-Nothing架构,整个集群由很多个数据节点(Segment Host)和控制节点(Master Host)组成,其中每个数据节点上可以运行多个数据库。简单来说,Shared-Nothing是一个分布式的架构,每个节点相对独立。在典型的Shared-Nothing中,每一个节点上所有的资源(CPU,内存,磁盘)都是独立的,每个节点都只有全部数据的一部分,也只能使用本节点的资源。
基于对Shared-Nothing分布式架构模式的分析,Greenplum高效处理I/O数据吞吐和并发计算的过程就很好理解了。在Greenplum中,需要存储的数据在进入数据库时,将先进行数据分布的处理工作,将一个表中的数据平均分布到每个节点上,并为每个表指定一个分发列(distribute Column),之后便根据Hash来分布数据。基于Shared-Nothing的原则,Greenplum这样处理可以充分发挥每个节点处I/O的处理能力。在这一过程中,控制节点(Master Host)将不再承担计算任务,而只负责必要的逻辑控制和客户端交互。I/O瓶颈的解决为并行计算能力的提升创造了良好的环境,所有节点服务器组成一个强大的计算平台,实现快速的海量并行运算。Greenplum在数据仓库、商业智能的应用上,尤其是在海量数据的处理方面性能极其优异。
Greenplum是面向数据仓库应用的关系型数据库,它是基于目前流行的PosgreSQL开发的,跟PostgreSQL的兼容性非常好,大部分的PostgreSQL客户端工具及PostgreSQL应用都能运行在Greenplum平台上。

时间: 2024-10-28 04:07:18

《Greenplum企业应用实战》一1.3 PostgreSQL与Greenplum的关系的相关文章

《Greenplum企业应用实战》一1.4 Greenplum特性及应用场景

1.4 Greenplum特性及应用场景 1.4.1 Greenplum特性 (1)支持海量数据存储和处理当今是个数据迅速增长的时代,数据量从过去的MB到GB,再到TB增长到现在的PB级规模,传统的OLTP数据库在TB级别以上的数据管理中已经捉襟见肘.Greenplum使用MPP架构,同时使用多台机器并行计算,极大地提高了对海量数据的处理能力.采取MPP架构的数据库系统才能对海量数据进行管理.(2)高性价比Greenplum数据库可以搭建在业界各种开放式硬件平台上,在硬件选型上有很强的自由性.相

《Greenplum企业应用实战》一第1章 Greenplum简介1.1 Greenplum的起源和发展历程

第1章 Greenplum简介 本章先介绍Greenplum的产生背景.特性及应用场景.与PostgreSQL关系,以及发展历程. 1.1 Greenplum的起源和发展历程 短短十多年,互联网在中国经历了从门户网站.搜索.即时通信.游戏娱乐.垂直细分--到电子商务.Web 2.0,再到社会化网络.移动互联网的一系列进化和变革.无论是互联网还是移动互联网,都是由海量的数据构成.对海量数据分析的需求开始突破传统边界,不再局限于电信.移动.金融.保险.制造等传统企业,涌现出大批将海量.庞杂的数据转化

《Greenplum企业应用实战》一第3章 Greenplum实战3.1 历史拉链表

第3章 Greenplum实战 从本章开始我们结合实际需求,阐述一下日常项目开发中如何结合Greenplum的特性进行高效的开发,展现出Greenplum在海量数据分析中的优势. 本章将介绍两个完整的例子:数据仓库拉链记历史和网页浏览日志分析.在这两个例子中,会结合Greenplum的一些特性加以描述,之后会介绍使用Greenplum中要注意的一些特性,以及这些特性对性能的影响. 3.1 历史拉链表 数据仓库是一个面向主题的.集成的.相对稳定的.反映历史变化的数据集合,用于支持管理决策.由于需要

《Greenplum企业应用实战》一第2章 Greenplum快速入门2.1 软件安装及数据库初始化

第2章 Greenplum快速入门 本章将介绍如何快速安装部署Greenplum,以及Greenplum的一些常用命令及工具."工欲善其事,必先利其器",因此我们先从如何安装Greenplum开始介绍,然后介绍一些简单的工具,以及Greenplum的语法及特性.为了让读者更加快速地入门,避免涉及太多底层的东西.本章不会涉及硬件选型.操作系统参数讲解.机器性能测试等高级内容,这些会在"第8章Greenplum线上环境部署"中介绍. 2.1 软件安装及数据库初始化 下面

《Greenplum企业应用实战》一导读

前 言 为什么写作本书 阿里巴巴是国内最早使用Greenplum作为数据仓库计算中心的公司.从2009年到2012年Greenplum都是阿里巴巴B2B最重要的数据计算中心,它替换掉了之前的Oracle RAC,有非常多的优点. Greenplum的性能在数据量为TB级别时表现非常优秀,单机性能相比Hadoop要快好几倍. Greenplum是基于PostgreSQL的一个完善的数据库,在功能和语法上都要比Hadoop上的SQL引擎Hive好用很多,对于普通用户来说更加容易上手. Greenpl

《Greenplum企业应用实战》一2.3 畅游Greenplum

2.3 畅游Greenplum 本节只介绍一些常用的命令,重点是Greenplum特有的一些命令,而对于一般数据库都具备的特性及SQL标准语法,本节提到的比较少,因此要求读者在阅读本节具备一定的SQL基础. 2.3.1 如何访问Greenplum psql psql是Greenplum/PostgreSQL默认的客户端,前面初始化数据库的时候已经使用过了,下面介绍一些详细的用法. ```javascript [gpadmin@dw-greenplum-1 ~]$ psql --help This

《Greenplum企业应用实战》一1.5 小结

1.5 小结 本章非常简短地介绍了Greenplum产生的背景,并分别对比OLTP与OLAP.PostgreSQL和Greenplum,另外简要介绍了Greenplum的特性.应用场景及发展历程,相信通过这一章能让读者在总体上对Greenplum有所认识.

《Greenplum企业应用实战》一2.2 安装Greenplum的常见问题

2.2 安装Greenplum的常见问题 安装Greenplum最常见的错误就是环境变量设置错误,网卡配置错误,或者是每个Segment的通道或网络没有打通. 如果子节点的操作系统环境不一样,也可能会导致各种各样的错误.所以在搭建环境的时候,要求每一台机器的配置基本一样,方便以后管理与维护,避免一些奇怪的问题.下面将介绍几个常见的报错及处理方法. 2.2.1 /etc/hosts配置错误 现在来看一个奇怪的报错SQL,查询一张普通表时报如下错误,但是查询数据字典又不报错: testDB=# se

《Greenplum企业应用实战》一3.2 日志分析

3.2 日志分析 日志分析是网站分析的基础,通过对网站浏览的日志进行分析,可以为网站优化提供数据支持,了解用户群以及用户浏览特性,对改进网站体验,提升流量有非常重要的意义.下面将通过Greenplum实现一个简单的网站浏览日志的分析. 3.2.1 应用场景描述 分析全网站每分钟的PV.UV,并导出到Excel中,画出折线图.解析URL,获取URL中的参数列表.通过URL取得member_id,然后统计当天浏览次数的用户分布,如浏览次数在1-5.6-10.11-50.51-100以及100次以上的