作者 | Caig Kerstiens
编译 | 王瑞平
审校 | 云昭
Postgres开源数据库刚刚度过了它的25岁生日。遗憾的是,它既没有凭借数百万美元的风险投资脱颖而出,也没有获得技术布道师DevRel团队的支持,只处于起步阶段,但却一直在更新。
几个月之后,Postgres 16正式版可能会闪亮登场,提及此,不免让人感到热血沸腾!我们也一起来回顾下Postgres是如何“走到”今天的吧!
一、Ingres、Postgres95、PostgreSQL
追根溯源,其实,Postgres起源于Ingres数据库系统,最初是在加州大学伯克利分校Michael Stonebraker的指导下开始构建的交互式图形检索系统。后来,为提升数据库性能,团队改弦易辙,转而资助了关系数据库项目。
一开始,他们用的是QUEL编程语言而不是SQL;1986年,美国国家标准学会正式将SQL设置为首选项,至此,许多相关数据库项目都朝这个方向发展。
·1995年,Postgres95正式发布,SQL也顺理成章地被添加进来。
·1996年,当第一个PostgreSQL版本6.0发布时,PostgreSQL全球开发团队也成立了,标志着开发走出学术界,项目领导小组也延续至今!
·1999年,Postgres 6.5发布,很多技术理念至今仍被采用!
二、丰富功能:Postgres开始“成长”
2000年,Postgres开启它的成长之旅,通过外键和连接引入其它数据库。
21世纪初,Postgres又吸纳了更多的关键基础部件,主要侧重于构建可靠的数据库和SQL,用户可获取如下的功能:
1.预写式日志(Write-Ahead-Log):一种数据库日志记录技术,用于在数据实际写入磁盘之前记录数据的更改,以确保数据的一致性和完整性。
2.外连接(Outer joins):一种数据库连接操作,用于将两个表中的记录组合在一起,即使其中一个表中没有与另一个表中的记录匹配的记录。
3.字段删除
4.模式
回顾2000年的一些细节,最令我感到兴奋的是:“一些对Postgres做出贡献的人至今仍是Postgres社区里的支柱。这些人包括我的同事Tom Lane、Josh Berkus、Bruce Momjian、Hiroshi Inoue和Peter Eisentraut,还包括2006年‘PostgreSQL周年纪念峰会’上的一些人:Magnus Hagander、Stephen Frost等。”文章原作者回忆说。
总之,每个参与进Postgres的人都对它的前景非常看好,认为这里蕴含着巨大的市场机遇,开源数据库的浪潮也正开始达到巅峰。
三、Postgres继续成熟
进入21世纪后期,Postgres已经成为一个相当可靠的数据库了。
有了更丰富的资金支持、更广泛的SQL支持,以及WAL和VACUUM的改进,Postgres变得更值得信赖,但在易用性方面仍有需要改进之处!
多种不同的功能开始组合,包括:
- 并发索引创建
- 服务器热备
- 查询语言改进
- 所有数据类型
- 二阶段提交
四、更丰富的体系
之后,更多的SQL支持和更佳的性能将Postgres塑造成了新型数据库,具有可扩展的数据库类型。
“我认为,强大的报告功能真正改变了Postgres的游戏规则;2009年,Postgres 8.4中又出现了窗口函数和公用表达式(CTEs)。有了这些功能的加持,我再也不会回头看其它数据库了。”原作者在文章中提到。
奠定了坚实的基础后,Postgres开始在更广泛的数据生态系统中留下印记。由于其坚实的代码基础以及许可,许多公司选择Postgres并开始对其进行“分叉”。
21世纪初期到后期,大多数公司做的第一件事就是向Postgres中添加MPP,使其更多关注联机分析处理(OLAP)的工作负载。而将MPP与窗口函数和公用表达式(CTEs)之类的功能结合在一起时,开发者能获得全新而强大的系统,无需从头开始构建。
这种新型数据库的出现意味着数据库成熟所需时间缩短了数年。许多最初的分支如今已消失不在了,但有些仍存在于其它的产品中。尽管有些Postgres分支已被扩散,但Postgres始终没有停止前进的脚步。
五、2010年:Postgres 9.0和9.1
2010年,Postgres开始变酷!
由于老式关系数据库不支持listen/notify(从数据库发布到订阅)和hstore(键/值数据类型)功能,Postgres 9.0和9.1出现了,支持pg_upgrade,这使升级变得更容易了。此外,随着GIN和GiST索引的出现,开发者所能获得的不再仅是标准B-Tree索引。
这之后,Postgres一直都在扩展、重构了集成过程,用户可以更容易地使用这些扩展。
六、2012-2014:从假JSON到真JSON
自始至终,开发人员都在寻求不同的数据处理方式。Postgres听取了他们的意见,但后来在JSON方面作弊了。2012年,在9.2版本中出现JSON验证,但这并不是真正的JSON。实际上,几年后,Postgres才会真正支持JSON。
但这并没有阻止人们持续关注Postgres;2014年,真正的JSON出现。
Postgres 9.3非常棒,有横向连接、可更新的外表、校验和等。在Postgres 9.4中,JSONB数据类型中能获得更好的JSON。这意味着,你能更轻松地对数据进行索引,而不必对特定JSON函数索引。
七、2016:Postgre9.5、9.6、10
之后,Postgre在2016年改进了性能,推出9.5、9.6、10版本还持续增强了现有特性。JSONB不仅开始支持内联更新,还提升了并行性,其它亮点包括:
1.行级安全性
又名“RLS”,允许数据库管理员决定用户是否能够根据策略查看或操作表中的特定数据行,是在PostgreSQL 9.5中引入的,为PostgreSQL用户又增添了一层安全保障。
2.逻辑数据复制
逻辑复制从Postgres 10就开始出现了,它是一个复制工具,会将部分或全部数据复制到新的位置,并继续从主源更新数据。数据的精确副本会被保存于不同的位置。
八、用户眼中的PostgresSQL VS MySQL
在Reddit社区的评论上,用户对于选择PostgresSQL还是MySQL展开了激烈的讨论。
前几年,MySQL一直霸占着数据库榜首;但随着时间的流逝,PostgresSQL凭借上述强大的功能逐渐超越了MySQL,以45.6%的比例位列排行榜第一。
图片
不仅如此,Postgres凭借其独有的先进性逐渐成为了开发者心目中最受欢迎的开源数据库之一,助力实现数据现代化!
总结下,为什么用户如此认可Postgres呢?因为Postgres更可靠和安全、功能极其丰富、没有锁定;它不仅仅是一个“数据库”,更是一个数据平台!
图片
在Reddit上的其它评论中,我们发现,其实,PostgresSQL的日益流行是在它成为大多数主流开发人员的首选之时。
图片
“使用PostgresSQL并不意味着你需要放弃SQLite”,一位用户发表评论说。