50年长盛不衰,SQL为什么如此成功?早期数据库管理的历史—IDS 和 CODASYL网络数据模型——比如今的关系模型更好?关系模型的到来关系数据模型 vs 网络数据模型SQL 崛起SQL 的竞争者S( 二 )


Codd指出 , 数据库中的所有数据都可以用元组(SQL中的行)表示 , 这些元组被分组成关系(SQL中的表) 。 为描述数据库查询 , 他发明了一种一阶谓词逻辑的形式 , 称为元组关系演算 。
元组关系演算引入了一种声明性语言用于查询数据 。 使用声明性编程语言 , 程序员只需说明他们想做什么 , 而不必描述如何做 。
对开发人员来说 , 这种新的声明性语言更容易使用 。 关系模型公开了所有数据 。 开发人员可以用一条命令 , 从一个表中检索所有数据或者读取一行数据 。
在指针迷宫中查找数据的日子已经一去不复返了 。
关系数据模型vs网络数据模型关系型数据库通过数据规范化降低了网络型数据库的高昂存储成本 。 规范化是一个分解表以消除冗余的过程 , 可以减少磁盘占用 。
然而 , 关系型数据库增加了CPU成本 。 为了处理规范化数据 , 关系型数据库必须将表加载到内存中 , 并使用计算能力将表“连接”在一起 。 让我们通过一个例子来看下这个过程:在一个关系模型中 , 给定老师 , 查找所有的班级和学生 。
首先 , 数据库系统执行一个操作来检索所有相关的班级 。 然后 , 它将执行第二个操作来检索学生数据 。 所有这些数据都将存储在内存中 , 在返回结果前 , 它将运行第三个操作来合并数据 。

50年长盛不衰,SQL为什么如此成功?早期数据库管理的历史—IDS 和 CODASYL网络数据模型——比如今的关系模型更好?关系模型的到来关系数据模型 vs 网络数据模型SQL 崛起SQL 的竞争者S
文章图片
在一个使用真实数据的性能案例研究中 , Raima发现 , 网络数据库模型的插入性能好23倍 , 查询性能快123倍 。
那么为什么关系型数据库会成为领先的数据库解决方案?
易用性
关系模型更容易修改 , 它的声明性语法简化了程序员的工作 。
摩尔定律在背后发挥了神奇作用 。 计算成本持续下降 , 最终 , 生产力的提高抵消了关系模型所增加的计算成本 。
快进50年 , 现在 , 数据中心中最昂贵的资源是CPU 。
SQL崛起
50年长盛不衰,SQL为什么如此成功?早期数据库管理的历史—IDS 和 CODASYL网络数据模型——比如今的关系模型更好?关系模型的到来关系数据模型 vs 网络数据模型SQL 崛起SQL 的竞争者S
文章图片
最后 , 我们迎来了大家都喜欢的SQL 。
在Codd的论文发表4年后 , DonaldChamberlin和RaymondBoyce发表了《SEQUEL:AStructuredEnglishQueryLanguage》 。
他们将SEQUEL描述为“一组关于表格结构的简单操作 , […]和一阶谓词演算同样强大 。 ”IBM看到其潜力 , 并在20世纪70年代早期迅速开发出SEQUEL的第一个版本 , 作为其SystemR项目的一部分 。
由于与英国HawkerSiddeley飞机公司的商标问题 , 其名称后来改为SQL 。
SQL的下一个大发展是在近十年后 。 1986年 , 美国国家标准协会(ANSI)和国际标准化组织(ISO)发布第一个官方SQL标准:SQL-86 。 该标准将SQL分为以下几个部分:
数据定义语言(DDL):此类命令用于定义和修改模式及关系;数据操作语言(DML):此类命令用于查询、插入和删除数据库信息;事务控制:此类命令用于指定事务的时间;完整性:此类命令用于对数据库信息设置约束;视图:此类命令用于定义视图;授权:此类命令用于指定可以访问的用户;嵌入式SQL:此类命令用于具体说明如何将SQL嵌入其他语言 。 SQL的竞争者从1974年到今天 , 有许多竞争者试图从SQL统治的查询语言市场中抢占市场份额 。 通常 , 这些新语法是针对特定的新技术:
Lisp->CLSQL.NET->LINQRubyonRails->ActiveRecord35年过去了 , 在数据库中 , SQL仍然无处不在 。 SQL作为一种查询语言是如何保持统治地位的?我们可以从它的故事中学到什么?
SQL统治市场50年的秘密
50年长盛不衰,SQL为什么如此成功?早期数据库管理的历史—IDS 和 CODASYL网络数据模型——比如今的关系模型更好?关系模型的到来关系数据模型 vs 网络数据模型SQL 崛起SQL 的竞争者S
文章图片
StackOverflow开发者调查 , 2017
在文章开头 , 我们首先介绍了巴赫曼推出的第一个数据库管理系统IDS 。 我们讨论了为什么磁盘存储和高级编程需要一种处理数据的新方法 。 然后 , CODASYL来了 , 规范了数据库管理 。 IDS和CODASYL引入了新的网络数据模型 , 而最终 , Codd投下了关系模型 。
这个过程持续了8年 。
SQL是如何在接下来的50年里坚持下去的呢?我认为主要有四个原因:
基于第一性原则构建布什内尔定律倾听和调整采用API基于第一性原则构建
第一性原则是一个基本命题 , 它不能从任何其他命题或假设中推导出来 。 例如 , 将碳氢化合物与氧气结合 , 产生化学反应 。 这仍然是驱动每一辆车的内燃机原理 。
1970年 , Codd为数据库创建了一个新的第一性原则:元组关系演算 。 这个新创建的逻辑引出了关系模型 , 然后引出SQL 。 元组关系演算是化学反应 , 关系模型是内燃机 , SQL是汽车 。