首页 > 代码库 > 源代码VS业务的悟道——知行合一

源代码VS业务的悟道——知行合一

24岁以后博文更新逐渐减少了,因为守着“每篇文章都是思索所得”的原则,希望能对读者有所启发而坚持不发一篇垃圾文章。

24岁以前,一直信仰源代码实现,觉得所有的核心技术,都在于源代码实现(尤其是C源代码)。

直到24岁,学习之余,偶有所悟——技术的核心在于源代码,而项目的核心却并不在于具体实现,而在于业务的解决方案!

那么,到底是源代码实现更重要一些呢?还是业务解决方案更重要一些呢?

我不能给出大家一个标准答案。我相信,任何有点深度的人也不会主动给出一个答案。

这个问题的核心其实就是理论和实践哪个更重要一些?

几千年来争论不休。不过,在明朝有一位伟大的哲学家王守仁给出了一个较为完美的答案——知行合一。

也就是说,理论很重要,实践也很重要,两个东西缺一不可。

好的,那我们简单说下业务的解决方案的重要性。

当我们面对一个典型的互联网web项目,我们首先会考虑什么呢?

如果项目细节要求不高(并发量1000以下),首先考虑的是怎么以最低的成本完成项目——LAMP的组合。我们会考虑到web项目的功能,页面布局。等功能、页面布局设置好了,就可以设计数据库表(mysql)。一旦mysql的表设计好了,就可以动手画web前台页面和写效果,web页面调试好了就可以写PHP的逻辑代码把系统贯通起来。

问:在做这个项目的时候,我们会去思考mysql的源代码怎么实现的吗?

答:不会。我相信大部分同学都不会考虑这个问题。因为这个项目基本上只要能搞出来就行了,至于搞得好不好,或许根本没人在意。

问:如果系统的访问量大了10倍,你会怎么处理呢?

答:SQL优化、主从复制提升读能力。我相信大部分同学会考虑做SQL优化、主从复制。

问:那么,我接着提问了。如果系统的访问量大了100倍呢?

问:当你发现SQL本来就很简单,改加的索引都加了,执行计划完美,该做的复制也做了,但是master就是压力非常大,大到做分裂都还是顶不住,你会怎么想呢?

答:用NoSQL软件就行了。

问:如何选择合适的NoSQL软件呢?作为项目负责人,你怎么知道你选择的NoSQL软件适合用来解决你所面临的业务问题呢?如果选择不合适,后期需要把数据迁移到别的合适的nosql数据库上去,相应的成本和风险,谁来承担?

答:用业界最广泛的解决方案和咨询类似业务的朋友就行了,何必那么认真。

我说:如果你想混吃混喝、不承担项目的责任,那么,这种方法是可行的;如果你想承担项目的责任,这种做法肯定是要悲剧的;如果自己都搞不清楚,别人就更高不清楚,出了问题,你肯定会被拉出来背黑锅。

问:如何才能做到为合适的业务选择合适的nosql呢?

答:只有对核心技术把握到一定程度(数据结构、算法、操作系统、server软件源代码实现),选择nosql才能做到胸有成竹,当一种全新的nosql出来的时候才能做出优劣评判;反之,永远只能成为一个follower,而不能成为引领者。

问:很多人都说只要能解决问题就行了,不必深入学习。

答:这种人一般有两个特点:A,没有深入学习的能力,所以觉得不必深入学习。B,没有深入学习的能力,出了问题只能百度或者跪求答案,所以,觉得不必深入学习。

问:解决问题真的需要掌握源代码吗?

答:解决问题不必要掌握源代码,但是,如果学习停留在表面,那么,一旦有了技术革新,就会被行业淘汰被问题解决。

问:源代码学习的目标是什么呢?

答:如果不是立志成为一个数据库或者操作系统内核研发者,那么,只要能从源代码层面判断出作者的设计理念和核心产品的特性就足够了。这是一种思维、爱好、兴趣,而不是工作的指标。

问:学习Oracle的internal是在研究核心技术吗?

答:如果是Oracle内核研发者,有参与研发内核源代码的权利,那么研究Oracle internal是核心技术;如果是市面上的普通dba或者用户研究Oracle internal就不是研究核心技术了。

问:那么,为什么那么多人要研究Oracle internal呢?

答:因为他们被某些人造牛忽悠了,觉得研究Oracle internal很牛,大部分人都想牛,所以都去研究Oracle internal。

问:为什么你觉得市面上普通dba研究Oracle internal不是研究核心技术呢?

答:市面上研究Oracle internal的技术无非来源于流传出来的DSI、White paper,自己dump等等,认为这些就是internal,其实这些都是带了安全套的的internal,写文档的人一般都不是源代码作者,源代码都有bug何况一些文档编写者,靠文档来找自信是缘木求鱼。真的想玩数据库的internal,postgersql、mysql等都是开源了的,大可以满足自己的研究欲望。退一万步讲,连开源的mysql和postgresql都没研究懂,去妄自猜测不开源的Oracle,不是自慰吗?



源代码VS业务的悟道——知行合一