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

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB PostgreSQL 版,企业版 4核16GB
推荐场景:
HTAP混合负载
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介:

本节书摘来自华章出版社《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平台上。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
SQL Oracle 关系型数据库
实时计算 Flink版操作报错之往GREENPLUM 6 写数据,用postgresql-42.2.9.jar 报 ON CONFLICT (uuid) DO UPDATE SET 语法有问题。怎么解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
2月前
|
存储 JSON 关系型数据库
《Postgresql实战》笔记(二)
《Postgresql实战》笔记(二)
60 0
|
2月前
|
存储 关系型数据库 MySQL
12:企业规范约束-MySQL
12:企业规范约束-MySQL
59 0
|
9月前
|
关系型数据库 MySQL 中间件
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
企业实战(10)基于Maxscale中间件实现Mysql读写分离实战
105 0
|
7天前
|
JavaScript 关系型数据库 API
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
这篇文章介绍了什么是Prisma以及如何在Node.js和TypeScript后端应用中使用它。Prisma是一个开源的下一代ORM,包含PrismaClient、PrismaMigrate、PrismaStudio等部分。文章详细叙述了安装PrismaCLI和依赖包、初始化Prisma、连接数据库、定义Prisma模型、创建Prisma模块的过程,并对比了Prisma和Sequelize在Nest.js中的使用体验,认为Prisma更加便捷高效,没有繁琐的配置。
Nest.js 实战 (二):如何使用 Prisma 和连接 PostgreSQL 数据库
|
2月前
|
存储 关系型数据库 MySQL
数据管理的艺术:PolarDB开源版详评与实战部署策略(一)
PolarDB-X是阿里巴巴自研的高性能云原生分布式数据库,基于共享存储的Shared-nothing架构,支持MySQL生态,具备金融级高可用、分布式水平扩展、HTAP混合负载等能力。它通过CN(计算节点)和DN(存储节点)实现计算与存储分离,保证数据强一致性,并支持全局二级索引和多主多写。PolarDB-X开源版提供更高程度的定制化和控制权,适合追求技术自主性和成本优化的开发者。部署方式包括RPM包、PXD工具和Kubernetes,其中PXD工具提供了一键部署的便利性。
234103 22
|
1月前
|
SQL 关系型数据库 PostgreSQL
PostgreSQL和greenplum的copy命令可以添加字段吗?
【6月更文挑战第5天】PostgreSQL和greenplum的copy命令可以添加字段吗?
19 3
|
2月前
|
存储 关系型数据库 分布式数据库
数据管理的艺术:PolarDB开源版详评与实战部署策略(二)
PolarDB-PG是阿里云的一款云原生关系型数据库,100%兼容PostgreSQL,支持Oracle语法,采用Shared-Storage存储计算分离架构,提供极致弹性、毫秒级延迟的HTAP能力。具备高可用、高可靠和弹性扩展特性,支持单机、存储计算分离和X-Paxos三节点等多种部署形态。通过Docker可快速部署实例,包括单节点、一主一备和HTAP(一主两备)实例。此外,文章还介绍了在ECS上使用ESSD云盘搭建PolarDB-PG的详细步骤,适合开发和测试环境。
222938 22
|
1月前
|
监控 关系型数据库 数据库
PostgreSQL和greenplum的copy命令如何使用?
【6月更文挑战第5天】PostgreSQL和greenplum的copy命令如何使用?
30 2
|
2月前
|
Cloud Native 关系型数据库 分布式数据库
【PolarDB开源】PolarDB数据迁移实战:平滑过渡至云原生数据库
【5月更文挑战第24天】本文介绍了如何平滑迁移数据至阿里云的云原生数据库PolarDB,包括迁移准备、策略选择、步骤、验证及示例代码。通过需求分析、环境准备和数据评估,选择全量、增量或在线迁移策略。使用数据导出、导入及同步工具(如DTS)完成迁移,并在完成后验证数据一致性、性能和安全。正确执行可确保业务连续性和数据完整性。
139 1