技术相关:银弹规则在技术选型时的运用
----王珏原创
银弹规则
现在从
Google查询“银弹”多半是指到了图灵大奖获得者布鲁克斯的“没有银弹”(
没有银弹-
维基百科),其意思可以理解为复杂的软件工程问题无法靠简单的答案来解决。
银弹的本意是指:古老相传,只有
银弹(silver bullet
)才能杀死巫士,巨人,有魔力的动物,譬如狼人什么的。一般是指威力无穷或者
效率超高的武器/技术,或者
万灵药
那么银弹的引申含义就是:大约就是指在N多方案中,如果某一种方案如果具有足够优势。它就会使得其他方案失去存在的理由,我们就可以称这种具有足够优势的方案叫“银弹”。反之,如果某领域内有大量可供选择的方案,则说明此领域内不存在银弹。下面举例说明:
- 碗为什么是圆的?圆碗对于用筷子扒饭的中国人来说比其他形状的碗有足够的优势。圆碗相对于其他形状的碗就是银弹。
- 近视手术能不能做?去看看比尔盖茨是否带眼镜,就知道近视手术不是、也不应该随便做。
-
Oracle的自动段空间管理ASM和手动段空间管理,由于Oracle已经明确说明ASM是最好的,在创建表空间时候没有任何理由使用手动段空间管理);那么ASM相对于手动段空间管理来说就是银弹。
- J2EE是不是银弹呢?显然不是,因为有一大堆可能的替换方案,如Hibernate。
-
关系型数据库、网状数据库以及树状数据库里面存在银弹吗?显然自打关系型数据库面世以来,网状数据库和树状数据库就乖乖的退出了市场。
-
从市场也可以反映出这个问题:Oracle收购Bea(WebLogic的主人)说明了RDBMS强于中间件。Sybase就再不行,还能挺着。
银弹规则在我们讨论或者思考问题的时候有什么用途呢?我认为主要有以下两点:
- 向
“银弹”靠拢。举例:到底应该数据库独立,还是应用服务器独立?。我常常看到很多“架构师”在设计“数据库”独立的应用系统架构,比方说,整个软件架构在
中间件应用服务器JBoss上面,然后此JBoss可以连接多种RDBMS。比如为了所谓的通用性,客户可以任意选择
Sybase,Oracle,MySQL或者PostgreSQL等数据库(我几乎没有见过某个架构师设计所谓应用服务器独立的架构--这可不一定是好
事)。现在根据银弹规则的判定方法是:
-
-
数据库技术和应用服务器技术谁变化更频繁?根据银弹规则,变化越频繁,就越不可能是“银弹”。RDBMS技术差不多20-30年来在理论上就没啥变化,在实践上变化也不多。而应用服务器今天AOP,明天IoC,概念多到让你搞不懂。
- 对
于RDBMS来说Sybase,Oracle,DB2,MySQL,PostgreSQL谁跟具有压倒性优势?对于应用服务器来说WebLogic,
WebSphere, JBoss,
GlassFish谁更具有压倒性优势?我想相对于混乱的应用服务器市场来说,RDBMS市场相对要简单的多。优先选择RDBMS是明智的选择
-
对“非银弹”采取怀疑态度。有一种说法:如果有人给你介绍一种新技术,而你无法理解,你无需为此而烦恼,因为别人也看不懂,它也无法成为一项重要的技术。如果某项技术存在替换方案的则它就不是银弹,它不是银弹,你也不必对他迷信。
因此我非常赞同
asktom的 主人Tomas
Kyte的看法:以数据库为核心来设计架构。这比以所谓的“数据库独立的应用服务器”为核心来设计架构要可靠的多,原因很简单,RDBMS比任何应用服务
器更像“银弹”。(其实Tomas
Kyte作为Oracle的高级副总裁,当然是以Oracle为核心来设计架构。在我看来无论是DB2,Sybase,甚至是PostgreSQL都是可
行的方案)
总结:银弹的思考方式有两种:
1、根据现有的情况反推:当下是否存在多种“方案”,如果是则不存在银弹;如果否则这就是银弹。
2、如果没有备选方案可选:就请大家高度重视这个“银弹”,不仅仅要注意它在这个领域内的银弹位置,还要注意它在其他领域中的作用。
Link URL:
http://blog.sina.com.cn/s/blog_592060b50100dzoa.html
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/91771/viewspace-609555/
,如需转载,请注明出处,否则将追究法律责任。