深度解析SQL和oracle等数据库的历史,说点不一样的给你
很多学SQL的朋友,或正在用SQL的朋友,都感觉到害怕,最近兴起的大数据,NoSQL会不会终结了SQL的命运,这帮只会SQL的朋友,怎么办?想学吧,又没精力,不学吧,提高不了自己,不能升职加薪!
想要彻底看懂局势,还得从两家的历史谈起,今天就先谈谈SQL的起家史。
IBM时代
说起关系型数据库,始终离不开IBM,更离不开那篇论文。
“IBM为啥能出这么牛的论文呢,不就是个卖服务器的嘛!”说这番话的同学,你可以先坐下了。当时IBM有个很牛的研究院,叫做 Waston Research Center。
凡是有研究院的公司,都很牛逼,是不是?你看,微软研究院,SAP 研究院,十八摸(IBM, 18M很像,对不对?)研究院等等,还有国内的BAT研究院,华为研究院,联想研究院,小米研究院等等。
所以,没毕业的同学在选未来公司的时候,可得看准咯,有自己研究院的厂子肯定差不了,至少技术上是有发展方向的。
那这些研究院都在研究哪些技术呢?他们都要996嘛?
说实话996了我也未必看懂他们在干嘛:
嗯怎么样,懵不懵?当时全世界也就一个人能玩懂这套理论,那就是 Ted Codd, 而且他老人家也是50多岁了,才搞的这套玩法。
Codd 比 Code 排名稍前,所以名字就决定了他不可能发明 Code. 他的杰出贡献就是关系模型(Relational Model). 老爷子没有发明 Code, 要不是他觉得 Code 不够 Fashion ,不能代表他高深莫测的地位,这种神器怎么能发明出来给大众使用呢?
所以他只留下两把钥匙,开启 SQL 的两把钥匙:
关系代数(Relational Algebra)
关系演算(Relational Calculas)
没错,上面的两段天书代表了这两个理论:
如果你看懂了,什么 BAT,FLAG,达摩十八摸,放开了胆子走进去。保证你Offer拿到手软!
如果看不懂,也不急,我用SQL给你解释下:
怎么样,这下懂了吧?!什么,你才学SQL两天,竟然就可以把天才 Codd 的理论这么给打发了。
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 那都是不听话的,有想法的小弟。每个小弟凭着自己的看家本领都自立门户了,且还都混得不错。
先说 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(男人)不成熟
IBM要商业化,要吃饭啊,所以具体实现的编码怎么可能放出来呢,哪像现在这些 github上的开源项目,你要你拿走,我行我来卖。
所以我说我们是最好的时代。拉里几次尝试破译无果之后,立马找来了帮手 Bob Miner和 Ed Oates, 成立了 Software Development Laboratories. 这么土的名字谁记得住,等到产品编译出来,立马大笔一挥,Oracle 便横空出世了。这一出世,可不得了,绚烂红长期霸榜数据库排行榜第一位。
接下来出场的是最年轻的小弟,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, 能有出息嘛!那小博和唐纳尔德大叔的故事,你又没仔细看咯。你眼前的一切都是你生来都有的嘛,明显你的苹果手机就不是嘛。
好产品都是磨出来的,也就是碎片时间你一直在琢磨,磨着磨着就出货了。