技术相关:银弹规则在技术选型时的运用
----王珏原创
银弹规则
现在从 Google查询“银弹”多半是指到了图灵大奖获得者布鲁克斯的“没有银弹”( 没有银弹- 维基百科),其意思可以理解为复杂的软件工程问题无法靠简单的答案来解决。
银弹的本意是指:古老相传,只有 银弹(silver bullet )才能杀死巫士,巨人,有魔力的动物,譬如狼人什么的。一般是指威力无穷或者 效率超高的武器/技术,或者 万灵药
那么银弹的引申含义就是:大约就是指在N多方案中,如果某一种方案如果具有足够优势。它就会使得其他方案失去存在的理由,我们就可以称这种具有足够优势的方案叫“银弹”。反之,如果某领域内有大量可供选择的方案,则说明此领域内不存在银弹。下面举例说明:
银弹规则在我们讨论或者思考问题的时候有什么用途呢?我认为主要有以下两点:
因此我非常赞同 asktom的 主人Tomas Kyte的看法:以数据库为核心来设计架构。这比以所谓的“数据库独立的应用服务器”为核心来设计架构要可靠的多,原因很简单,RDBMS比任何应用服务 器更像“银弹”。(其实Tomas Kyte作为Oracle的高级副总裁,当然是以Oracle为核心来设计架构。在我看来无论是DB2,Sybase,甚至是PostgreSQL都是可 行的方案)
总结:银弹的思考方式有两种:
1、根据现有的情况反推:当下是否存在多种“方案”,如果是则不存在银弹;如果否则这就是银弹。
2、如果没有备选方案可选:就请大家高度重视这个“银弹”,不仅仅要注意它在这个领域内的银弹位置,还要注意它在其他领域中的作用。
Link URL: http://blog.sina.com.cn/s/blog_592060b50100dzoa.html
----王珏原创
银弹规则
现在从 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博客 ” ,链接:http://blog.itpub.net/91771/viewspace-609555/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/91771/viewspace-609555/