《锋利的SQL(第2版)》——1.1 SQL的历史起源

简介:

本节书摘来自异步社区出版社《锋利的SQL(第2版)》一书中的第1章,第1.1节,作者:张洪举 王晓文,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 SQL的历史起源

锋利的SQL(第2版)
在20世纪60年代,网状数据库系统(如CODASYL)和分层数据库系统(如IMS TM)是用于自动化银行业务、记账和订单处理系统的一流技术,这些系统是由于商业大型计算机的引入才启用的。而SQL是在20世纪70年代创建的一种基于关系数据库管理系统模型的数据查询、操作语言。

1.1.1 CODASYL

CODASYL是美国数据系统语言协会(Conference on Data System Language)的英文缩写,该协会成立于1957年,主要目的是开发一种用于创建商业应用的通用语言。1959年5月28日,该协会召开了首次会议,就语言开发进行讨论。这个语言实际上就是Cobol语言。

1963年6月10日,美国加利福尼亚州的系统开发公司(System Development Corporation)举办了一个题为“基于计算机的数据库开发和管理”(Development and Management of a Computer-centered Data Base)的研讨会,首次提出并定义了数据库(Database)术语,即一组文件(表)的集合,其中文件是数据项(行)的有序集合,而每个数据项由数据以及一个或多个键组成。

1965年,CODASYL成立了“列表处理任务组”(List Processing Task Force),后更名为“数据库任务组”(Data Base Task Group)。1971年4月,任务组发布了一份重要的报告,报告概述了网状数据模型,被称为CODASYL或DBTG(即Data Base Task Group的缩写)数据模型。这个模型定义了数据库的几个关键概念,包括定义模式的语法、定义子模式的语法和数据操作语言。

1.1.2 IMS

IMS是信息管理系统(Information Management System)的英文缩写,是IBM公司的产品,这是一款分层数据库管理和事务处理系统。

IMS最初的开发目的是支持美国的阿波罗太空计划。1966年,IBM公司的12名成员、美国洛克维尔(American Rockwell)公司的10名成员和卡特彼勒公司(Caterpillar Tractor)的3名成员被集合起来,开始开发信息控制系统(Information Control System,ICS)和数据语言/接口(Data Language/Interface,DL/I),用于辅助跟踪建造太空船所需要的材料。其中,ICS部分是用于存储和获取数据的数据库部分,而DL/I部分则是用来与之交互的查询语言。

在开发过程中,IBM小组转移到加利福尼亚州南部的洛杉矶,并增加至21名开发人员。1967年,IBM团队完成了ICS的第一个版本。1968年4月开始进行安装测试。1968年8月14日,第一个安装成功,信息显示在美国国家航空航天局洛克维尔部门的IBM 2740打印机终端上。

1969年,ICS被更名为信息管理系统,即IMS。自第一个版本问世以来,IBM一直在不断开发和完善IMS的功能。2007年,IBM推出了IMS 10版本。IMS 10具备了增强的XML和网络服务功能,并且也是第一个将标准XML查询语言应用于层次结构化数据的数据库系统。

1.1.3 RDBMS和SQL

无论是CODASYL,还是IMS,虽然这些系统为早期系统提供了良好的基础,但它们的基本体系结构是将数据的物理操作与逻辑操作混合在一起。当数据的物理位置改变时,也必须更新应用程序来引用新的位置,给数据查询带来了不便。

SQL是一种关系型数据库查询语言,要介绍SQL的起源,就不得不介绍IBM公司的两个重量级人物——E. F. Codd博士和Don Chamberlin博士。E. F. Codd博士最早提出了关系数据库管理系统(Relational Database Management System,RDBMS)模型,而Don Chamberlin博士则是SQL和XQuery语言的主要创造者之一。他们对数据库的变革起到了革命性的作用。

Don Chamberlin最初在IBM的T. J. Watson研究中心(http://www.watson.ibm.com/)工作,当时该中心的主要研究方向是操作系统。Chamberlin一开始从事的项目是System A,但项目很快便以失败而告终。当时担任项目经理的Leonard Liu(现为Augmentum 公司CEO,http://www.augmentum.com)很有远见地预见到数据库的美好前景,他转变了整个小组的研究方向。Chamberlin因此在数据库软件和查询语言方面进行了大量研究,并成为了小组中最好的网状数据库 CODASYL专家。

此时的E. F. Codd博士在IBM的San Jose研究中心(即现在的Almaden研究中心,http://www.almaden.ibm.com/)工作。1969年,Codd在IBM的研究报告“Derivability, Redundancy, and Consistency of Relations Stored in Large Data Banks”(大型数据库中关系模型存储的可导、冗余和一致性)中第一次提出了关系模型,修订版本是Codd于1970年在一篇名为“A Relational Model of Data for Large Shared Data Banks”(大型共享数据库的数据关系模型)的文章中提出的,发表在《美国计算机学会通讯》杂志上。这是一篇里程碑性的论文,它确立了关系数据库的概念。但是,由于IBM正在从事IMS的开发,这种思想对IBM本身产品造成了威胁,所以公司内部最初持压制态度。当然这也与Codd采用了大量的数学方法、不容易理解有关。

1973年,IBM在外部竞争的压力下,开始加强在关系数据库方面的投入。Chamberlin被调到San Jose研究中心,加入新成立的项目System R。System R基于Codd提出的关系数据库管理系统模型。

System R项目包括研究高层的关系数据系统(Relational Data System,RDS)和研究底层的存储系统(Research Storage System,RSS)两个小组,Chamberlin担任RDS组的经理。RDS实际上就是一个数据库语言编译器,由于Codd提出的关系代数和关系演算过于数学化,影响了易用性。于是Chamberlin选择了自然语言作为研究方向,其结果就是诞生了结构化英语查询语言(Structured English Query Language,SEQUEL)。后来,由于商标之争,SEQUEL更名为SQL。

System R是一个具有开创性意义的项目。它第一次实现了结构化查询语言,并已成为标准的关系数据查询语言。同时,它也是第一个证明了关系数据库管理系统可以提供良好事务处理性能的系统。System R系统中的设计决策,以及一些基本算法选择(如查询优化中的动态编程算法)对以后的关系系统都产生了积极影响。

System R本身作为原型虽然并未问世,但鉴于其影响,计算机协会(Association for Computing Machinery,ACM,http://www.acm.org/)还是把1988年的 “软件系统奖”授予了System R开发小组。

1.1.4 ANSI和SQL方言

ANSI是美国国家标准学会(American National Standards Institute)的英文缩写,该学会成立于1918年。当时,美国的许多企业和专业技术团体,已开始了标准化工作,但因彼此间没有协调,存在不少矛盾和问题。为了进一步提高效率,数百个科技学会、协会组织和团体,均认为有必要成立一个专门的标准化机构,并制定统一的通用标准。1918年,美国材料试验协会(ASTM)、美国机械工程师协会(ASME)、美国矿业与冶金工程师协会(ASMME)、美国土木工程师协会(ASCE)和美国电气工程师学会(AIEE)等组织,共同成立了美国工程标准委员会(AESC)。美国政府的商务部、陆军部和海军部也参与了该委员会的筹备工作。1928年,美国工程标准委员会改组为美国标准协会(ASA)。为致力于国际标准化事业和消费品方面的标准化,1966年8月,又改组为美利坚合众国标准学会(USASI)。1969年10月6日改成现名:美国国家标准学会(ANSI)。

虽然IBM首创了关系数据库理论,但Oracle却是第一家在市场上推出了这套技术的公司。随着时间的推移,SQL的简洁、直观,在市场上获得了不错的反响,从而引起了ANSI的关注,分别在1986年、1989年、1992年、1999年及2003年发布了SQL标准。SQL Server 2000遵循ANSI SQL:1992标准,而SQL Server 2005和2008还实现了ANSI SQL:1999和ANSI SQL:2003中的一些重要特性。

数据库生产商在遵循ANSI标准的同时,也会根据自己产品的特点对SQL进行了一些改进和增强,于是也就有了SQL Server的Transact-SQL、Oracle的PL/SQL等语言,我们称之为SQL方言。在本书中,我们将以Transact-SQL为基础进行SQL语言的介绍。实际上,在学习过程中,大家也没有必要刻意关心哪些语句或关键字是SQL标准,哪些是Transact-SQL的扩展。其实常见的数据库操作,在绝大多数支持SQL语言的数据库中差别并不大,所以数据库开发人员在跨越不同的数据库产品时,一般不会遇到什么障碍。但是对于数据库管理员来说,则需要面对很多挑战,不同数据库产品在管理、维护和性能调整方面区别很大。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
SQL 分布式计算 Hadoop
Spark SQL 是什么_历史和重要性 | 学习笔记
快速学习 Spark SQL 是什么_历史和重要性
111 0
Spark SQL 是什么_历史和重要性 | 学习笔记
|
SQL
根据sql_id 查询历史SQL TEXT :dba_hist_sqltext
select * from dba_hist_sqltext where sql_id in ('gdduv7gpwu2k4','6ta2r7v563nbv','5jmanw0t1dpsa','16zfwqb2ma4xw','0a63j7qqrp6wk') ...
2776 0
|
SQL .NET 开发框架
历史SQL语句之一
注释:查询该课程表下,所有的课程以及课程观看的人数统计 SELECT ml.`name` as lessonName,ml.category,ml.deleted,ml.teacherName, ml.
681 0
|
SQL
基于dba_hist_sqlstat查看sql语句的性能历史
在生产环境中,如果系统已经稳定,调优的空间就会越来越小,但是不代表没有调优的余地,可能工作的重心就会更加求稳,sql调优就是一项不间断的工作,很多工作还是需要前瞻的,如果等到问题严重的时候再紧急处理,提前的分析这些潜在问题就会让你不会总是心跳加快,两手冒汗。
1126 0