1946年,美国宾夕法尼亚大学诞生了人类台电子计算机--ENIAC(Electronic Numerical Integrator And Computer,即电子数字积分计算机),这个占地170平方、重达27吨的超级大物,虽然计算速度是每秒5000次加法或400次乘法,但标志着人类开启计算机时代。
图灵奖作为计算机学科的高奖项,至今在数据库领域共有4位获奖者,分别是1973年获奖的Charles Bachman(查尔斯.巴赫曼)、1981年的Edgar F. Codd(埃德加·科德)、1998年的James Gray(詹姆斯格雷)、2014年的Michael Stonebraker(迈克尔.斯通布雷克),可见数据库对于计算机学科的重要性。
有文无库
1951年,雷明顿兰德公司发明了UNIVAC-1--台商用计算机诞生,它不仅能做科学计算,还能做数据处理。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来管理数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的储存和处理。此时的计算机系统还是处于有文(文件系统)无库(数据库)时代。
图片来自wikipedia
商用计算机广泛的用于数据管理,对数据的共享提出了越来越高的要求。传统的文件系统已经不能满足人们的需求,于是能够统一的管理和共享数据的数据库管理系统(Database Manager system DBMS)应运而生。数据模型是数据库系统的核心和基础,各种DBMS都是基于某种数据模型而设计。通常按照数据模型的特点将传统数据库系统分为:网状数据模型(Network Data Model)、层次数据模型(Hierarchical Data Model)和关系数据模型(Relational Data Model)。
网状数据库
早出现的DBMS是诞生于1961年的网状数据库,这一年通用电气公司Charles Bachman成功开发出世界上个DBMS--集成数据存储(Integrated DataStore IDS),奠定了网状数据库的基础,并在当时得到了广泛的发行和应用。
在IDS中,Bachman次将数据独立于应用系统存在,并提出了数据库的三级模式,以及把数据库语言分成数据库定义语言DDL和数据库操纵语言DML的思想,甚至他还明确了DBA职责。其中数据独立性是指数据库应用和数据库的逻辑结构和物理结构存在一定的分离。这样当应用发生变化时,无须变更数据库,反之亦然。这样做的好处是可以强化数据库系统的稳定性,为数据的独立存在提供了可能。数据独立性是通过支持三级模式结构来实施的,目前绝大多数的关系型数据库都支持三级模式结构。1973年,Charles Bachman获得图灵奖,以表彰他在数据库领域,尤其是在网状数据库管理系统方面的杰出贡献。
在网状结构中,允许有多个根节点,一个结点可以有多个父节点。乍一看这定义,网状数据库与近年流行的图数据库颇相似,但是如果深入了解两者还是有很大的差别。首先网状模型数据库有树形层次模型的思想,从父子关系的角度出发思考结点之间的关系,这就意味着在网状模型数据库中无法在结点之间随意建立关系。同时,网状模型数据库对于结点的属性需要提前定义好,而图数据库允许随意向结点和边添加、编辑属性。
网状数据库模型对于层次和非层次结构的都能比较自然的模拟,在关系数据库出现之前,网状DBMS比层次DBMS更普遍和成功。在数据库发展史上,网状数据库占有重要地位。
网状数据库数据模型
层次数据库
层次数据库关系是紧随网状数据库而出现的。它是以树结构为基本结构,仅有一个根结点,而且其他节点有且只有一个父节点。的层次数据库是IBM公司在1968年开发的IMS(Information Management System),它是一种只适合IBM主机的层次数据库,也是IBM公司研制早的大型DBMS产品。
层次数据库数据模型
关系型数据库
网状和层次数据库以及很好的解决了数据集中和共享问题,但是在易用性、数据独立性和抽象级别上仍有很大欠缺。如用户在对这两种数据库进行读写数据时,仍然要需要明确数据的存储结构,指出存取路径,而后来的关系型数据库较好的解决了这些问题。
1970年,IBM的研究员Edgar F. Codd博士发表了一篇名为"A Relational Model of Data for Large Shared Data Banks"的论文,提出了数据关系模型的概念,从而奠定了关系型数据库的理论基础。之后,他又陆续发布了多篇文章,论述了范式理论和衡量关系型系统的12条规则(又称Codd12条定律)。关系模型有严格的数学基础,抽象程度比较高,而且简单清晰、结构灵活,便于理解和使用,能满足布尔逻辑运算和集合运算规则形成的查询要求。同时,可以搜索、比较和组合不同类型的数据,使用关系数据模型进行数据的CRUD操作非常方便。另外,它又具有较高的数据独立性和安全保密性。但在当时数据库比较大的时候,查找满足特定关系的数据比较耗时,同时也难以描述数据之间的关系。
关系数据库数据模型
像大多数新生事物一样,关系数据库理论诞生的初期也遭到了挑战,有人认为关系型模型过于理想化,用来实现DBMS不现实,尤其在性能上又有问题,更为重要的是关系数据库对当时正在进行规范化的网状数据库带来严重挑战。于是在1974年,由ACM牵头开展了一场以Codd和Bachman为首的支持和反对关系型数据库之间的辩论,这次辩论极大推进关系型数据库的发展,使其为之后几十年成功的数据库。同年,IBM的Ray Boyce和Don Chamberlin将Codd 12条定律的数学定义以简单的关键字语法表现出来,里程碑式的提出了SQ(Structured Query Language)语言,这之后每次的SQL语言标准的变更都指导着关系数据库的产品发展方向。
在数据库关系模型建立后,IBM公司在San Jose实验室进行开发的System R项目,他的目标就是论证关系型数据库的可行性。1974年,加州大学伯克利分校的Michael Stonebraker和Eugene Wong在System R项目以及Codd关系模型的理论基础上,开发出学院派的关系数据库系统Ingres。然而个商用的关系型数据库产品,是1976年霍尼韦尔(Honeywell)公司推出--Multics Relational Data Source。接着1979年,Oracle公司实现了个使用SQL的商用关系型DBMS,当时Larry Ellison的公司名称是:关系软件有限公司 (Relational Software Inc RSI)。而IBM公司推出商用关系型数据库(DB2)则是1983年,此时Oracle(1982年RSI改名为Oracle)已经成立,早已占据了市场先机,Larry本人也已成为亿万富翁。
进入80年代中后期,在经过十几年的发展和实际应用,关系型数据库在事务(transaction)、锁(lock)、并行(parallel)、并发(concurrence)、调度(schedule)、日志(log)等技术越来越成熟和完善,诞生了诸多产品,其中商业数据库有Oracle、IBM的DB2、微软的MSSQL,开源的Posgres等辉煌至今。
90年代后,随着PC、互联网的发展,人类产生的数据爆发式的增长,数据库也不仅仅是存储和管理数据,进而转变成用户需要的各种数据的管理方式,也诞生了更多类型的数据库,如数据仓库,分布式、NoSQL(键值、文档、图、列存)、云原生等数据库类型。但在这些纷繁复杂的数据库我们依旧能看到网状数据库和关系型数据库厚重的身影。
总结
回顾传统数据库历史,数据库技术是计算机发展史上成功的系统技术之一,产生了四个图灵奖,形成了巨大的产业,推动了信息系统的发展。人类的进步总是站在巨人的肩膀上,总结数据库发展过程中的一些经验教训,对当前数据库及数据库语言百花齐放的时代,能促进我们对数据库行业现状的理解,也能帮助掌握未来数据库发展的趋势。唯有刨根问底,方能一探究竟。
数据库发展大事记
1951年:Univac系统使用磁带和穿孔卡片作为数据存储。
1961年:通用电气(GE)公司的Charles Bachman开发了个DBMS--IDS。
1968年:IBM开发出IMS(信息管理系统,Information Management System),是世界上个层次数据库管理系统。
1970年:Edgar F. Codd发表里程碑式的论文"A Relational Model of Data for Large Shared Data Banks",开启了关系型数据库辉煌50年。
1973年:IBM公司在San Jose实验室开发System R,目标是论证关系DBMS的可行性。
1974年:加利福尼亚大学伯克利分校(University of California, Berkeley)的Michael Stonebraker 和EugeneWong基于System R,开发出Ingres。
1974年:IBM的Ray Boyce和Don Chamberlin根据Codd12条定律提出SQL(Structured Query Language)语言。
1976年:Honeywell公司推出了Multics Relational Data Source--个商用的关系型数据库产品。同年,James Gray发表"Granularity of Locks and Degrees of Consistency in a Shared DataBase"的论文,正式定义了数据库事务的概念和数据一致性的机制。
1979年:Oracle公司成为个商用SQL关系型数据库。
1983年:IBM推出DB2商业关系型数据库。
1991年:W.H.Inmon出版《Building the Data Warehouse》一书,进入数据仓库时代。
2000年后:Google分别在2003年、04年、06年发表了"Google File System"、"MapReduce"、"Big Table"三篇论文,数据库进入大数据时代。
2012年:Google发表"Spanner: Google’s Globally-Distributed Database"论文。
2017年:AWS发表论文"Amazon Aurora: Design Considerations for High Throughput CloudNative Relational Databases",云原生数据库全面爆发。
参考文献
1.https://amturing.acm.org
2.A Relational Model of Data for Large Shared Data Banks
3.W.H.Inmon《Building the Data Warehouse》
4.Google File System、Google Bigtable 和 Google MapReduce
5.Spanner: Google’s Globally-DistributedDatabase
6.Amazon Aurora: Design Considerations for High Throughput Cloud-NativeRelational Databases
7.https://en.wikipedia.org/wiki/IBM
8.张文毅.关于数据库发展史的回顾与思考[J].图书与情报,1989(03):47-50.
9.陈继东.数据库发展史[J].程序员,2004(06):46-50.
10.杜小勇.来自数据库发展史的启示[J].信息技术与标准化,2013(09):10-11+14.