百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

开源关系数据库“PostgreSQL” 的简史

toyiye 2024-06-21 12:23 10 浏览 0 评论


PostgreSQL 是一个开源关系数据库,根据 2022 年的一项研究,它是仅次于 MySQL 的第二大使用数据库。 PostgreSQL的专家工程师Craig Kirstierns介绍了PostgreSQL迄今为止的发展历史以及如何取得用户广泛信任的。

When Did Postgres Become Cool?

https://www.crunchydata.com/blog/when-did-postgres-become-cool

Ingres —> Postgres95 —> PostgreSQL

PostgreSQL起源于加州大学伯克利分校的Ingres(INteractive Graphics REtrieval System)项目。 该项目改变了开发方向,资金投入到关系数据库的开发中。 因为是Ingres的后继者,所以被命名为POSTGRES,1989年发布了第一个版本。

因为Ingres使用QUEL作为数据库操作语言,所以最初,POSTGRES采用的是QUEL而不是SQL,但是当ANSI(美国国家标准协会)在1986年决定优先考虑SQL时,许多关系数据库项目转向SQL。 POSTGRES在1995年发布的Postgres95中内置了SQL支持。到了1996年,“Postgres95”这个名字不太合适,所以最初版本的6.0以原来的POSTGRES和PostgreSQL的新名字发布,明确表示SQL支持。同时,PostgreSQL全球开发团队成立,这是目前领导该项目的领导小组。

虽然名称改为PostgreSQL,但考虑到发音的便利性和名称的普及程度,决定以前的“Postgres”这个名字也将继续使用。

在1999年发布的PostgreSQL 6.5中,引入了MVCC(多版本并发控制),这是一种同时处理来自多个用户的请求而不会丢失数据发并发性技术。 在整个 2000 年代初期添加了以下功能。

  • 预写日志 (WAL—Write Ahead Log)
  • 外部联接(Outer Join)
  • 超尺寸属性存储技术(TOAST——The Oversized-Attribute Storage Technique)
  • 支持超过4b 事务(More than 4b transactions)
  • 删除一列或多列(Drop column)
  • 模式(SCHEMA)
  • IPv6

由于这些改进,PostgreSQL在2005年被认为是一个相当可靠的数据库。 在 2000 年代后半期,它支持更多的事务,扩展了 SQL 支持的范围,并改进了 WAL 和 VACUUM,使其足够可靠,可以在生产中使用,但在可用性方面仍有改进的空间。 在此期间,添加了以下功能:

?支持并发创建索引 (Concurrent index creation)

?Warm standby servers

?查询语言改进(Query language improvements

?所有数据类型(数组、通用唯一识别码(UUID)、枚举(ENUM)、XML)

?两阶段提交(Two phase commit

?增强的角色系统(A richer role system)

PostgreSQL的开发初期的成员一直参与开发,不过,2000年代后半期新的成员开始参与主要的功能的开发。在2009年的PostgreSQL8.4中引入了窗口函数和公用表表达式(CTE),以及添加了强大的报告功能,Kirstyens说他想不出PostgreSQL的任何替代方案。

PostgreSQL被授权用于商业用途,这丰富了它的功能,并导致许多公司进行二次开发PostgreSQL来构建新的数据库。 许多诞生的二次开发产品在2023年之前没有幸存下来的,但一部分如下所示被其他产品继承。

?Aster Data→Teradata收购

?Truviso→Cisco收购

?Netezza→IBM收购

?Greenplum→EMC收购

?ParAccel→虽然没有被收购,但实际上是RedShift

但不管怎样,PostgreSQL仍然像以前一样持续发展。

◆2010年:PostgreSQL 9.0和9.1

添加了对来自数据库的Pub/Sub的“listen/notify”、Key-Value数据类型的“hstore”的支持,并支持pg_upgrade以便于升级。同时,还有了GIN索引和GiST索引。

◆2012年:开始支持JSON技术

随着Mongo和Couchbase等NoSQL数据库的兴起,很明显,开发人员想要一种不同的数据处理方式。 PostgreSQL在2012年开始在PostgreSQL 9.2中支持JSON,但在9.2中,它被设计为将JSON作为文本存储在数据库中。

大约在2012年,使用Heroku来简化应用程序部署的情况有所增加,Heroku Postgres成为Heroku的标准数据库。 随着Heroku为方便应用程序部署而兴起,Heroku Postgres是默认数据库,从MySQL数据库和应用程序VPS的共享托管到PaaS,以及更多专用数据库基础设施的浪潮正在增长。

◆ 2014年:完全支持 JSON

PostgreSQL 9.4 在2014年发布,完全支持JSONB类型,以二进制格式存储JSON, 现在,您可以使用 GIN 索引轻松为 JSON 数据编制索引。

◆2016~:9.5、9.6、10

在 2016 年之后的版本中,主要是转向稳步提升性能和增强现有功能,而不是专注于常用功能。 例如,声明 JSONB 支持内联更新并增加并行执行的数量。 但是,除了这些小更新之外,还添加了一些可能对某些应用程序很重要的主要功能,例如:

?行级别安全控制(Row level security)

?逻辑复制(Logical replication)

?表分区(Table partitioning)

2023 年 9 月,PostgreSQL 16 发布,COPY 性能提升高达 300%,性能提升和逻辑复制功能增强等,更新内容如此之多,以至于很难相信它已经开发了 35 年。 您可以通过以下网站了解有关PostgreSQL 16的更多信息。

PostgreSQL: PostgreSQL 16 Released!

https://www.postgresql.org/about/news/postgresql-16-released-2715/

◆PostgreSQL什么时候变得很酷了?

PostgreSQL的核心理念从一开始就保持不变:可靠的数据库。 “归根结底,你想要的数据库是可靠,”Kirstyens说,并指出虽然其他新的和闪亮的产品可能会在短期内受到关注,但它们最终会回到一个已经稳定多年的可靠数据库。

因此,PostgreSQL已经成为一个很酷的数据库,吸引了大量用户,并不是因为添加了特定功能,而是因为它拥有稳定的发布周期,重视质量,不断改善性能和功能的历史积累的结果。 Kirstierns在他的博客结尾说,将PostgreSQL打造成伟大数据库的功绩,是迄今为止为PostgreSQL开发做出贡献的开发者们的。

相关推荐

Python第三课3. Python 的非正式介绍

3.Python的非正式介绍?在下面的例子中,通过提示符(>>>与...)的出现与否来区分输入和输出:如果你想复现这些例子,当提示符出现后,你必须在提示符后键入例子中的每...

如何使用 Python 构建一个“谷歌搜索”系统?| 内附代码

来源|hackernoon编译|武明利,责编|Carol出品|AI科技大本营(ID:rgznai100)在这篇文章中,我将向您展示如何使用Python构建自己的答案查找系统。基本上,这...

Python 模拟微博登陆,亲测有效!(如何用python爬微博)

今天想做一个微博爬个人页面的工具,满足一些不可告人的秘密。那么首先就要做那件必做之事!模拟登陆……代码是参考了:https://www.douban.com/note/201767245/,我对代码进...

Python 驱动的 AI 艺术批量创作: 免费的Bing 绘图代码解析

这篇文章将深入分析一段Python代码,该代码利用Bing的AI绘图功能,即bing的images/create,根据用户提供的文本提示生成图像。我们将详细探讨其工作原理、代码结构、...

Python爬虫Scrapy库的使用入门?(python scrapy爬虫)

Scrapy是一个开源的并且支持高度可扩展的Python爬虫框架,主要被用来实现从网站提取数据。出现之初就是为网页抓取而设计,但是现在它也可以被用于从APIs中抓取数据或通用的Web抓取任务。Sc...

Python3 标准库概览(python标准库有什么)

操作系统接口os模块提供了不少与操作系统相关联的函数。>>>importos>>>os.getcwd()#返回当前的工作目录'C:\\Python34...

零基础入门学习Python(三):变量和字符串

分享兴趣,传播快乐,增长见闻,留下美好!亲爱的您,这里是LearningYard新学苑。今天小编为大家带来的是...

Python读写docx文件(python读写word)

Python读写docx文件Python读写word文档有现成的库可以处理pipinstallpython-docx安装一下。https://python-docx.readthedocs.io/...

如何利用Xpath抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

如何利用Xpath选择器抓取京东网商品信息

前几小编分别利用Python正则表达式和BeautifulSoup爬取了京东网商品信息,今天小编利用Xpath来为大家演示一下如何实现京东商品信息的精准匹配~~HTML文件其实就是由一组尖括号构成的标...

python之Scrapy爬虫案例:豆瓣(python爬虫书籍豆瓣评分)

python模块之Scrapy爬虫框架...

Python编程入门学习:最常见加密方式和Python实现

前言我们所说的加密方式,都是对二进制编码的格式进行加密的,对应到Python中,则是我们的Bytes。所以当我们在Python中进行加密操作的时候,要确保我们操作的是Bytes,否则就会报错。将字符串...

一日一技:Python中的string.rindex()方法

string.rindex()方法string.rindex()方法返回字符串内子字符串的最高索引(如果找到)。如果未找到子字符串,则会引发异常。rindex()的语法为:...

Asterisk-ARI对通道中的DTMF事件处理

Asterisk通道中关于DTMF处理是一个非常重要的功能。通过DTMF可以实现很多的业务处理。现在我们介绍一下关于ARI对通道中的DTMF处理,我们通过自动话务员实例来说明Asterisk如何创建一...

PyQt5 初次使用(pyqt5下载官网)

本篇文章默认已安装Python3,本篇文章默认使用虚拟环境。安装pipinstallPyQt5PyQt一些图形界面开发工具QtDesigner、国际化翻译工具Liguist需要另外...

取消回复欢迎 发表评论:

请填写验证码