前段时间国内外对NoSQL的讨论非常热烈,Digg和Reddit使用Cassandra,Facebook经过一些变化后依然对NoSQL进行测评,NoSQL取代SQL的呼声高涨,因为互联网行业使用MySQL的概率非常高,加之Oracle收购的消息,一时间似乎MySQL将成为NoSQL数据库的牺牲品,一场轰轰烈烈的技术革命就要到来了。 几个月过去了,NoSQL并没有像大家所想象的那样席卷全球,很多人设想中的MySQL与NoSQL的战争也仅存于设想中,国内不要说使用了,测评NoSQL的机构也是寥寥,究其原因,笔者认为:MySQL与NoSQL是两种不通性质的技术,它们代表的是两种完全不通的技术思想,均有其适应的土壤,究竟孰优孰劣,取决于诸多因素,而它们是否适用的根本因素,是“人”与“物”的成本变化。 MySQL的优势在此不再赘述,其最大的特点是尽可能的压榨机器的性能,在上世纪末互联网泡沫破灭时,压缩成本的意识就已经深入每一个互联网公司的血液,MySQL顺应时代的需求,为幸存的互联网公司尽可能的节约着每一分资金,不知有多少互联网故事都有以下的开头“XX年,几个刚毕业的大学生用两台服务器创办了XXX”,那时,无论是在美国,还是在中国,硬件的成本相比人力资源,都是比较高的,特别是在中国,一台中等配置服务器的价格,几乎相当于一个技术新手一年甚至更多的薪水。虽然SQL型数据库在扩展的时候有诸多不便,业务重构、代码重写、压力测试、上线,意味着网站开发、运维人员无数个不眠之夜,但人力成本较之买服务器的成本来说,可能当时绝大部分互联网公司都会选择前者。 再看十几年后的今天,网站的数据量比过去更大,用户更多,应用更复杂,业务的变化更加快速,人力资源的成本不断上涨,即便是金融危机之后的美国,一个普通MySQL DBA的工资依然在十几万美元以上,至于高级开发,架构师的成本更是以数十万美元计,而硬件的成本却大大降低,NoSQL虽然在执行效率上远低于SQL型数据库,但其扩展的便利性导致不需要投入更多的人力来对系统和应用进行重构与改写,间接的降低了人员的成本,对于许多已经有成百上千台服务器和上百万用户的美国互联网公司来说,节约下的人力成本,足够买上百台服务器来弥补NoSQL效率上的缺陷,这样的好事,当然许多公司都是希望进行尝试的。 说到这里,也可以解释为什么在国内对NoSQL真正进行尝试的公司很少的原因了,毕竟我们的成本较之美国同行来说,还是比较低廉的,让NoSQL来节约的人力成本,可能还并不那么多,在NoSQL解决效率问题、我们“解决”成本问题之前,恐怕SQL型数据库,MySQL数据库,还会继续生存发展下去,甚至在国内被利用到更高的境界,橘生淮南则为橘,橘生淮北而为枳,同样是实现前端应用的目的,但成长的土壤不同罢了。 |