谈谈你对sql的历史发展的体会
关系数据模型于1970年推出,并已占据主导地位50年。它为什么如此成功?这要归功第一性原理和布什内尔定律
1971年3月,英特尔推出世界上第一款通用微处理器——英特尔4004。它有约2300个晶体管,售价60美元。
时间快进到50年后,最新的iPhone有将近120亿个晶体管(但价格仅为60美元多一点)。
我们今天使用的许多编程语言直到90年代才推出(Java是在1996年推出的)。不过,有一种编程语言现在仍然像近50年前推出时一样流行:SQL。本文将讨论关系型数据库产生的背景、SQL为什么越来越流行,以及我们可以从它的成功中学到什么。
一、早期数据库管理的历史—IDS和CODASYL
1962年,查尔斯w巴赫曼(与埃利希巴赫曼没有关系)是通用电气一个小团队的一员。一年后,巴赫曼团队推出了后来被公认为第一个数据库管理系统的集成数据存储系统(IDS)。
10年后,巴赫曼获得图灵奖(通常被称为计算机科学领域的诺贝尔奖),以表彰他对IDS计算的贡献。
1、IDS是什么?
在20世纪60年代早期,计算机科学刚开始成为一个学术领域。ASCII直到1963年才推出。
要理解IDS,我们必须首先理解促成其发展的两大驱动力:
磁盘存储的推出
向高级编程语言的迁移
2、磁盘存储
移动一台RAMAC305:
1956年,IBM推出第一款商用硬盘驱动器——RAMAC305。磁盘驱动器的引入使得程序员可以直接跳转到磁盘上的某个位置进行数据检索和更新。与其前身磁带驱动器相比,这是一个巨大的改进,后者需要在磁带上顺序移动来检索特定的数据片段。
但是现在,开发人员必须出记录在磁盘上存储的位置。由于早期操作系统中文件管理系统的局限性,这是一项只有有经验的程序员才能完成的高级任务。开发人员需要一种解决方案来简化磁盘驱动器的使用。
3、高级编程
与此同时,在采用曲线上,计算机科学开始从创新者转变为早期采用者。像汇编这样的低级编程语言早期在学术界很流行,但是出于易用性考虑,普通程序员开始转向高级编程语言,比如COBOL。
sql容易学吗那么什么是IDS呢?IDS解决了磁盘存储和高级编程问题。IDS允许开发人员使用高级编程语言(如COBOL)来构建从磁盘存储输入和检索数据的应用程序。由于这个功能,IDS获得了第一个数据库管理系统的殊荣。
CODASYL:一个数据库管理系统的新标准
1969年,数据系统语言委员会(CODASYL)发布了一份报告,提出一个数据库管理标准。巴赫曼是委员会的一员,该报告主要参照了IDS。
CODASYL数据模型引入了许多我们今天使用的数据库管理系统的核心特性:
模式
数据定义语言(DDL)
数据操作语言(DML)
最重要的是,IDS和CODASYL引入了一种新的数据建模方法,这种方法影响了SQL的最终开发——网络数据模型。
二、网络数据模型——比如今的关系模型更好?
网络模型示例:
数据模型是一种描述(模型)世界(数据)的标准化方法。
前面的层次数据模型使用树型结构来描述数据,但是这些树型结构仅限于一对多的关系。新的网络模型允许记录有多条父记录,从而创建一个图结构。通过支持多个父节点,网络模型能够对多对一和多对多关系进行建模。
在网络模型中,表之间的关系存储在集合中。每个集合都有一个所有者(即教师)和一个或多个成员(即班级和学生)。
网络模型的其中一个主要好处是,集合中的相关记录是通过指针直接连接的。集合是使用next、prior和owner指针实现的,这样就可以像链表一样轻松遍历。
网络数据模型的低级特性提供了性能优势,但也付出了代价。网络数据模型增加了存储成本,因为每个记录都必须额外存储指向前一条记录和父记录的指针。
三、关系模型的到来
关系模型示例:
1970年,在IDS诞生8年后,EdgarF.Codd在他的开创性论文《ArelationalmodelofDataforLargeSharedDataBanks》中引入关系模型(这也为他赢得了图灵奖)。
Codd指出,数据库中的所有数据都可以用元组(SQL中的行)表示,这些元组被分组成关
系(SQL中的表)。为描述数据库查询,他发明了一种一阶谓词逻辑的形式,称为元组关系演算。
元组关系演算引入了一种声明性语言用于查询数据。使用声明性编程语言,程序员只需说明他们想做什么,而不必描述如何做。
对开发人员来说,这种新的声明性语言更容易使用。关系模型公开了所有数据。开发人员可以用一条命令,从一个表中检索所有数据或者读取一行数据。
在指针迷宫中查数据的日子已经一去不复返了。
四、关系数据模型vs网络数据模型
关系型数据库通过数据规范化降低了网络型数据库的高昂存储成本。规范化是一个分解表以消除冗余的过程,可以减少磁盘占用。
然而,关系型数据库增加了CPU成本。为了处理规范化数据,关系型数据库必须将表加载到内存中,并使用计算能力将表“连接”在一起。让我们通过一个例子来看下这个过程:在一个关系模型中,给定老师,查所有的班级和学生。
首先,数据库系统执行一个操作来检索所有相关的班级。然后,它将执行第二个操作来检索。所有这些数据都将存储在内存中,在返回结果前,它将运行第三个操作来合并数据。
关系模型和网络模型的性能对比:
在一个使用真实数据的性能案例研究中,Raima发现,网络数据库模型的插入性能好23倍,查询性能快123倍。
那么为什么关系型数据库会成为领先的数据库解决方案?
易用性
关系模型更容易修改,它的声明性语法简化了程序员的工作。
摩尔定律在背后发挥了神奇作用。计算成本持续下降,最终,生产力的提高抵消了关系模型所增加的计算成本。
快进50年,现在,数据中心中最昂贵的资源是CPU。
五、SQL崛起
最后,我们迎来了大家都喜欢的SQL。
在Codd的论文发表4年后,DonaldChamberlin和发表了《SEQUEL:AStructuredEnglishQueryLanguage》。
他们将SEQUEL描述为“一组关于表格结构的简单操作,[…]和一阶谓词演算同样强大。”IBM看到其潜力,并在20世纪70年代早期迅速开发出SEQUEL的第一个版本,作为其SystemR项目的一部分。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论