GreenPlum学习(一)

来源:互联网 发布:浙江儿童dna数据库利弊 编辑:程序博客网 时间:2024/06/10 18:51

1、 0LTP 与 OLAP

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

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

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

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

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

2、 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。

(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;
□ pgc luster;
□ Mammoth replicator;
□ BucardOo