小时候我们都在纠结一个事情:鸡是怎么来的?生来就是鸡,还是鸡蛋孵出来的 。有小朋友说是其他动物变异来的,也有小朋友说是某种蛋遇到合适的环境和温度,就出来了现在像鸡一样的动物 。
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, 能有出息嘛!那小博和唐纳尔德大叔的故事,你又没仔细看咯 。你眼前的一切都是你生来都有的嘛,明显你的苹果手机就不是嘛 。
好产品都是磨出来的,也就是碎片时间你一直在琢磨,磨着磨着就出货了 。
【深度解析SQL和oracle等数据库的历史,说点不一样的给你】
推荐阅读
- 几年了,作为一个码农终于把MySQL日记看懂了
- 中国象棋的具体特点解析
- 使用sqoop在MySQL、hadoop、hive间同步数据
- T-SQL | 逻辑查询处理内幕
- MYSQL使用初步流程介绍
- 解决 MySQL 8.0 一直拒绝 root 登录问题
- H5 实现二维码 / 条形码的识别与解析
- MySQL 临时表空间数据过多导致磁盘空间不足的问题排查
- 深入分析解读MySQL锁,解决幻读问题
- 怎么判断你的MySQL到底是读多还是写多