探索 PostgreSQL 版本历史:从早期到最新 – wiki大全


探索 PostgreSQL 版本历史:从早期到最新

PostgreSQL,常被誉为“世界上最先进的开源关系型数据库”,其卓越的稳定性、强大的功能集和严格遵循SQL标准的能力使其在企业级应用中占据了举足轻重的地位。然而,PostgreSQL并非一蹴而就,它经历了数十年的发展和演变,从一个学术项目成长为如今的数据库巨擘。本文将深入探索PostgreSQL的版本历史,追溯其从早期原型到最新迭代的非凡旅程。

早期起源:Postgres 项目 (1986 – 1994)

PostgreSQL的故事始于加州大学伯克利分校,由Michael Stonebraker教授领导的团队在1986年启动了名为“Postgres”的项目。这个项目的目标是解决当时关系型数据库系统的局限性,特别是对复杂数据类型的支持不足。Postgres引入了许多革命性的概念,例如:

  • 对象-关系模型 (Object-Relational Model):允许用户定义新的数据类型、函数和操作符,为存储和查询复杂数据提供了极大的灵活性。
  • 规则系统 (Rule System):一种强大的通用机制,可用于实现视图、触发器和存储过程等功能。
  • 事务处理 (Transactions):提供了可靠的数据一致性和完整性。

1989年,Postgres版本1发布,随后在1993年发布了版本4.2。尽管Postgres项目取得了显著的技术成就,但其代码库复杂,且缺乏SQL语言兼容性,这限制了其广泛应用。

PostgreSQL的诞生与标准化 (1994 – 2000年代初)

1994年,为了解决Postgres的SQL兼容性问题,Andrew Yu和Jolly Chen对其进行了改造,用标准的SQL查询语言替代了原有的查询语言PostQUEL,并将其命名为“Postgres95”。这个版本极大地降低了学习曲线,吸引了更多的开发者。

随着全球开发者的积极贡献,项目在1996年正式更名为“PostgreSQL”,以强调其与Postgres项目的血缘关系,同时表明其对SQL标准的支持。PostgreSQL 6.0在1997年发布,标志着项目进入了一个新的阶段,引入了许多关键特性,包括:

  • 多版本并发控制 (MVCC):这是PostgreSQL的核心特性之一,允许在不锁定数据的情况下进行并发读写操作,显著提高了数据库的并发性能。
  • 预写日志 (WAL – Write-Ahead Logging):确保了数据的持久性和恢复能力,是数据库高可用性的基石。
  • 共享库动态加载 (Dynamic Loadable Modules):允许用户编写自定义函数并将其动态加载到数据库中。

在接下来的几年里,PostgreSQL的版本迭代主要集中在性能优化、稳定性提升以及更广泛的SQL标准支持上。例如,PostgreSQL 7.x系列在SQL兼容性方面取得了重大进展,并引入了对外键约束的全面支持。

功能丰富的成熟期 (2000年代中期 – 2010年代初)

进入21世纪,PostgreSQL继续快速发展,成为开源数据库领域的重要力量。这一时期,PostgreSQL不断吸收先进的数据库概念,并实现了一系列里程碑式的创新:

  • PostgreSQL 8.x 系列 (2004 – 2010)

    • PostgreSQL 8.0 (2004):引入了Windows原生端口,极大地拓宽了用户群体。此外,还增加了表空间(Tablespaces),允许将数据库对象存储在文件系统的不同位置。
    • PostgreSQL 8.1 (2005):引入了两阶段提交 (Two-Phase Commit),为分布式事务提供了基础;增加了行级安全性(Row-Level Security)的基础;并优化了索引操作。
    • PostgreSQL 8.2 (2006):进一步提升了性能和并发性,特别是在锁管理和查询优化方面。
    • PostgreSQL 8.3 (2007):引入了异步提交 (Asynchronous Commit),显著提升了事务吞吐量;并改进了全文搜索功能。
    • PostgreSQL 8.4 (2009):引入了通用表表达式 (CTE – Common Table Expressions),增强了复杂查询的可读性和模块化;改进了并行恢复功能。
  • PostgreSQL 9.x 系列 (2010 – 2015)

    • PostgreSQL 9.0 (2010):引入了流复制 (Streaming Replication),这是构建高可用性(HA)和读扩展(Read Scaling)解决方案的关键特性,极大地简化了数据库复制的配置和管理。
    • PostgreSQL 9.1 (2011):引入了同步复制 (Synchronous Replication),保证了主备数据的一致性;并支持可写CTE (Writable CTEs)
    • PostgreSQL 9.2 (2012):显著提升了索引创建和扫描性能;引入了级联复制 (Cascading Replication);并增加了JSON数据类型。
    • PostgreSQL 9.3 (2013):增加了可写外部数据包装器 (Writable Foreign Data Wrappers – FDWs),允许PostgreSQL直接写入外部数据源;引入了物化视图 (Materialized Views),用于缓存复杂查询结果。
    • PostgreSQL 9.4 (2014):引入了JSONB数据类型,这是对JSON数据类型的重大改进,提供了更高效的存储和更强大的查询操作符;支持逻辑解码 (Logical Decoding),为变更数据捕获(CDC)和数据同步提供了强大的基础。
    • PostgreSQL 9.5 (2016):引入了UPSERT (ON CONFLICT DO UPDATE) 功能,简化了插入或更新操作;增加了行级安全性 (Row Level Security – RLS),提供了更精细的数据访问控制。
    • PostgreSQL 9.6 (2016):显著改进了并行查询 (Parallel Query) 功能,允许查询在多个CPU核心上并行执行,大幅提升了大数据量查询的性能;增强了多核伸缩性 (Scalability on Multi-core)

现代与创新:PostgreSQL 10 及以后 (2017 – 至今)

从PostgreSQL 10开始,项目团队决定将主版本号的发布周期固定为每年一次,这加速了新功能的发布,并使版本管理更加清晰。

  • PostgreSQL 10 (2017):这个版本是一个重要的里程碑。它引入了逻辑复制 (Logical Replication),提供了比物理复制更灵活的数据同步机制,允许用户复制数据库中的特定表或行;并实现了声明式分区 (Declarative Partitioning),简化了大型表的管理。
  • PostgreSQL 11 (2018):进一步增强了并行查询能力,特别是对哈希连接和顺序扫描的并行化;改进了JIT (Just-In-Time) 编译,为表达式求值带来了显著的性能提升。
  • PostgreSQL 12 (2019):引入了B树索引的增量构建 (Incremental Building of B-tree Indexes),加速了索引的创建;大幅改进了JIT编译的覆盖范围和性能;并增强了通用表表达式 (CTE) 的性能。
  • PostgreSQL 13 (2020):优化了B树索引的处理效率,减少了空间占用;增强了分区表的性能和管理;改进了VACUUM 性能。
  • PostgreSQL 14 (2021):引入了逻辑复制的双向同步 (Two-phase Commit for Logical Replication),提升了分布式事务的可靠性;改进了查询计划器,提升了复杂查询的性能;并增加了jsonb_path_query_array 等函数,增强了JSONB操作能力。
  • PostgreSQL 15 (2022):显著提升了排序操作的性能;增加了MERGE命令,简化了 INSERTUPDATEDELETE 操作的组合;支持了Lz4和Zstandard压缩在WAL日志中,减少了存储需求。
  • PostgreSQL 16 (2023):继续优化并行查询,特别是在 RIGHTFULL 外连接中;增加了对JSON格式化输出的支持;改进了逻辑复制的并行应用。

未来展望

PostgreSQL的开发社区始终保持活跃,每年的新版本都带来性能的提升和功能的扩展。未来的发展方向可能包括:

  • 更强的并行处理能力:进一步扩展并行查询的适用范围和效率。
  • 更完善的分布式数据库支持:虽然PostgreSQL本身是单机数据库,但通过扩展和外部工具,其分布式能力将持续增强。
  • 对新兴硬件和技术的支持:例如更好地利用NVM (Non-Volatile Memory) 和异构计算资源。
  • 持续的SQL标准遵循和扩展:保持其作为功能最丰富、标准遵循最严格的开源关系型数据库的地位。

结语

从伯克利校园的Postgres项目到如今全球数百万开发者和企业信赖的PostgreSQL,其版本历史是一部充满创新、协作和持续改进的史诗。每一个新版本都凝聚了全球社区的智慧和努力,不断突破关系型数据库的边界。正是这种对卓越的不断追求,使得PostgreSQL能够持续在快速变化的数字世界中保持领先地位,成为构建可靠、高性能应用的基石。

滚动至顶部