SQL到如今已经诞生45年了,如今对SQL进行投票,2019年11月份还是出于前10大编程语言之一。
编程语言排行榜
这对一门已经上了年纪的“老语言”来说是十分了不起的,但你知道sql是怎么诞生的吗?
关于sql的诞生,我们不得不从计算机的诞生说起。
世界上第一台通用计算机“ENIAC”于1946年在美国宾夕法尼亚大学诞生,但是很多人不知道第一台商用电脑的名字叫UNIVAC,1951交付于当时的美国的人口普查局。
世界第一台计算机
那时的数据管理非常简单。通过大量的分类、比较和表格绘制的机器运行数百万穿孔卡片来进行数据的处理,其运行结果在纸上打印出来或者制成新的穿孔卡片。而数据管理就是对所有这些穿孔卡片进行物理的储存和处理。
穿孔卡片存储
但这种存储方式是在太笨重啦!数据量小而且查询还不方便,因此最终这种方式被后出现的网状数据库(Network Databases)和层次数据库(Hierarchical Databases)所取代。当时网状DBMS要比层次DBMS用得更普遍。在数据库发展史上,网状数据库占有重要地位。
网状数据库模式
层次型数据库
网状数据库与层级型数据库均有其弊端,而且弊端从本质上无法进行优化避免,其主要缺点如下:
网状数据库
(1)结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户掌握
(2)其DDL,DML语言复杂,用户不容易使用。用于记录之间联系是通过存取路径实现的,应用程序访问数据库时必须选择适当的存取路径。因此,用户必须了解系统的结构的细节,加重了编写应用程序的负担
层次型数据库
(1)现实世界中很多联系是非层次性的,如多对多联系,一个节点具有多个双亲等,层次模型不能自然的表示这类联系,只能通过引入冗余数据或引入虚拟结点来解决
(2)对插入和删除操作的限制比较多
(3)查询子女结点必须通过双亲结点
SQL的出现
1970 年,IBM研究员E.F.Codd博士在刊物Communication of the ACM上发表了一篇名为“A Relational Modelof Data for Large Shared Data Banks”的论文,提出了关系模型的概念,奠定了关系模型的理论基础。
直到1985年IBM才发布了关系数据库DB2,那时oracle已经占有了很大的市场,Ellision已经成了千万富翁。1989年,微软发布了SQL Server 1.0版。三大商用关系型数据库的发布年份,也正好对应了市场占有率的排名。
谷歌发布的 MapReduce (2004年)和 Bigtable(2006年),以及亚马逊发布的Dynamo,这些开创性的论文促使了更多非关系数据库的出现,包括 Hadoop、Cassandra和 MongoDB。这些新系统基本上都是从零开始编写的,他们并没有使用SQL而是都开发了自己的语言,这也就导致了 NoSQL 运动的兴起。
不过SQL也不是出现后地位就波澜不惊,其也受到过NoSQL的冲击。
NoSQL跟SQL相比,因为操作简介,接受的群众范围更广了。甚至有人认为这是做项目时候通往成功的捷径。但后来出现了问题。
开发人员很快发现,没有SQL实际上是非常有限的。。每个NoSQL数据库都提供了自己独特的查询语言,这意味着:学习更多的语言(并在同事之间传播知识);增加了将数据库连接到应用程序的难度,导致代码之间有很强的耦合性;缺乏第三方生态系统,需要公司开发自己的操作和可视化工具。
一些NoSQL数据库添加了自己的“类sql”查询语言,比如Cassandra的CQL。但使用起来效果并不好,往往其把开发的难度又再次增加啦!这跟语言是解决问题的工具的含义所违背。
因此sql凭借其在90%的情况中都能完成任务。这对于身处越来越复杂的技术与集成环境中的开发者而言,就是最大的优点。sql又再一次焕发新生啦!