最近有twitter、digg和reddit等多家web 2.0企业宣布从mysql转而使用非关系型数据库(nosql)提供可伸缩的数据存储解决方案,引起了开发者对nosql的强烈关注。
nosql真的会完全取代关系型数据库吗?
对此,前google工程师,milo(本地商店搜索引擎)创始人ted dziuba最近发表标题惊人的博客“i can't wait for nosql to die”,对nosql的适用范围进行了分析。他认为,nosql也会带来一连串的新问题,并不会成为主流,无法取代关系型数据库。
他的理由是:cassandra等nosql数据库在使用上并不方便,比如,修改column family定义时就需要重启。而且nosql更适合google那样的规模,而一般的互联网公司都不是google,早早地去考虑google那样的规模的可扩展性,纯粹是浪费时间,存在巨大的商业风险。
他还透露,即使在google,adwords这样的关键产品也是基于mysql实现的。
他在文中最后表示,nosql当然死不了,但是它最终会被边缘化,就像rails被nosql边缘化一样。而dba同学们也用不着担惊受怕,因为有钱招dba的公司的决策者们都懂实际的生意是怎么回事儿。
dziuba的文章因为言辞激烈,在社区里引起了强烈反应。
sql数据库阵营赞同者大有人在。craigslist工程师、著名的mysql专家jeremy zawodny表示,在读此文的时候,不时会心一笑。他说,nosql运动只是软件不断进化进程中的正常现象。关系型数据库也会继续发展,mysql社区不断推出的xtradb或innodb插件, pbxt, drizzle都是证据。各种技术竞争的结果是,我们获得了更多解决问题的选择。
drizzle项目开发者eric day也表示,nosql有很多值得学习的,但是目前大部分实际项目的最佳选择还是关系型数据库。
nosql阵营当然不会坐视不理,cassandra项目组的eric evans表示,dziuba提到cassandra修改column family定义的问题其实很容易解决。而且,nosql并不是要取代mysql,事实上twitter仍然在用mysql。如果关系型数据库能够承担负荷,那就用好了;如果不行,请考虑nosql。
而德国知名博客code monkeyism则嘲笑dziuba看起来并没有用mysql做过真实项目,因为mysql如果没有memcache,基本上无法应付网站项目。他认为,nosql将使sql数据库边缘化,而且一个重要理由恰恰是可以节省dba的开销。
digg的前任首席架构师现在也在创业的joe stump说,自己现在的创业项目就是用nosql,而且列举了一系列问题挑战sql阵营。他表示,无论从可伸缩性、速度、成本各个方面来看,nosql都有sql数据库无法企及的优势。
你的项目开始用nosql方案了吗?你对这一争论的意见?欢迎反馈。
