张彤
张彤
Published on 2025-12-07 / 6 Visits
1
0

蓝象十日谈·第一日_1.1数据库的发展历程

蓝象十日谈·第01日_数据库的发展历程

数据库的发展历程

滚滚长江东逝水,浪花淘尽英雄。数据库系统的发展历程波澜壮阔,血脉丛横交错。每个年代都有各自的佼佼者和里程碑。主线脉络我这里分为8条:

  • IBM 系统 R → DB2

    1970s 的 System R 奠定了 SQL 与商用 RDBMS 的起点,随后发展为 DB2,并衍生出多条企业级分支(如 OS/400、Mainframe 等)。

  • Ingres/POSTGRES → PostgreSQL

    伯克利 Ingres 一脉演化到 POSTGRES、Postgres95,最终成为 PostgreSQL。这条线上你会看到:

    • Illustra(Stonebraker 团队)被 Informix 吸收,推动了对象-关系特性。

    • Greenplum、Bizgres、ParAccel(PADB)等以 PostgreSQL 为前端或基础作了 MPP/列存创新,Amazon Redshift 则来自 ParAccel 的谱系。

    • MonetDB / VectorWise 等列式数据库与分析型家族在右上方并行发展,对现代分析引擎影响深远。

  • Sybase ↔ Microsoft SQL Server

    早期 MS SQL ServerSybase 共享渊源,90年代后各自独立快速演进,形成今天的两大企业级阵营之一。

  • Oracle

    80年代起几乎贯穿全图,一军崛起。大量并购节点(方块)和与 TimesTen 等内存/加速技术的融合;另外 Oracle 收购 Sun 后间接拿到 MySQL 的归属权,成为历史转折点。

  • MySQL 家族与存储引擎

    • InnoDB(Innobase) 被 Oracle 收购后成为主流引擎。

    • MariaDB、Percona 等 fork/变体在 2010s 分支壮大。

    • MySQL 线上的版本密集里程碑反映了 LAMP 时代的高增速。

  • 分析型与“云数仓”崛起

    Teradata、Red Brick、Netezza、Vertica、Greenplum、ParAccel → Amazon Redshift, 2000s–2010s 列式存储、MPP、云托管 的浪潮。

  • NewSQL/内存型探索

    H-Store、VoltDB 等在 2010s 初期出现,主打内存计算与分布式事务的新路线。

  • 轻量嵌入式支线

    SQLite 以独立、嵌入式定位。

整个数据库发展历程的开端为文件系统阶段,数据直接存储在文件系统中,由程序负责管理。这导致了许多许多问题,无法使用非过程语言(SQL)进行查询,只能由非常专业的程序员去进行维护,而且数据冗余高,难以维护。之后是层次模型和网络模型阶段,这个阶段采用树状结构存储数据,比如IBM的IMS系统,用于银行和航空等行业的大型事务处理。优点当然是树形数据结果的查询速度快,缺点则是数据和代码是耦合的,维护难度依旧高居不下。网络模型使用图结构表示数据关系,但是需要鉴别的是,这并不是现在图数据库的雏形,网络模型CODASYL,使用指针式集合(owner_member的set type)把记录连城网状,直觉上看很像“图”(graph),但是是导航式,过程式的数据模型,和今天的图数据库(property graph/RDF )不同。

关系模型的兴起是在层次模型和网络模型应用之后,数据库技术逐渐成熟,但是查询灵活性差,操作复杂等问题,这些问题都迫使一种新的模型出现来解决。1970年,祖师爷科德(E.F.Codd)提出了关系模型的理论,这个理论基于集合论和关系代数。随后逐步出现了一些依据此理论进行实现的数据库类型。一个模型的成功必然需要从理论走向大规模应用,不断打磨和升级改造。1994年C. Mohan提出了ARIES(Algorithms for Recovery and Isolation Exploiting Semantics)论文,详细对数据库管理,故障恢复以及并发控制提供了关键性的技术基础,我们现代关系型数据库的许多关键性概念,都可以从这篇论文中找到雏形。

随着时代发展,还有一些现代类型的数据库比如Nosql,图数据库,向量数据库等,包括日志即数据库的Amazon Aurora这里不再详细讨论,这些新型的数据库类型有些屹立不倒,有些则出生不到1年就销声匿迹。关系型数据库截至现在,还是数据库世界中的主流和重点,而且关系型这个概念正在主键模糊化,许多数据库实现都具备了非关系型的扩展功能,数据生态正在一步步的走向大一统。

PostgreSQL的背景与定位

postgresql官网的一句话介绍是,The world's most advanced open source database,世界上最先进的开源数据库。1986年,UC Berkeley大学发起POSTGRES项目,由Michael Stonebraker领导。最初仅仅是一个面相对象的数据库管理系统。直到1995年,这个项目被开源(Postgres95),这是一个重大的里程碑事件。1996年,重命名为PostgreSQL,支持SQL标准,转型为一个开源关系数据库。到目前为止,postgresql拥有广大而活跃的社群。在功能上支持插件,用于自定义的数据类型,最大限度的支持了SQL标准。

Postgresql支持邮件列表

Postgresql中文社区

PostgreSQL的主要特性

  1. 开源和社区支持

    • 完全免费,遵循PostgreSQL许可协议。

    • 活跃的全球社区,快速响应安全问题和新需求。

  2. 丰富的数据类型

    • 标准数据类型:整型、字符型、日期型。

    • 扩展数据类型:JSON/JSONB、数组、地理空间数据(PostGIS)。

  3. 强大的功能

    • 支持事务和MVCC(多版本并发控制)。

    • 高级索引:GIN、GiST、BRIN等。

    • 支持外部数据源访问(FDW)。

  4. 灵活的扩展性

    • 自定义函数与过程:支持PL/pgSQL、Python等多种语言。

    • 插件生态:如PostGIS、TimescaleDB。

  5. 高性能与高可靠性

    • WAL日志机制确保数据安全。

    • 支持流复制、逻辑复制,满足多种高可用场景。

Postgresql发行时间线

PG版本支持

PostgreSQL 每个主版本的支持周期为 5 年

  • 第 1 年:提供功能更新和错误修复。

  • 第 2~5 年:提供安全补丁和错误修复。

  • 超过 5 年后,该版本进入 终止支持(EOL,End-of-Life) 状态,不再提供任何更新。

PostgreSQL 的版本命名方法经历了一个重要的变化:

  • PostgreSQL 10 之前(包括 9.x 系列):使用 X.Y.Z的格式。

    • X:主版本号(例如 9)。

    • Y:次版本号(例如 6 表示 9.6 系列)。

    • Z:补丁版本号,用于修复错误或安全问题(例如 9.6.20)。

  • PostgreSQL 10 及以后:仅使用两位数字 X.Y表示版本号。

    • X:主版本号(例如 10)。

    • Y:次版本号,用于表示错误修复或安全更新的版本(例如 10.21)。

主版本号变更表示功能和特性的大规模更新。可能引入重大变化(如性能优化、新增功能、旧功能废弃等)。

次版本号变更表示该主版本的错误修复、安全补丁或小幅优化。通常是向后兼容的。

PostgreSQL 生态系统:在 PostgreSQL 之上开发的系统或与 PostgreSQL 线兼容的系统。



Comment