对于实时应用,MongoDB + Socket.io比MySQL + Socket.io更好吗?

时间:2011-06-26 18:54:41

标签: php mysql mongodb real-time

我正在构建一个实时应用程序&我想知道我是否应该费心从MySQL迁移到MongoDB。我的应用程序发生了大量的写入,尽管读取案例仍然更高。我目前在客户端 - 服务器端使用XHR,但我也差不多要转移到Socket.io了。

我的研究确实让我想要转移到MongoDB + Socket.io,但想从社区中获得一些想法。

更新 我目前正在通过更快的应用定义“更好”,如果这有任何意义的话。我有点能够没有sql,我想'。目前正在使用0 JOIN等。但我试图看看是否有任何人有从MySQL到MongoDB的任何经验,以获得“通用”实时应用程序。

谢谢。

3 个答案:

答案 0 :(得分:5)

这取决于你如何定义“更好”。

如果关系模型和集合对您来说更重要,那么MySQL比MongoDB“更好”。

如果您可以放弃ACID,并且您的数据更基于文档,那么MongoDB比MySQL更“好”。

在任何情况下都很难回答,但尤其是在不了解您的用例的情况下更是如此。

答案 1 :(得分:3)

也许迟到了,但我已经有了一些从mySQL到mongodb的实时分析应用程序的经验。根据我的经验,mySQL速度更快,响应更快,因为我的应用程序非常糟糕。通过使用innodb,我能够获得行级锁定,而当我使用mongodb时,我不得不处理全局锁定。不确定他们是否已经解决了“全局”锁定问题。

我的最终解决方案是使用innodb和mySQL的Percona版本。

答案 2 :(得分:0)

MongoDB不是关系数据库管理系统。如果不先指定数据表明确实缺乏知识,那么说MongoDB比任何RDBMS都要好。

键约束在MongoDB中不存在。没有参照完整性检查。我们使用MongoDB进行Blob存储,并将MongoDB密钥存储在SQL Server中。这样做很棒,但我绝不会用MongoDB完全取代标准化的SQL Server或MySQL RDBMS实例。

也许很多人认为MongoDB更好,因为他们不想担心优化索引和执行计划……但这是以数据完整性为代价的。这是一个无模式的结构,这意味着不存在一致性。它会吃掉您喂的任何东西,这可能很危险。

考虑当您从JSON添加/删除属性或根据不断变化的业务规则添加/删除参考数据时,会发生什么情况。考虑一下与RDBMS实例相比,MongoDB中的转换情况如何。

我知道我对MongoDB听起来很批评,但我不是故意的。我们使用它并且它可以很好地满足我们的需求,但是它不能替代RDBMS。更多补充。