关系这个词无论是对数据库圈子里的人,还是对我们中国人,都有特殊的意思。我记得本科刚上数据库的时候,老师特地解释说我们讲的是关系数据库,底下很多人一脸懵逼,不知道此关系和彼关系到底是什么关系。
讲Oracle的成长发展史,就离不开讲关系数据库的成长发展史。很凑巧,今年是2019年,也是关系数据库诞生的50周年。关系数据库诞生于1970年。所以今天我们先回到50年前,那个时候Larry Elison才20多岁,后世靠数据库称霸全球的Oracle帝国还未诞生。
1970年,地球上最牛逼的计算机公司叫IBM:International Business Machine。那个时候的IBM不是上世纪末的I Blame Microsoft,更不是现在的蓝色小药丸(要完),那是切切实实的蓝色巨人。IBM称霸的年代里,不仅仅人才鼎盛,而且抖一抖整个计算机界都要地震一圈。这种牛逼程度,后世微软谷歌亚马逊鼎盛时期,是无法比拟的。
1970年,在加州圣何塞硅谷实验室里工作的Edgar Frank Codd公开发表了一篇论文:A Relational Model of Data for Large Shared Data Banks。翻译成中文就是一个为大容量共享数据银行设计的数据的关系模型。
这篇论文是基于1969年他在IBM的内部工作报告的基础上修改的。所以关系模型到底诞生于哪一年,是一个有争论的事情。很多人通常认为1970年是它诞生的时候。
但是数据库圈子里的老头子们,则把1969年作为关系模型的诞生时间。这就是为什么数据库顶级会议SIGMOD每逢9的时候,都要纪念一下关系模型的诞生。上一次是2009年在美国罗德岛的SIGMOD,我凑巧在场。
如果说计算机的祖师爷是图灵和冯诺依曼,我们每个程序员都需要拜一拜的话。那么1970年的时候,这个在IBM加州圣何塞硅谷实验室里工作的数学家兼计算机科学家 Edgar Frank Codd,就是我这样的做数据库产业的祖师爷了。
每个做数据库的人,如果没有拜过这个祖师爷的话,多少显得有点不尊敬。当然我相信很多人没拜过这个祖师爷。特别是国内改开源数据库代码出身的那批程序员,可能没有我这种国外读了一个数据库PhD这样的人的那种宗教一般的信仰。无论如何,我们需要给大家科普一下关系数据库教的祖师爷的样子:
Edgar Frank Codd,英格兰人,早年学习数学和化学。二战时候是飞行员。二战后来到美国给IBM服务。后来因为美国麦卡锡风潮辗转去了加拿大。之后又回美国IBM工作,顺便去密西根大学拿了一个PhD。Edgar Codd的PhD做的是冯诺依曼架构计算模型的扩展,非常的理论。
1970年他发表了这篇论文,提出了数据的关系模型,也就是著名的关系代数。从此以后,他就开启了关系数据库长达50年至今屹立不倒的整个产业。他1981年获得计算机界最高奖图灵奖,2003年年去世。2004年为了纪念祖师爷,SIGMOD把SIGMOD的最高奖改名为SIGMOD Edgar F. Codd Innovations Award。
数据库的关系模型,也就是关系代数,是本科数据库教材里必然要讲的东西。SELECT, PROJECT, JOIN这些基本操作,每个从事计算机工作的人多少都耳熟能详。作为传记类的文章,我也就不一一展开介绍了。
Edgar Codd最初提出关系模型的时候,他以为好日子很快就要到来了。但是IBM并不是很愿意去实现这个模型。一直到类似Oracle这样的公司都纷纷上战场了,IBM才被迫进入战场。
IBM不愿意做的原因也很简单。数据库既然有关系模型,在关系模型之前,也会有其他的模型。1966年IBM就开启了一个数据库项目:IBM Information Management System。看得出来当时的人们都很淳朴,不知道怎么取名字。
这个简称为IMS的系统1968年发行了第一个版本。大企业蜂拥而至。卖的不是一般的好。而且奇迹一般的,到今天还有很多的客户跑在IMS上,这个古董堪称生命力顽强。
IMS用的是一个层次模型。和关系模型里面完全摊平的表结构不一样,层次模型里面的数据有层次的概念。某种程度上来说,你可以理解为比较像类似今天MongoDB这样的文档数据库,或者某种形态的图数据库。
事实上即使到了关系数据库已经占据统治地位的今天,到底数据库的关系模型好,还是层次模型好,一直都是一个有争议的问题。层次模型的数据库也以半结构化数据的形式某种程度的在复活。如果你要问我的话,我也只能说各有千秋。
但是关系数据库两个明显的优点:易于让普通人理解,相对容易实现。所以关系数据库1970年出来以后不久,这架马车就开起来了,再也回不了头了。即使IBM自己磨磨蹭蹭不想上车,也无济于事。
Edgar Codd一生致力于维护关系数据库的纯洁性,为此还提出了关系数据库必须具备的12条这样的规则,由此还和IBM产生了冲突。但是谁也说不清楚,这种Edgar Codd式的纯洁性,对于商业化的关系数据库到底有什么意义。
无论如何,祖师爷赏饭吃,对于在关系代数熏陶下长大的我,一定是旗帜鲜明的高喊关系数据库永垂不朽,关系代数永垂不朽的。