文档章节

DevOps 资讯 | PostgreSQL 的时代到来了吗 ?

RiboseYim
 RiboseYim
发布于 06/23 11:06
字数 1883
阅读 31
收藏 4
点赞 0
评论 0

PostgreSQL是对象-关系型数据库,BSD 许可证。拼读为"post-gress-Q-L"。

近30年来 PostgreSQL 无疑是您从未听说过的、最常见的开源 SQL 数据库。PostgreSQL 经常身居幕后:从 EnterpriseDB 到 Amazon Redshift 、Greenplum、Netezza 及其他许多商业数据库产品。

最近在许多商业产品的推动下,PostgreSQL 逐渐走向前台。大约十年前 EnterpriseDB 打开了潘多拉的盒子 —— 作为商业支持平台提供 Oracle 的替代品。特别是最近一段时间,云服务商提供了一系列托管产品:从 Amazon Wed Services 开始, 支持 PostgreSQL 作为其托管关系数据库服务 (Relational Database Service,RDS) 之一。

过去一年 AWS 和它的竞争对手将 PostgreSQL 的市场前景提升了一个等级。AWS 推出了兼容 PostgreSQL 的原生云数据库平台 Amazon Aurora ,作为回应 Microsoft 和 Google 推出了 Azure Database for PostgreSQL 和 Cloud SQL for PostgreSQL 解决方案。

Mark Porter(马克·波特,Amazon Aurora PostgreSQL 和 Amazon RDS for PostgreSQL 主管) 不得不通过一些花哨的方法表达 AWS 对开源社区的支持,例如修复 Bug、提供免费测试帐户和其他形式的财政支助。PostgreSQL 在 AWS 上的实现不是开源的, 因为它是为 AWS 自身的云基础结构而设计。

PostgreSQL 虽然是聚焦于事务型数据库的开源项目, 但是许多基于它的商业产品都是大规模并行处理数据仓库(Massively Parallel Processing,MPP)。出于这个原因, Greenplums,Netezzas 和Redshifts 创建了自己的开源 forks 项目, 甚至添加像 columnar tables 这样的基本功能。

PostgreSQL 的一个常见主题是支持企业级负载的开源关系数据库。关于这一点,竞争者包括 MySQL 和 MariaDB , 但仍然存在差异, PostgreSQL 支持更复杂的 SQL 函数和数据类型, 包括数组(arrays), 连接(joins)和视图(Window Functions)等等。

另一个原因是出现了“replace Oracle”的口号, PL/pgSQL 的设计非常类似 Oracle PL/SQL。这正是EnterpriseDB 多年以来一直提倡的,同时获得了 美国金融业监管局(Financial Industry Regulatory Authority,FINRA) 的支持。FINRA 将大约 650 个 Oracle 实例迁移入云( Amazon RDS for PostgreSQL),作为一个更大战略的一部分, 将其整个部署在 IT 基础设施上的业务迁移到 AWS。根据 FINRA 首席开发者 Steve Downs 的说法,对于 Oracle DBA 而言,在 PostgreSQL 中使用诸如对象/关系映射(object/relational mappings)、存储过程(stored procedures)以及利用视图(view)支持复杂查询的功能,给人一种似曾相识的感觉。

然而, 作为两种不同的数据(包括 SQL 实现)PostgreSQL 和 Oracle 之间毕竟存在显著差异。例如数据库如何处理数字和可变字符字段、同义词、复制 (replication,PostgreSQL 不像 Oracle 那样成熟 ) 以及实例化视图刷新等等。

PostgreSQL 有它独特的优势,即作为第三方寻求自主数据库产品的开源平台。重要的是, 去年秋季发布的最新 10.0 版本(2017年11月09日), 解决了在 Oracle 或 SQL Server 产品中被视为理所当然的功能,包括声明式表分区(declarative table partitioning)、改进后的复制功能(replication), 发布/订阅(publish/subscribe)、仲裁提交(quorum commits,对于云部署可能非常有用)。

总之,PostgreSQL 还有很多需要追赶的领域, Oracle 或 SQL Server 用户也仍然有理由继续使用他们的平台。大部分的差异将体现在数据库的实施, 而不是一些具体的功能特性。这种差异将主要体现在数据库弹性、自动化、基础架构选型以及云计算的规模等方面。有了 AWS、Azure 和 Google Cloud 的加持(非常值得注意的一个信号),若干年后 PostgreSQL 可能最终走出阴影。

PostgreSQL 简史

PostgreSQL 开始于 UC Berkeley 的 Ingres 计划,经历了长时间的演变。

Ingres 计划的领导者 Michael Stonebraker(迈克尔·斯通布雷克,2015 年图灵奖得主,目前是麻省理工学院兼职教授)在 1982 年离开 Berkeley 进入商业公司 Ingres,1985年又返回 Berkeley 开始新项目 Postgres 。Postgres 项目组从1986年开始发表了一些描述系统基本原理的论文并发行了版本1、2、3 、4,到1993年就有大量的用户存在了。尽管 Postgres计划正式的终止了,BSD许可证却使开发者可以获得副本并进一步开发系统。1994年,两个 UC Berkeley 的研究生 Andrew Yu 和 Jolly Chen 增加了一个SQL语言解释器来替代早先的基于 Ingres 的 QUEL 系统,创建了 Postgres95。

1996年重命名为:PostgreSQL。(版本 6.0 )

2000年,前 Red Hat 投资者筹组了一间名为Great Bridge的公司来商业化PostgreSQL,以和其他商用数据库厂商竞争。2001年末,Great Bridge 因市场原因终止营运。2001年,Command Prompt, Inc. 发布了最老牌的PostgreSQL 商业软件 Mammoth PostgreSQL,并提供开发者赞助和贡献 PL/Perl、PL/php、维护 PostgreSQL Build Farm 等。

2005年1月 ,Pervasive Software 宣布参与社区及商业支持,直到 2006 年 7 月退出。2005年1月19日,版本 8.0 发行。自 8.0 后,PostgreSQL以原生(Native)的方式,运行于Windows系统。2006年6月,Solaris 10 包含 PostgreSQL一起发布。

2012年09月10日,PostgreSQL 发布 9.2 版本,主要在性能方面的提升,也包括一些新的 SQL 特性。 2016年10月27日,PostgreSQL 发布 9.6.1 版本。 2017年11月09日,PostgreSQL 发布 10.1 版本。

ABC

# install
$ brew install postgresql
# version
$ pg_ctl -V
pg_ctl (PostgreSQL) 10.1
# initdb -- 创建一个新的PostgreSQL数据库簇(cluster),单个服务端实例管理的多个数据库的集合。
# 创建数据库数据的宿主目录,生成共享的系统表 (不属于任何特定数据库的表)和创建template1 和postgres数据库
$ initdb /Users/yanrui/Data/TestPG
# start
$ pg_ctl -D /Users/yanrui/Data/TestPG start
waiting for server to start....2018-01-03 14:13:17.005 CST [37621] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2018-01-03 14:13:17.005 CST [37621] LOG:  listening on IPv6 address "::1", port 5432
2018-01-03 14:13:17.006 CST [37621] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2018-01-03 14:13:17.048 CST [37623] LOG:  database system was shut down at 2018-01-03 14:11:30 CST
2018-01-03 14:13:17.066 CST [37621] LOG:  database system is ready to accept connections
 done
server started
# port listen
bash-3.2$ netstat -an | grep LISTEN     
tcp6       0      0  ::1.5432               *.*                    LISTEN
# createdb
bash-3.2$ createdb -O[owner] test_db
# default [当前登录系统用户名]
bash-3.2$ psql
2018-01-03 18:14:37.537 CST [45864] FATAL:  database "yanrui" does not exist
psql: FATAL:  database "yanrui" does not exist
You have new mail in /var/mail/yanrui
# login in
bash-3.2$ psql test_db
psql (10.1)
Type "help" for help.

# log out
test_db=# \q  (Ctrl+D)

# 卸载
$ brew uninstall postgres
# 开机
$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ rm -rf ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

Architecture OverView

资源

扩展阅读:DevOps 漫谈系列

更多精彩内容扫码关注公众号:RiboseYim's Blog 微信公众号

© 著作权归作者所有

共有 人打赏支持
RiboseYim
粉丝 70
博文 73
码字总数 164054
作品 0
广州
程序员
开发者讨论PostgreSQL的未来

Developers Discuss PostgreSQL's Future 开发者讨论PostgreSQL的未来 posted by Thom Holwerda on Fri 6th May 2011 21:00 UTC 发表于:2011年5月7日 北京时间05:00 The release of the fi......

xyxzfj
2011/05/07
0
0
PostgreSQL 11 继续带来更多性能提升,正在为 JIT 发力

PostgreSQL 11 将会是 2018 年晚些时候发布的下一个主要功能版本。虽然目前尚未完成,但我们可以从它们最近更新的发布说明看到对于即将到来的主要更新内容的概述。 没有太大的意外,提升性能...

局长
05/24
0
0
Oracle、MySQL、云计算、大数据,最热话题好文都在这了!

在过去的九个月里, DBAplus社群始终聚焦各种数据库、云计算、大数据及中间件等热门话题,坚持每天为大家献上最新鲜、最内涵的技术好文!下面小编就把这些优质文章分门别类,给大家做个梳理,...

DBAplus社群
2016/06/29
0
0
生产环境postgresql主从环境配置

主从服务器IP: 192.168.11.131 postgreSQL master 192.168.11.132 postgreSQL slave 服务器系统版本: # cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.2 (Maipo) PG......

断臂人
07/19
0
0
PostgreSQL的日志类型

刚开始学习postgres的时候,可能对PostgreSQL中的日志概念比较模糊,到底有多少种日志,哪些日志是能删除的,各自又记录什么样的功能。 PostgreSQL中有三种日志,pglog,pgxlog和pgclog。 一...

kenyon_君羊
2012/12/21
0
0
centos6.5下postgresql9.4.3安装与配置

一、简介 PostgreSQL 是一种非常复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大,特性最丰富和最复杂的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于...

jxzhfei
06/26
0
0
PostgreSQL在CentOS下的源码安装

下面主要是PostgreSQL在CentOS下的安装步骤,和Linux步骤基本类似。 1.环境: 操作系统:CentOS-6.2-x8664 虚拟机:Vmware-workstation 6.5 数据库:postgresql-9.1.3 工具: SecureCRT 5.1.2 2...

kenyon_君羊
2012/04/15
0
2
postgresql的hot standby(replication stream)

PG在9.*版本后热备提供了新的一个功能,那就是Stream Replication的读写分离,是PG高可用性的一个典型应用,也就是我们传统意义上说的Hot-Standby,比如Oracle的DG,mssql的mirror以及Mysql的...

kenyon_君羊
2012/04/24
0
15
数据库案例集锦 - 开发者的《如来神掌》

标签 PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例 背景 「剑魔独孤求败,纵横江湖三十馀载,杀尽仇寇,败尽英雄,天下更无抗...

德哥
2017/06/09
0
0
Postgres XL FAQ

Q. What does XL stand for? XL is short for eXtensible Lattice. It also connotes an extra large version of PostgreSQL, in this case across multiple systems. Q. Is this a “NoSQL......

javasql
2014/07/31
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

回想过往,分析当下,着眼未来

好久没有真正的在纸质笔记本上写过东西了,感觉都快不会写字了,笔画都不知道怎么写了。接下来就说说咱们的正事。 2018年7月22日,我做了一个决定,那就是去参加安全培训(可能是我职业生涯中...

yeahlife
20分钟前
0
0
关于工作中的人际交往

关于工作中的人际交往 Intro 写了篇发泄情绪的博客,但不会发布出来。 大概就是,要么忍,要么滚。 以及一些不那么符合社会主义核心价值观,不满于大资本家与小资本家剥削的废话。

uniqptr
26分钟前
0
0
springMVC的流程

1.用户发送请求至前端控制器DispatcherServlet 2.DispatcherServlet收到请求调用HandlerMapping处理器映射器。 3.处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(...

JavaSon712
41分钟前
0
0
大数据教程(3.2):Linux系统软件安装之自动化脚本

博主前面文章有介绍过软件的安装,可以帮助IT人员顺利的完成功能软件安装;但是,对于我们运维人员或者需要管理软件安装的项目经理来说,有些应用一次行需要搭建很多台相同的软件环境(如tom...

em_aaron
59分钟前
0
0
Spring Boot 2.0.3 JDBC整合Oracle 12

整合步骤 1. Oracle驱动引入 Oracle驱动一般不能通过maven仓库直接下载得到,需自行下载并导入到项目的lib目录下,建议通过如下pom依赖引入下载的Oracle驱动 <!-- Oracle 驱动 -->...

OSC_fly
今天
0
0
java 8 并行流 - 1

下面创建一个并行流,与顺序流 //顺序流Stream.iterate(0L, i -> i + 1) .limit(Integer.MAX_VALUE) .reduce(0L, Long::sum);//并行流Stream.iterate(0L, i -> i......

Canaan_
今天
0
0
数据结构与算法5

二分法采用向下取整的方法 使用有序数组的好处是查找的速度比无序数组快的多,不好的方面是因为要将所有靠后的数据移开,所以速度较慢,有序数组和无序数组的删除操作都很慢。 有序数组在查找...

沉迷于编程的小菜菜
昨天
1
1
SpringBoot | 第十一章:Redis的集成和简单使用

前言 上几节讲了利用Mybatis-Plus这个第三方的ORM框架进行数据库访问,在实际工作中,在存储一些非结构化或者缓存一些临时数据及热点数据时,一般上都会用上mongodb和redis进行这方面的需求。...

oKong
昨天
5
0
对基于深度神经网络的Auto Encoder用于异常检测的一些思考

一、前言 现实中,大部分数据都是无标签的,人和动物多数情况下都是通过无监督学习获取概念,故而无监督学习拥有广阔的业务场景。举几个场景:网络流量是正常流量还是攻击流量、视频中的人的...

冷血狂魔
昨天
0
0
并发设计之A系统调用B系统

A-->B A在发送请求之前,用乐观锁,减少对B的重复调用,这样一定程度上是幂等性。 比如A系统支付功能,要调用B系统进行支付操作,但是前端对"支付"按钮不进行控制,即用户会不断多次点击支付...

汉斯-冯-拉特
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部