1946年,有个叫冯·诺依曼的人发明了计算机,最开始的计算机的主要用途是将程序指令存储器和数据存储器合并在一起,然后进行相应的运算。
这时候的数据管理非常简单。主要是通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理。
然而,随着计算机的诞生和成熟,数据管理技术也迅速发展。传统的文件系统难以应对数据增长的挑战,也无法满足多用户共享数据和快速检索数据的需求。
在这样的背景下,20世纪60年代,数据库应运而生。
网状数据库和层次数据库时代
1964年,世界上第一个数据库系统---IDS(Integrated Data Storage,集成数据存储)诞生于通用电气公司。IDS是网状数据库,奠定了数据库发展的基础,在当时得到了广泛的应用。
网状数据库是数据库历史上的第一代产品,它成功地将数据从应用程序中独立出来并进行集中管理。网状数据库基于网状数据模型建立数据之间的联系,能反映现实世界中信息的关联,是许多空间对象的自然表达形式。
5 年后,美国数据库系统语言协会(Conference on Data SystemsLanguages,CODASYL)下属的数据库任务组(Database Task Group,DBTG)发布了一份报告,阐述了网状数据库系统的许多概念、方法和技术,成了网状数据库的代表。
在20世纪70年代与80年代初,网状数据库系统十分流行,在数据库系统产品中占据主导地位。例如,配备在富士通公司M 系列机上的AIM(Advanced Information Manager)系统和配备在UNIVAC(UNIVersal Automatic Computer)上的DMS1100 系统都是网状数据库系统。
紧随网状数据库后出现的是层次数据库,其数据模型是层次数据模型,即使用树结构来描述实体及其之间关系的数据模型。在这种结构中,每一个记录类型都用节点表示,记录类型之间的联系则用节点之间的有向线段来表示。每一个子节点只能有一个父节点,但是每一个父节点可以有多个子节点。这种结构决定了采用层次数据模型作为数据组织方式的层次数据库系统只能处理一对多的实体联系。
1968年,世界上第一个层次数据库系统---IMS(Information Management System,信息管理系统)诞生于IBM 公司,这也是世界上第一个大型商用的数据库系统。
如上所述,网状数据库系统和层次数据库系统在数据库发展的早期比较流行。网状数据库模型对于层次和非层次结构的事物都能比较自然地模拟,相比层次数据库应用更广泛,在当时占据着主要地位。
1973年,Charles W.Bachman获得图灵奖,以表彰他在数据库领域,尤其是在网状数据库管理系统方面的杰出贡献。但是,网状数据库也存在一些问题:首先,用户在复杂的网状结构中进行查询和定位操作比较困难;其次,网状数据的操作命令具有过程式的性质;最后,网状数据库对于层次结构的表达并不直接。
Charles W.Bachman
关系数据库时代
虽然对于数据的集中存储、管理和共享的问题,网状数据库和层次数据库已经给出较好的解答,但是在数据独立性和抽象级别上仍有较大的欠缺。为了解决这些问题,关系数据库应运而生。
1970年,IBM 的研究员Edgar F.Codd发表了A Relational Model of Data forLarge Shared Data Banks 论文,提出了关系数据模型的概念,奠定了关系数据模型的理论基础,这是数据库发展史上具有划时代意义的里程碑。
Edgar F.Codd
随后,Edgar F.Codd又陆续发表了多篇文章,论述了范式理论,用数学理论奠定了关系数据库的基础,为关系数据库建立了一个数据模型---关系数据模型。
关系数据模型的概念非常简单,结构特别灵活,能满足所有布尔逻辑运算和集合运算规则形成的查询要求;可以搜索、比较和组合不同类型的数据;使用关系数据模型进行数据增加和删除操作非常方便,关系数据模型具有较高的数据独立性和更好的安全保密性。然而,当数据库比较大的时候,查找满足特定关系的数据比较耗时,同时也难以描述空间数据关系。
在关系数据模型的基础上,IBM 公司从1970年就开始了关系数据库项目SystemR的研究和开发。然而,由于IBM 已有层次数据库产品IMS,System R产品化进程十分缓慢,直到1980年才完成产品化,作为一个产品正式推向市场。后来,IBM 公司在System R的基础上发布了DB2数据库系统。IBM 公司研发进程缓慢,没能在产品上抢占先机。
1973年,加州大学伯克利分校的Michael Stonebraker和Eugene Wong利用IBM 公司已发布的信息,以及关系模型的理论,开始开发自己的关系数据库系统Ingres。1976年,霍尼韦尔公司(Honeywell)开发了世界上第一个商用关系数据库系统---Multics Relational Data Store。
1974年IBM 的Ray Boyce和Don Chamberlin将Edgar F.Codd论述的关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language,结构化查询语言)。
SQL是一种操作关系数据库的标准语言,它包括了对数据进行定义、操纵、查询和控制功能的类型分句。用户只需要在高层数据结构上进行数据处理,无须用户指定数据的存取方法,也不需要用户了解具体的数据存储方式,就可以使用SQL对不同关系数据库进行数据操作。SQL有着一体化、使用方式灵活、非过程化和简单易用的特点,几乎所有的关系RDBMS(Database Management System,数据库管理系统)产品都支持SQL,例如Oracle、DB2、Sybase、SQL Server、MS Access、MySQL、PostgreSQL等。
1978年,Larry Ellison在为美国中央情报局做一个数据项目的时候,敏锐地发现关系数据库的商机。几个月后,Oracle 1.0诞生了,它除了完成简单关系查询之外,不能做任何事情。但是经过短短十几年,Oracle公司的数据库产品不断发展成熟,成为了数据库行业的巨头。至此,关系数据模型的理论才通过SQL在商业数据库Oracle中使用。
虽然加州大学伯克利分校的Ingres项目结束于20世纪80年代早期,但在Ingres的基础上产生了很多商业数据库软件,包括Sybase、Microsoft SQL Server以及Informix等其他众多的数据库系统。在20世纪80年代中期,加州大学伯克利分校又启动了Ingres的后继项目Postgres,该项目产出了很有影响力的PostgreSQL数据库系统。Ingres作为比较早的数据库系统,对关系数据库的发展产生了重要影响,是数据库发展史上最有影响力的项目之一。
关系数据库系统以关系代数为坚实的理论基础,经过几十年的发展和实际应用,技术越来越成熟和完善,直到今天,关系数据库仍然在数据库领域占据着最重要的地位,应用范围非常广泛。由于Edgar F.Codd在关系数据库理论和实现方面的杰出贡献,他于1981年被授予图灵奖。为了表彰Michael Stonebraker在数据库系统原型和初步商业化方面的巨大贡献,2014 年Michael Stonebraker被授予图灵奖。
虽然关系数据库系统的技术很成熟,但随着市场和信息技术的发展,其局限性也逐渐暴露出来,即它能很好地处理所谓的"表格型数据",却无法处理当前出现的越来越多的复杂类型数据(如文本、图像、视频等)。
分布式数据库时代
在数据库发展早期阶段,使用单机数据库就能满足数据存储和管理的规模,但是随着互联网的不断普及,特别是移动互联网的兴起,数据规模爆炸式增长,单机数据库越来越难以满足用户需求。解决这种问题的一个直观方法就是增加机器的数量,把数据库同时部署在多台机器上,分布式数据库就这样应运而生了。
20世纪70年代中期分布式数据库的研究就已经开始了,这个时期也出现了一些分布式数据库系统。例如,1979 年,美国计算机公司(Computer Corporation of America,CCA)在DEC(Digital Equipment Corporation)计算机上实现了世界上第一个分布式数据库系统SDD-1。随后,在不到十年的时间内,分布式数据库的发展十分迅猛。例如,IBM 公司在System R的基础上研制了分布式数据库R* ,加州大学伯克利分校开发了分布式Ingres等。
1987年,C.J.Date提出了完全的、真正的分布式数据库系统应遵循的原则,该原则被作为分布式数据库系统的理想目标。20世纪90年代以来,分布式数据库系统进入商业化应用阶段,传统的关系数据库产品均发展成以计算机网络及多任务操作系统为核心的分布式数据库产品。
2005年左右,研究人员对分布式数据库的探索,推动了NoSQL数据库的发展,这些数据库解决的首要问题是单机上无法保存全部数据,其中以HBase、Cassandra、MongoDB为代表。2012-2013年,业界在谷歌(Google)发表的Spanner和F1系统的论文中看到了关系模型和NoSQL的扩展性在一个大规模生产系统上融合的可能性,这些探索极大地推动了NewSQL数据库的发展。
进入大数据和移动互联时代后,因为数据的特性和应用场景的变化,注定着不论是传统的关系数据库,还是新型的NoSQL和NewSQL数据库都会向着分布式的方向发展,分布式数据库也成了数据库领域的主流方向之一。但是分布式数据库也存在一些问题。例如,众多节点之间通信会花费大量时间;数据的安全性和保密性在众多节点之间会受到威胁;在分布式系统复杂的存取结构中,原本在集中式系统中有效存取数据的技术可能不再适用;分布式的数据划分、负载均衡、分布式事务处理和分布式执行技术缺乏新的突破。
云数据库时代
云计算(Cloud Computing)的迅猛发展使得数据库部署和虚拟化在"云端"成为可能。云数据库即是数据库部署和虚拟化在云计算环境下,通过计算机网络提供数据管理服务的数据库。因为云数据库可以共享基础架构,极大地增强了数据库的存储能力,消除了人员、硬件、软件的重复配置。
云数据库将传统的数据库系统配置在"云上",有专门的云服务提供商进行这些"云上"数据库系统的管理和部署工作,用户只需要通过付费的方式就能获取数据库服务。不同于传统数据库,云数据库通过计算存储分离、存储在线扩容、计算弹性伸缩来提升数据库的可用性和可靠性。代表性的云数据库是亚马逊的Aurora,它首先提出了日志即是数据库的理念,减少了网络消耗,提升了系统的可用性。
云数据库也能分成关系数据库和非关系数据库。典型的基于关系数据模型的云数据库就有亚马逊的Aurora、微软的SQL Azure云数据库。常见的基于非关系数据模型的有亚马逊的DynamoDB,该数据库采用键值存储。
2019年6月,Gartner发布The Future of the Database Management System(DBMS)Market Is Cloud 报告,明确提出传统的部署数据库的方式已经过时,云是未来,所有组织,无论大小,都将越来越多地使用云数据库。但是,云数据库中存在的问题也不可忽略,云计算中最值得关注的是安全问题,云计算对数据安全带来了极大威胁,数据极易泄露,存在意外丢失的风险。
▉ 常见的数据库管理系统排名(DBMS)
目前互联网上常见的数据库管理软件有Oracle、MySQL、MS SQL Server、DB2、PostgreSQL、Access、Sybase、Informix这几种。以下是2024年1月7日DB-Engines Ranking 对各数据库受欢迎程度进行调查后的统计结果:(查看数据库最新排名:db-engines.com/en/ranking)