很多学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 仅凭拉里一人,又怎么称霸世界了呢?别急,听我慢慢道来 。
推荐阅读
- 几年了,作为一个码农终于把MySQL日记看懂了
- 中国象棋的具体特点解析
- 使用sqoop在MySQL、hadoop、hive间同步数据
- T-SQL | 逻辑查询处理内幕
- MYSQL使用初步流程介绍
- 解决 MySQL 8.0 一直拒绝 root 登录问题
- H5 实现二维码 / 条形码的识别与解析
- MySQL 临时表空间数据过多导致磁盘空间不足的问题排查
- 深入分析解读MySQL锁,解决幻读问题
- 怎么判断你的MySQL到底是读多还是写多