数据的战斗(0):关系代数神教永垂不朽
0
我日常里接触的程序员有两类人。一类人到处可见,大家讨论的东西,比如说面向对象的编程啊,Java好还是JavaScript是未来啊。一类是大家一般见不到,但是我讨论起来热血沸腾,热泪盈眶的。讨论的是Join的五种做法啊,Cardinality Estimation的最新进展啊,行和列为什么不同啊,主键是什么啊。前者是芸芸众生,后者是同志。
我常常问我自己,作为一个在关系数据库里面打酱油10余年的老油子,到底要怎么样去鉴定一个从事数据库相关工作的人,到底是真懂数据库,还是假懂数据库,到底是真的相信关系数据库,还是打入关系数据库内部的敌人。这实在是一件非常困难的事情。
我还常常问自己,为什么自从关系数据库诞生以后,就牢牢的占据了数据模型市场的标准。尽管几十年内,风里来雨里去的,无数模型风起云涌,想取代数据库的关系模型,但是这些陆陆续续的都死了。有的留下了一些肢体,有的只能从故纸堆里找了。那么,这个关系代数神教是不是在未来依旧会屹立不倒呢?
于是,我在公众号上挖了一个坑。但是其实我也不知道自己会往这个坑里填一些什么,什么时候填完。但是,我想,这个坑要讨论的问题,对某些人可能会更加有兴趣,对另外一些人,会读不太懂。我有可能会信马由缰,乱写一气,有可能有宗教狂信徒的一面,也有可能非常的理性。其实我也不知道,最后写出来的是什么。
1
你怎么看这个世界,这个世界就怎么展示给你。
这个世界上,最重要的东西莫过于世界观和方法论。前者决定了我们怎么看这个世界,后者决定了我们怎么样去实践我们眼中的那个世界。
从这一点来讲, 我们应该感谢古希腊的那些哲学家们和科学家们。因为他们教导我们,要去看世界。现存的很多宗教,哲学,乃至科学,其实都是某些世界观方法论作祟。
物理学家爱因斯坦有一个非常著名的观点:上帝不掷骰子。这用来表达他对量子力学的反对。这个观点传达了一个世界观:世界是有规律的,规律是普适的,通过规律可以推算出古今中外所有的变化。这种决定论的世界观,代表了自牛顿以来很大一部分的物理学家对世界的看法。当然,量子力学并不认同决定论。
然而在我看来,很多时候,所谓的世界观,其实你怎么看这个世界,这个世界就怎么展示给你。对于计算机这个著名的伪科学来说,计算机科学里面的种种世界观,更是具备了这样的特点。
2
今天我们的数据库,统一叫做关系数据库。它们叫关系数据库,因为它们基于了一套叫做关系代数的数据建模的理论。这套关系代数,定义了一种世界观。而基于这个世界观构建的各种各样的理论,实现,乃至我们天天用的产品,则是这个世界观展现的方法论。
但是和物理学上的世界观不同,关系代数的世界观是人拍脑袋想的。人既然能拍脑袋想出关系代数来,肯定也能拍脑袋想出很多其他类似的世界观来。只不过关系代数活下来了,其他的死掉了,仅此而已。
关系代数的世界观,非常的简单。这世界上的数据,是一张一张的代表某种关系的表。而一张表无非就是行和列。在这个由若干张表的世界里,一个表里面的某些列和另外一个表里面的某些列可能有一些关联。
而关系代数对数据的操作,都是一张或者若干张表进去,一张表出来的套路。常见的操作就是select/project/join/aggregate,etc. ,可谓非常的简单。大概每个上过大学本科数据库课的人都学过这些。
3
然而,很多时候,一个人到底是不是关系数据库的坚定簇拥,其实并不体现在这个人是不是知道这些东西。也不体现在这个人会不会用这套世界观下面诞生的某些工具。
比如说SQL这个东西,会写的人很多。但是会写SQL知其然不知其所以然的人更多。这些人,遇到稍微复杂一点的SQL就完全不知道怎么办了。之所以会这样,本质上来讲,是对关系代数神教的教义关系代数的理解不够深刻。
那么什么样的人才是关系数据库里面的人呢?什么时候一个人看这个世界的数据,处处皆关系,数据的操作,就是关系和关系之间用那几个简单的操作符倒腾的时候,那就差不多了。
有人说我在说疯话,其实不是。要想在关系数据库这个领域做出一点有意义的事情来,如果连看世界的数据,处处皆关系的层次都到不了的话,那么估计你也没办法用关系数据库的操作符去做数据的操作。而你连这一点都做不到的话,那么基于关系代数的关系数据库的开发上的很多东西你最多一知半解。这就是做数据库却还没有入关系神教的区别。
关系代数这套世界观能流行开来,可能有很多的原因。但是我觉得原因之一是我们人类是生活在三维世界的动物,除去智商高的离谱的outlier以外,一般人也就只能理解二维世界了。而关系代数恰恰什么东西都只有两维:行和列。所以,我这种普通智商的人,就特别容易被关系代数神教洗脑,不仅仅信了,而且信的非常的坚定坚决狂热。
4
中国数据库的发展,也算得上是曲折。经历了这么多年,终于有点起色了。无论是阿里巴巴的OceanBase,X-DB,PolarDB还是华为的高斯系统,还有其他大大小小的数据库产品。算得上是雨后春笋,都冒出来了。
但是有一个现象非常的有意思。就是在中国做数据库的人里面,真的能做查询优化的人非常的少。底层存储,执行,乃至做事务处理的人都不少。这是为什么?
我想我们其实可以这样理解。事务处理这东西,固然是个大杀器,但是其实不是关系代数的根本。数据的存储执行这些东西,说白了,很多时候需要担心的只是一个操作符要怎么做的问题。这方面并不需要太高深的关系代数的理解。等到了查询优化了,那就是关系代数的世界了。什么和什么等价,为什么应该这样做不应该那样做。所谓牵一发动全身大概就是这个意思。
所以,我们必须说,依托开源社区,中国的数据库事业蓬勃发展了。这是不争的事实。但是对于关系代数这个数据库的根本的世界观,到底有多少从业人员深刻理解了,恐怕和实际从事数据库开发的人并不成比例。
信关系代数,入关系代数神教,拿着关系代数的世界观去看世界,是区分一个数据库从业人员是不是入了关系代数神教的重要标志。关系代数神教永垂不朽,关系数据库就永垂不朽。下一回,我们去讲讲敌人的故事。
关系代数神教你入了吗?
这篇文章就讲到这里,欢迎加知识星球,欢迎提问咨询。如果喜欢这篇文章,请多转发,转载,打赏,点赞。
打赏专用二维码
相关阅读:
飞总聊IT
IT八卦,大数据风云,职场风波
长按二维码订阅
合作垂询:feizongitworld@gmail.com