Mongodb / Couchdb而不是MySQL(从PHP切换到节点)

时间:2012-12-29 05:17:51

标签: php mysql node.js mongodb couchdb

我使用后端的PHP / MySQL / Solr和前端的Javascript / jQuery / Backbone完成了大部分的Web开发。

我已经编写了一些Node应用程序,但使用的是MySQL而不是Mongodb / Couchdb,许多Node教程/书籍都使用它。您是否会开始使用Mongo / Couch而不是MySQL,因为开发Node的大多数人都在使用它? MySQL似乎对我很好,我不清楚切换到Mongo / Couch的优势。

现在我正在启动一个网站,其中“前端”应用服务器是PHP / MySQL,数字运算服务器在Node中。我坚持使用PHP来提供“前置”的原因是因为我非常适合在我的PHP框架中开发。

选择节点的原因是因为将有大量同时执行任务的空闲/等待时间为秒。这必须是高度可扩展的。

将存储在数据库中的东西就像你将存储在MySQL表中的常用内容

2 个答案:

答案 0 :(得分:8)

您需要考虑的一些事项 -

  1. 扩展是我们迁移到mongoDB的最重要原因之一。碎片&复制MongoDB是一件轻而易举的事。因此,如果您的应用程序需要水平扩展,那么mongoDB就是您的选择。垂直扩展只能达到你很快就会遇到硬件限制......加上mysql的分片是一个真正的痛苦。
  2. 其次是数据库架构。在像我们这样的大多数创业公司,要求和功能变化非常迅速。因此,在一段时间内,基于mysql架构的DB可能比“良好实践”更具束缚性。在这种情况下,没有人关心“良好做法”。因此,如果您需要可扩展的无架构数据库,请考虑使用mongoDB。
  3. 所有这些都附带了一个免责声明,即mongoDB(和其他NoSql解决方案)是DB世界中闪亮的新玩具。它们并不像MySQL那样成熟。其中大多数包括mongo都不能很好地处理交易。因此,假设您正在构建一个金融交易系统,那么我会告诉您盲目地使用mysql作为其ACID兼容(阅读innodb引擎)。所以这些决定很多都取决于你想要完成的事情......
  4. 结论:NoSQL

    解释
      

    真实要指出的是,如果你被阻止   因为你不能选择数据库,所以制作超级棒的东西,   你做错了。如果您了解mysql,请使用它。优化时间   你真的需要。像k / v商店一样使用它,像rdbms一样使用它,   但为了上帝的缘故,打造你的杀手级应用!这些都不重要   大多数应用。 Facebook仍然使用MySQL,很多。维基百科使用MySQL,a   许多。 FriendFeed使用MySQL,很多。 NoSQL是一个很棒的工具,但它确实如此   当然不会成为你的竞争优势,但事实并非如此   让你的应用程序变得热门,最重要的是,你的用户不会给你一些差事   任何一个。

         

    我打算构建下一个应用程序是什么?可能是Postgres。我会用吗   NoSQL的?也许。我也可以使用Hadoop和Hive。我可能会保留   平面文件中的所有内容也许我会开始攻击磁悬浮。我会用的   什么是最适合这份工作的。如果我需要报告,我将不会使用   任何NoSQL。如果我需要缓存,我可能会使用Tokyo Tyrant。如果我   需要ACIDity,我不会使用NoSQL。如果我需要大量的计数器,我会用   Redis的。如果我需要交易,我会使用Postgres。如果我有一吨   单一类型的文件,我可能会使用Mongo。如果我需要写   每天10亿件物品,我可能会使用Voldemort。如果我需要满员   文本搜索,我可能会使用Solr。如果我需要全文搜索   易变数据,我可能会使用Sphinx。

    Too Funny & too relavent to NOT Post Again - MongoDb is Web Scale

    enter image description here

答案 1 :(得分:0)

除非您对数据进行严格规范化,使得多个表上的IO成为瓶颈,否则MySQL将正常工作。没有理由只是因为大多数人使用mongo和node.js ..

Mongodb / Couchdb / Orientdb最适合存储大量“文档”对象。如果您的数据适合RDBMS模式,则无需创建文档。从我所看到的,在填充数据字段时,创建对象的主要延迟就出现了。使用NoSQL DB,您可以一次性获取所有数据,而在标准化的RDBMS中,数据字段将从不同的源填充,从而导致轻微的延迟。当然,您可以使用缓存来改进。 如果您想在RDBMS中实现可伸缩性,可以查看NuoDB。

由于您的后端应用服务器需要可扩展性,您还可以查看vertx。根据基准测试,它似乎胜过节点,但它仍然是非常新的。