【问题标题】:Is MongoDB + Socket.io better than MySQL + Socket.io for a real time app?对于实时应用程序,MongoDB + Socket.io 是否比 MySQL + Socket.io 更好?
【发布时间】:2011-09-23 01:58:40
【问题描述】:

我正在构建一个实时应用程序,并且想知道是否应该费心从 MySQL 迁移到 MongoDB。我的应用程序发生了大量的写入,尽管读取的情况仍然更高。我目前在客户端-服务器端使用 XHR,但也几乎完成了向 Socket.io 的迁移。

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

更新我目前正在通过更快的应用来定义“更好”,如果这有任何意义的话。我“认为”,我可以在没有 sql 的情况下生活。目前使用 0 JOIN 等。但我想看看那里是否有人有从 MySQL 迁移到 MongoDB 的“通用”实时应用程序的经验。

谢谢。

【问题讨论】:

    标签: php mysql mongodb real-time


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 谢谢你。我目前正在通过更快的应用程序定义“更好”,如果这有任何意义的话。我“认为”,我可以在没有 sql 的情况下生活。目前使用 0 JOIN 等。但我想看看是否有人有从 MySQL 迁移到 MongoDB 的“通用”实时应用程序的经验。
    • 我怀疑“更快”是否有一个笼统的答案。您应该对两者进行原型设计和基准测试才能真正了解。
    【解决方案2】:

    添加这个可能有点晚,但我有一些实时分析应用程序从 mySQL 迁移到 mongodb 的经验。根据我的经验,mySQL 的速度要快得多且响应迅速,因为我的应用程序写得太重了。通过使用 innodb,我能够获得行级锁,而当我使用 mongodb 时,我必须处理全局锁。不确定他们是否已经解决了“全局”锁定问题。

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

    【讨论】:

      【解决方案3】:

      MongoDB 不是关系数据库管理系统。不先指定数据就说 MongoDB 比任何 RDBMS 都好,这表明缺乏知识。

      MongoDB 中不存在键约束。没有参照完整性检查。我们使用 MongoDB 进行 Blob 存储,并将 MongoDB 键存储在 SQL Server 中。这很好,但我永远不会用 MongoDB 彻底替换标准化 SQL Server 或 MySQL RDBMS 实例。

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

      在您从 JSON 添加/删除属性或根据不断变化的业务规则添加/删除参考数据时,想想随着时间的推移会发生什么。想想与 RDBMS 实例相比,MongoDB 中的转换会是什么样子。

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

      【讨论】:

        猜你喜欢
        • 2011-09-23
        • 2012-01-21
        • 2020-07-20
        • 1970-01-01
        • 2013-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多