《Greenplum企业应用实战》一1.3 PostgreSQL与Greenplum的关系-阿里云开发者社区

开发者社区> 华章计算机> 正文

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

简介:
+关注继续查看

本节书摘来自华章出版社《Greenplum企业应用实战》一书中的第1章,第1.3节,作者 何勇 陈晓峰,更多章节内容可以访问云栖社区“华章计算机”公众号查看

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平台上。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
SpringBoot实战(三)之使用RestFul Web服务
一、导入maven依赖 4.0.0 org.springframework gs-consuming-rest 0.1.0 org.springframework.
1762 0
《SOA与REST:用REST构建企业级SOA解决方案》目录—导读
本书的作者们对于什么是REST,什么不是REST具有非常清晰的理解,所以,本书给你带来的知识,可以帮助你区分哪些是真正的RESTful,哪些又只是自我标榜。你将学习SOA与REST的基础知识,还会了解若干结合了SOA与REST的设计模式。你还会学到如何构建服务及服务消费者。
3009 0
优秀的企业领导人二十个好习惯
  最优秀的企业领导人知道自己需要什么,并能尽全部的努力去达到自己的目标,他们懂得做人、善于决策……  在研究大量成功企业领导者的案例后,我们发现,这些最优秀的企业领导人知道自己需要什么,并能尽全部的努力去达到自己的目标,他们懂得做人、善于决策、充满热忱、持续创新、架构关系、激励团队以及赢得拥戴……最成功的企业家所共同具有的良好习惯和素质,使得这些企业领导人能够脱颖而出。
920 0
《机器学习实战》k最近邻算法(K-Nearest Neighbor,Python实现)
============================================================================================ 《机器学习实战》系列博客是博主阅读《机器学习实战》这本书的笔记,包含对其中算法的理解和算法的Pyt...
1580 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载