-
深扒SQL的历史,说点秘密给你听
01,本文导读
很多学SQL的朋友,或正在用SQL的朋友,都感觉到害怕,最近兴起的大数据,NoSQL会不会终结了SQL的命运,这帮只会SQL的朋友,怎么办?想学吧,又没精力,不学吧,提高不了自己,不能升职加薪!
想要彻底看懂局势,还得从两家的历史谈起,今天就先谈谈SQL的起家史。
02,IBM时代
说起关系型数据库,始终离不开IBM,更离不开那篇论文。
带读 IBM 关系型数据库经典论文
“IBM为啥能出这么牛的论文呢,不就是个卖服务器的奸商嘛!”说这番话的同学,你可以先坐下了。当时IBM有个很牛的研究院,叫做 Waston Research Center. 凡是有研究院的公司,都很牛逼,是不是?你看,微软研究院,SAP 研究院,十八摸(IBM, 18M很像,对不对?)研究院等等,还有国内的BAT研究院,华为研究院,联想研究院,小米研究院等等。
所以,没毕业的同学在选未来公司的时候,可得看准咯,有自己研究院的厂子肯定差不了,至少技术上是有发展方向的。
那这些研究院都在研究哪些吊炸天的技术呢?他们都要996嘛?
说实话996了我也未必看懂他们在干嘛:
嗯怎么样,懵不懵?反正当时我看了,多亏昕姐扶好我才坐稳。照这么玩法,我还是玩装机,继续当我的网管去了。别说我怂,说出来不信,当时全世界也就一个人能玩懂这套理论,那就是 Ted Codd, 而且他老人家也是50多岁了,才搞的这套玩法。
Edgar Frank "Ted" Codd (19 August 1923 – 18 April 2003) was an English computer scientist who, while working for IBM, invented the relational model for database management, the theoretical basis for relational databases and relational database management systems.
Codd 比 Code 排名稍前,所以名字就决定了他不可能发明 Code. 他的杰出贡献就是关系模型(Relational Model). 老爷子没有发明 Code, 要不是他觉得 Code 不够 Fashion ,不能代表他高深莫测的地位,这种神器怎么能发明出来给大众使用呢?要不就是像乾隆一样,流芳百世的功绩也要留点给后人嘛!
所以他只留下两把钥匙,开启 SQL 的两把钥匙:
关系代数(Relational Algebra)
关系演算(Relational Calculas)
没错,上面的两段天书代表了这两个理论:
如果你看懂了,什么 BAT,FLAG,达摩十八摸,放开了胆子走进去。保证你Offer拿到手软!
如果看不懂,也不急,我用SQL给你解释下:
怎么样,这下懂了吧?!什么,你才学SQL两天,竟然就可以把天才 Codd 的理论这么给打发了,那么以后维护世界和平的任务就交给你咯。
这说明个什么问题?毛爷爷曾教导我们,任何革命运动的胜利都离不开群众基础。群众需要什么,让人犯困的数学公式,枯燥单一的格式符?都不是我们的菜,一把“汉阳造”六五的983,或者计三八式362便可,有空场地练练手就能上了!
SQL 就是这么个好玩意儿。你快则练个 2 天,慢则一星期,上面的 SQL 绝对可以拿下。
吃水不忘挖井人,这么好用的东西,得感谢这两位:Ray Boyce 和 Donald D. Chamberlin. 年轻人嘛,总是对世界充满了好奇。喜欢用 Code 去改变世界,也热衷幻想跟自己的偶像一起工作。当他们得知 Codd 前辈在关系模型方向的研究之后,天天追他的文章,看他的博客,入他的知识星球,已经到了狂乐的地步。只要有面基的机会,那是一定不会放过,终于有一天,在 Codd 大叔上台演讲的时候,逮到一个好机会,表达自己的仰慕之情。
Codd 一看,哦,还有年轻人对我这糟老头子的研究感兴趣,赶紧请进家来,好酒好菜招待着,后继有人,衣钵可托了。两刚毕业的孩子看到这一幕,那还得了。伯乐啊,吃了你的饭,喝了你的酒,一定替你过五关斩六将。
996,我估计那是007,不到两年光景,SQL 就被发明出来了。不仅如此,Boyce 还加了道菜,那就是我们SQL人常挂嘴边的 BCNF, Boyce-Codd normal Form, 第三范式。如果你经常被你的技术经理调侃,三范式没学好,记得别怪 Boyce,因为小博还没有来得及修正三范式,就很不幸的因为动脉瘤去了。是的,留下的三范式,大多数人没有再突破。下次破坏三范式设计的时候,记得跟小博说声对不起。毕竟我们吃软饭的工具,是他26岁留给我们的,写完就见上帝去了,我们写SQL的人都欠他一个道别。
小博我们是真无法感谢了,但是搭档钱柏林(Donald Chamberlin)还在。老爷子最近一次亮相是在2009年的计算机历史博物馆,当时被授予年度人物奖。他的一生贡献可就大了,SQL, XQuery, System R, 因此获奖也无数。
03, 狼烟四起,群雄逐鹿
System R 在 IBM 这么多牛人的努力下,终于上了三个实验站点,却没想到一票走红,Oracle, DB2, SQL Server 也就跟着起来了。
那为什么 System R 没有成为 IBM 的当红产品,而让 DB2 抢了风头呢?Oracle 仅凭拉里一人,又怎么称霸世界了呢?别急,听我慢慢道来。
小时候我们都在纠结一个事情:鸡是怎么来的?生来就是鸡,还是鸡蛋孵出来的。有小朋友说是其他动物变异来的,也有小朋友说是某种蛋遇到合适的环境和温度,就出来了现在像鸡一样的动物。
System R 置于整个 SQL 数据库界的地位,就是鸡置于整个鸡族史的地位。那是第一代关系型数据库,第一次完整的实现了SQL语言来控制数据库。其他的 Oracle, DB2, MS SQL Server 那都是不听话的,有想法的小弟。每个小弟凭着自己的看家本领都自立门户了,且还都混得不错。
为了英雄,为了联盟...
说啥呢,为了SQL
先说 DB2 吧,与 System R 本是同根生。由于 System R 本身是实验性质的产物,并没有考虑太多商业化的因素,总是被各类二道贩子骂街。一会儿操作系统不兼容,一会儿SQL总有些不够听话,IBM一看这可不得了啊,即使批量生产起来了,后期口碑也要扑街啊。所以狠了狠心,把 System R放在自己研究员里当摆设了,继而发明了第一代的商业产品,并且把难以驯服的SEQUEL,改成了苗条版的SQL.
可能是当时太急于挣钱了吧,IBM针对每个操作系统开发了不同版本的 DB2, 比如 DB2 For System z 和 DB2 For System i 是不同的,因此连接两套数据库的驱动也不一样。哎呀尼玛,傻子都看得出来,这得多要命,作为客户来讲,简直是抢钱哇。就像某土豪一样,家用Windows, 商用 Mac, 结果 Office 要收你2份钱,你干不干?当然土豪的回答,肯定是干。
但是 IBM 内部首先就吃不消了。这10年下来,第一代的SQL程序员都不会玩最新版的 DB2 了,真要出了问题要谁维护去。成本极高,所以IBM又做了一次调整,将所有的DB2版本都整成一份,不论Windows,Linux,Unix都一统。客户开心了,成本低了;公司开心了,研发成本降低了;伤心的只有那些35岁以上的中年男,嗯,被裁了..... 兄弟来口二锅头,不在深夜2(two,吐)过的DB(男人)不成熟
中年被裁,最惨的某过于老婆也跟着跑了。提起 Oracle,就不得不说他的创始人拉里(Larry Ellison),就是中年跑了老婆的这位。32岁的拉里比起39岁才创业的刘邦,要好的多啦。都是从零开始,都是看到大人物的风骚开始自嗨。一个是看着秦始皇,发出“生当如此”的感慨;一个是看着《A Relational Model of Data for Large Shared Data Banks》论文,连连夸口“卧槽,牛皮牛皮,我也要发明这玩意儿”
但困难是摆在面前的,IBM要商业化,要吃饭啊,所以具体实现的编码怎么可能放出来呢,哪像现在这些 github上的开源项目,你要你拿走,我行我来卖。所以我说我们是最好的时代。拉里几次尝试破译无果之后,立马找来了帮手 Bob Miner和 Ed Oates, 成立了 Software Development Laboratories. 这么土的名字谁记得住,等到产品编译出来,立马大笔一挥,Oracle 便横空出世了。这一出世,可不得了,绚烂红长期霸榜数据库排行榜第一位。
再说说 Larry 的小老婆,哎,人家过得挺好的
接下来出场的是最年轻的小弟,SQL Server. 前两位大佬都是70后,而 SQL Server 是正宗的80后,还是个85后,沾点90后的嫩劲儿。1988年,微软和 Ashton-Tate 合作开发 Sybase SQL Server for IBM OS/2. 次年, SQL Server 1.0 就被微软给出版了。可以看出,其实 SQL Server 是有点非 Windows 的血统的,只是当年 IBM与微软分道扬镳后,OS/2 归了 IBM, SQL Server就被微软给收了。微软拿了 SQL Server 之后,统一了版权,且把它绑定在了 Windows 服务器上,这一绑世界上就多了一个刚从大学毕业的我,毕业那年我23.(其实和我没啥关系)在经历了23年与 Linux主流阵营分居之后,SQL Server 2017 终于又回归了大家庭。
所以微软这套 SQL Server 其实没啥好说的,就是从人家 Sybase 手里脱胎而来的,Sybase 现在还有很多公司用着呢,看到这类数据库的你,不要方,你的T-SQL水平照样可以 hold 住 Sybase.
04, 到底和我啥关系
“小编,你说了那么多,到底跟我有半毛钱的关系没?”“你不赞赏,当然跟你没半毛钱关系咯....”等等,这位同学,你的板砖先放一放。我再跟你捋一捋。
首先,数据库世家出自 IBM, 最初始的模型是 System R. 所以理论基础你要先看会,也就是我开头提到的那篇论文。熟读那篇论文,才能抓住数据库设计和开发的本质,说不定你也能弄一套数据库出来,赚两酒钱,弄不好还能去纳思达阔敲钟。
你说不想敲钟,在办公室点个卯,平淡过一生,你真的好好看 IBM DB2 那段故事了么,你真觉得能安心点卯过一辈子?资本的本质是什么?肮脏的毛细血鬼,他放过谁!
那么你说整天 CRUD, 能有出息嘛!那小博和唐纳尔德大叔的故事,你又没仔细看咯。你眼前的一切都是你生来都有的嘛,明显 iPhone11就不是嘛。但你说,iPhone11没有iPhone4那么惊艳了,那我问你,免费送你一部iPhon11和Mi 9, 你要哪个撒?(别,我不是你四川老乡,先别套近乎!)
好产品都是磨出来的,也就是碎片时间你一直在琢磨,磨着磨着就出货了。