“数据库”这个词是怎么来的?当 SQL 是 SEQUEL 时它代表什么?通过这篇有关 RDBMS 历史的文章了解所有这些内容以及更多内容。
埃里克·迪特里希用户头像 经过 埃里克·迪特里希  核心 · Anush Gasparyan 用户头像 经过 阿努什·加斯帕里安  · 2017年7月21日 · 意见
 喜欢 (15)
 评论 (6)
 节省
  鸣叫 
  分享 
13.1K 次观看
加入 DZone 社区并获得完整的会员体验。 免费加入
如果您必须选择一种统一的技术来将所有开发人员聚集在一起,那么您可能会比选择关系数据库做得更糟糕。当然,没有一个话题能够真正统一 

那么为何不?我们可以将软件归结为两个核心组件:数据和行为。因此,就像我们都学习编程语言来表达行为一样,我们也学习一些记录和保存宝贵数据的方法。

当我们将足够多的数据以某种有组织的格式放在一起时,我们就拥有了一个数据库。当我们以“关系”的方式组织数据库时,我们就有了一个关系数据库。然后,当我们添加管理和优化对关系数据的访问的功能时,我们就拥有了一个关系数据库管理系统(RDBMS)。

毫无疑问您对这些产品有一定的熟悉度。其中包括 Oracle、Microsoft 的 SQL Server、PostgreSQL 和 MySQL 等行业支柱。

最新的 DZone 参考卡

移动数据库要点


事实上,它们与风景如此完美地融合在一起,以至于你很容易认为它们是理所当然的。但他们从哪里来,为什么呢?这些年来它们是如何演变的?今天,让我们回顾一下RDBMS的历史。

第一个数据库
您可能会惊讶地发现数据库的概念早于现代计算。您可以在这篇文章中更详细地阅读它,但我只想说,这个概念的根源可以追溯到 1880 年美国的人口普查,那个时代的创新者设计了“制表机”,在所谓的“制表机”上打孔。 “打卡。” 这些卡片和存储它们的方法成为最初的“数据库”(或数据库)。

20 世纪 60 年代初,一位名叫查尔斯·巴赫曼 (Charles Bachman) 的人将这一概念自动化。后来,他因创建“集成数据存储”或 IDS 的努力而获得了图灵奖。他利用物理卡数据库中的概念,例如“文件”、“字段”和“密钥”,构建了一个系统,将应用程序逻辑与数据存储分离到文件中。即使是现在,相隔 50 多年,我们仍然会认为这是一个数据库。

在巴赫曼的领导下,20 世纪 60 年代出现了两种类型的数据库:网络数据库和分层数据库。您可以在这里单独阅读这些内容。简而言之,层次模型将数据组织成树,而网络模型是一种松散的结构,允许直接建模 m 到 n 的关系。

关系革命
如果您还没有听说过 EF Codd,您可能想了解一些有关他的信息。就计算机科学界的人物而言,他留下了相当长的阴影。Codd 构思了我们今天使用的关系数据库模型。适当地,由于他在那里工作,您可以在 IBM 网站上阅读有关他的信息。

当 Codd在 1970 年发表他的开创性论文时,世界已经经历了现有的数据库模型足够长的时间,以了解它们的优点和缺点。这些缺点中最主要的是数据和数据的物理存储之间的耦合造成的困难。换句话说,记录本身告诉搜索者到哪里寻找后续记录。

那时,您无疑明白,处理能力和磁盘空间的成本要 高得多。这些系统在最初存储数据时表现良好。但新的处理方式或新查询的需要会导致昂贵且耗时的返工。

科德极大地改变了这一点。他的关系模型将数据的形式与数据的物理存储解耦。仅此一点就带来了重大改进。但科德的“12 条规则(实际上是 13 条,因为他对它们进行了零索引)”会稍后出现。这些规则要求消除任何重复的数据,同时有效地优化存储成本。

SQL 的兴起
我们的历史正在开始完善现代数据库。但我们还有很多工作要做。

如果您参加过任何大学水平的数据库课程,您可能听说过Boyes-Codd 范式 (BCNF)。如果您对模式重复数据删除练习只有模糊的记忆,请不要担心。我不会让你重新复习你的课程作业,除非你认识到这个 Codd 与关系模型之父是同一个 Codd。

他的犯罪正常化伙伴雷蒙德·博伊斯 (Raymond Boyce) 曾与科德和 IBM 的另一位名叫唐纳德·张伯伦 (Donald Chamberline) 的绅士一起工作。他们都在数据库领域做出了重要的工作。但博伊斯和张伯伦联手创建了一种从这些新型“关系数据库”请求信息的标准方法。他们将其称为“结构化英语查询语言”或简称“SEQUEL”。后来它变得更短,成为“结构查询语言”或“SQL”。

虽然 SQL 并不是唯一针对此类查询提出的游戏,但它确实胜出。当然,有很多因素促成了这一结果。但 SQL 的一个可以说是杀手级的特性是它的 声明性。应用程序程序员只需指定 他们想要哪些记录,而不需要指定 如何检索它们。“如何”成为 RDBMS 的实现细节。

互联网爆炸
关系模型的起源发生在 20 世纪 70 年代的 IBM,SQL 的概念也是如此。但 SQL 的大幅崛起发生在 20 世纪 80 年代。各种商业 RDBMS 供应商的崛起也是如此。80 年代,随着大家都围绕 SQL 标准进行标准化,出现了许多 RDBMS 数据库产品和供应商。事实证明,RDBMS 在企业中获得了巨大的商业成功。

然而,就像新形成的恒星系统中的星子一样,这些小型 RDBMS 并没有持续存在。通过一个增长的过程,较大的竞争对手吸收了较小的竞争对手,直到我们今天所知道的参与者开始出现并成熟。

这发生在互联网出现的时候。如果说 20 世纪 80 年代 SQL 的爆炸式增长是一件大事的话,那么没有人为接下来发生的事情做好准备。随着网站成为网络应用程序,数据对通信的重要性前所未有。突然之间,地球上几乎每个开发人员似乎都需要对某些 ​​RDBMS 进行客户端-服务器访问。

这种需求给供应商带来了优化、扩展功能集的压力,并普遍迎合应用程序开发人员的需求。供应商纷纷提供各种产品,并鼓励 RDBMS 占据“宇宙中心”的角色。

重新审视竞争
这里还有最后一块拼图尚未连接。我打赌你能猜到。当然,我说的是 NoSQL 运动的出现。

回想一下,当科德工作时,他试图解决他那个时代的昂贵瓶颈:磁盘空间和处理。关系模型极大地节省了空间。但有时,这是以某些类型的数据变得极其复杂为代价的。换句话说,并非所有事物都适合关系存储和规范化。例如,大量事务日志并不能真正从规范化中受益。

随着“网络规模”的概念逐渐融入我们的集体意识,一些人开始重新审视 RDBMS 对于每个应用程序的普遍假设。他们实现了诸如文档数据库之类的东西,以新的“非传统”方式存储和处理数据。他们在这样做中取得了巨大的成功。

正是带着一种恰如其分的对称感,我们到达了现在。在 RDBMS 占领计算世界之前,它有一些竞争对手。现在,大约 40 年后,它再次出现了一些竞争对手。对于计算而言,没有什么比 RDBMS 更重要了。但 40 年后的历史将把它归类为网络规模时代的众多选择之一。

10-26 15:51