数据库技术的变迁历史及发展趋势
摘要:
在本文中,我会对计算机数据库技术的历史分时间段进行介绍,然后着眼于数据库模型的变迁,我会首先对几类主流数据模型进行分析比较。在分析过程中提出自己的观点以及对未来的展望。
关键字: 数据模型 数据库技术 变迁历史 发展趋势
目录:
- 引言
- 数据库技术的变迁历史
1.1 远古时代
1.2 20世纪60年代
1.3 70年代
1.4 80年代
1.5 90年代
1.6 2000s - 数据库模型变迁
2.1 层级模型和网络模型
2.2 关系模型
2.3 实体-联系模型
2.4 对象模型
2.5 文档模型
- 结论
- 参考文献
正文:
引言:
计算机数据库技术跟我们的日常生活息息相关。我们生活在网络时代,每天跟微信好友聊天,刷朋友圈,刷微博,看新闻热点,都必须通过数据网络。恐怕现在很少人能够能想象没有网络的生活。我们点开朋友圈,微信APP随即向微信的服务器发送了一个网络请求,服务器从数据库获取到最新的朋友圈信息,然后发送回我们的手机,像这样,几乎所有的网络请求都离不开数据库操作。没有数据库技术,就没有今天这样便利的生活。
计算机数据库技术的革新,会彻底改变我们的生活方式。假设现在人类使用的数据库技术仍然非常落后,网络支付一次,需要花上十几分钟,那网络支付一定不会像今天这样普及,然后网上商城也一定不会像今天一样方便。如果看个网页,需要花上几分钟,那么更别说看直播或是在视频网站上看电视剧了,我们会选择看电视而不是打开电脑。而这些,恰恰是我们十年前过着的生活,即使变革的很大部分原因在于网络带宽以及速度的提升,但是数据库技术的革新的功劳也不可忽视的。
数据模型是数据库设计的理论基础。上个世纪60年代,最流行的数据模型包括网状模型CODASYL和层级模型IMS,后来这两种模型被关系模型取代,直至今日关系模型仍然是最受欢迎的数据库模型。
2018年stackoverflow网站的数据分析显示,现在市面上运用最广的数据库前三名是MySQL,SQLServer,和PostgreSQL,这些都是关系型数据库。
关系型数据库虽然是主流,但是NoSQL却有后来者居上之势。作为一个程序员,我们应该都或多或少听说过NoSQL,其中最引人注目的应该是MongoDB,近年来MongoDB的排名一路攀升,在刚才所说的排名中排到了第四名。那么究竟是什么需求,使得关系型数据库变得力不从心,需要新的数据库范式来救急?为了弄明白这些问题的原因,以及弄明白数据库领域今后发展的趋势,我们需要追溯历史,这也是本文的主要目的。
1.数据库技术的变迁历史
任何事物都有前因后果,目前人类社会的任何现象都有它的过去,都与它的过去紧密相关。当然,从数据库技术的角度来看也一样,例如现在NoSQL大有后来者居上之势,如果不追根溯源,又怎么知道是什么导致了这样的趋势呢?如果不知道NoSQL的诞生是为了什么,我们又为什么要去学习它呢?不了解历史,就没办法对现状有正确的把握。
1.1 远古时代
可以说,只要有信息的地方,就需要数据库技术。
从远古时代开始,随着人类社会的发展,信息不断地累积。为了记录前人留下来的宝贵知识,我们的祖先开始在羊皮或者竹简上写字,再后来有了纸,书籍变得随处可见。可是那么多的书籍与资料,如果不能有效地集中管理,在紧要关头找不到自己想要的知识的话,实在是一件非常令人苦恼的事情,所以人类建起了图书馆,配备了图书管理员,为藏书进行编号管理。图书馆,或者类似图书馆的东西,我们可以把它们看做是数据库技术的前身。我们也很容易想象,最早的数据库系统就是运用类似图书馆管理的理念去设计的。
1.2 20世纪60年代
60年代,计算机开始真正普及,相应地,计算机数据库也发展了起来。这个时期普及的两种数据库模型包括: 网状模型CODASYL和层级模型IMS. IBM公司的一个商业化成功的数据库叫做SABRE,被美国航空公司用来管理他们的预约数据。
1.3 70年代
1970至1972年,IBM公司的一位职员发表了一篇重要的论文,提倡大家使用关系型数据库模型。这一观念改变了大家的思考方式。 在这种模型里面,数据的逻辑结构是与物理存储分离开来的,而这也成为了现代数据库系统的一项标准原则。
70年代是关系型数据库模型的探索与实践阶段,在这个时期,名为QUEL的语言诞生了,这可以说是我们今天仍乐此不疲的SQL语言的前身,而且它直接关系到后来Oracle,微软SQL Server等数据库的诞生,而这些数据库到现在仍然十分热门。
1976年,一种名为实体-联系模型的新的数据库模型被提出,这也就是我们现在大学课程中学到的ER模型。这种模型让我们把关注点放到对数据的应用上,而不是去关心表的逻辑结构。
1.4 80年代
结构化查询语言SQL成为了标准查询语言。
计算机销量的增长使数据库市场变得繁荣,关系型数据库系统获得了商业上的成功。同时网络模型和层级模型被使用得越来越少。 DB2成为了IBM公司的旗舰级数据库产品。随着IBM电脑的普及,很多数据库公司被建立了起来。
1.5 90年代
90年代早期,数据库行业经历了动荡和重新洗牌。在这一时期,对象型数据库的原型被开发出来了。
90年代中期,计算机网络的进步导致数据库产业的指数增长。
90年代末,在线投资的增长,对网络据库连接提出了更高的要求。后来随着开源解决方案的诞生(MySQL, Apache之类的现在仍然很流行),在线交易和在线分析处理技术逐渐变得成熟。
1.6 2000s
虽然互联网行业在21世纪初经历了下滑,数据库应用程序继续发展。如今世界上最大的几个数据库公司包括微软,IBM和甲骨文。
2009年,一场关于“开源分布式非关系型数据库”的讨论象征着NoSQL概念的正式诞生。
2. 数据库模型变迁
数据库模型决定了数据库的逻辑结构以及数据的存储,组织和操作方式。
数据库模型可以分为: 网状模型,层级模型,关系模型,对象模型,实体-联系模型,文档模型等。
现在最流行的数据库模型是关系模型。
2.1 层级模型和网络模型
层级模型出现在60年代,最早被IBM公司用于自己的信息管理系统。该模型呈树形结构,只有一个根节点,其余每个节点只有一个父节点。该模型的优点是结构简单清晰。缺点在于只能表示1对N的关系。
网络模型是基于集合理论,在层级模型的基础上加入多对多关系的一种模型。自从70年代被“数据系统语言会议”提出来之后,一度成为最流行的数据库模型。虽然该模型弥补了层级模型的主要缺点,但是同时导致自身结构变得非常复杂难以掌握,这直接导致了关系数据模型的诞生。
2.2 关系模型
1970年,一位IBM的职员忍受不了网络模型的复杂,提出了关系模型,这一观念改变了大家的思考方式。在这种模型里面,数据的逻辑结构是与物理存储分离开来的,而这也成为了现代数据库系统设计的一项标准原则。关系模型的优点在于概念清晰简单,操作方便,而缺点在于查询效率低,同时也增加了数据库管理系统的开发难度。
关系模型固然是当前的主流,但是当时间推进到21世纪,推特,facebook等社交媒体软件发展起来以后,用户之间错综复杂的关系,导致一个请求往往要进行多达十几次的联表查询,再加上庞大的用户量,使得传统的关系型数据库成为性能瓶颈,数据库范式的变革变得势在必行,这正是导致NoSQL诞生的原因。
2.3 实体-联系模型
1976年被提出,是一种非常重要的理论模型,以至于现在我们学的数据库课程都将其列为重点。但是该模型并没有跟实际的物理数据库结构挂钩,而是作为一个好用的工具,经常被用于进行数据库的设计。
2.4 对象模型
对象模型是最广为人知的“后关系数据库模型”。
该模型的主要观念是,用面向对象的方式来管理数据,意味着我们可以对数据进行继承之类的操作。理念虽然新颖,但是没能得到普及。其中很大一部分原因是因为关系型数据库系统已经很成熟了,有着稳定并且好用的接口,而对象模型还没有一个统一的标准。
从理念上来看,对象数据库系统,应该可以完美代替现在我们常用的“关系型数据库+对象映射(ORM)”模式。但是另一方面,很多关系型数据库可以方便解决的问题,比如各种完整性约束,至少就现在看来对象模型数据库系统并没有做的很好。
所以以后是怎样一个发展趋势,我们现在还无从得知。
2.5 文档模型
文档模型是现在NoSQL的主流,主要设计用于储存半结构化数据,也就是说没有固定的列(域),同时,文档型数据库不再拥有完整性约束等关系型数据库提供给我们的功能。该模型的优点在于有很好的扩展性,少了约束,我们就可以很方便地跨服务器进行分布式存储,意味着我们可以横向发展增加服务器的数量,而不是只能提高一台主机的性能。缺点一是没有了方便的约束,二是发展得还不成熟,如果出了问题,不一定有人能迅速为我们提供帮助。
在近年的数据库排行榜中可以看到,NoSQL大有后来居上之势。其实我们现在用的很多服务,并不需要数据库提供多么强大的约束,从易用性方面来考虑,可以想象以后NoSQL会成为IT业界的首选。
3. 结论
计算机是一门年轻的学科,从诞生到现在也仅仅过了半个世纪。在这半个世纪里,数据库产业蓬勃发展,不断地适应着市场需求进行改进,而且这一进程仍然处在风口浪尖,可能短短几年,NoSQL就会取代传统数据库技术成为新的主流。又或者,一个新颖可行的理念被提出来,转眼间把过去学的知识颠覆。数据库技术的世界日新月异,我们需要时刻鞭挞自己紧跟时代的潮流,对事物的总体有客观的认识,做好充分的准备去迎接新的挑战。
参考文献:
Keith D. Foote. A Brief History of Database Management. http://www.dataversity.net/brief-history-database-management/
www.quickbase.com. A Timeline of Database History. https://www.quickbase.com/articles/timeline-of-database-history
Asbjørn Danielsen. The Evolution Of Data Models And Approaches To Persistence In Database Systems. https://www.fing.edu.uy/inco/grupos/csi/esp/Cursos/cursos_act/2000/DAP_DisAvDB/documentacion/OO/Evol_DataModels.html
www.quora.com. What is the next database paradigm, after NoSQL? https://www.quora.com/What-is-the-next-database-paradigm-after-NoSQL
www.lucidchart.com. What is a Database Model. https://www.lucidchart.com/pages/database-diagram/database-models