【问题标题】:Using both Mongodb and Mysql in one project在一个项目中同时使用 Mongodb 和 Mysql
【发布时间】:2011-06-27 22:22:54
【问题描述】:

为了在我的项目中使用,我一直在努力有效地学习 Mongodb 一周。在我的项目中,我会存储大量的地理位置数据,我认为 Mongodb 是最适合存储这些信息的。另外,速度对我来说很重要,Mongodb的响应速度比Mysql快。

但是,我会在项目的某些部分使用一些连接,我不确定是否将用户的信息存储在 Mongodb 中。我听说在编写过程中 mongodb 可能会出现一些问题。我应该只使用带有集合的 mongodb(而不是加入)还是两者都使用?

【问题讨论】:

  • “牢度”?我认为好的语法会说“速度”。

标签: mysql mongodb geolocation


【解决方案1】:

在大多数情况下,如果项目不大,我建议为项目选择一个数据库。在非常大的项目(或一般的企业)中,I think 长期组织将使用

  • 用于高度事务性 OLTP 的 RDBMS
  • NoSQL
  • 一个数据仓库/BI 项目

但是对于范围更合理的事情,只需选择一个做用例核心的事情,然后将其用于所有事情。

IMO 将用户数据存储在 mongodb 中很好——您可以对单个 BSON 文档执行原子操作,因此像“原子地分配我这个用户名”这样的操作是可行的。使用重做日志 (--journal) (v1.8+)、复制、slavedelayed 复制,可以拥有相当高的数据安全性——与纸上的其他数据库产品一样高。反对安全的主要论据是产品是新的,而旧软件总是更安全。

如果您需要执行非常复杂的 ACID 事务(例如会计),请使用 RDBMS。

另外,如果您需要做大量报告,mysql 目前可能会更好,特别是如果数据集适合一台服务器。 SQL GROUP BY 语句非常强大。

【讨论】:

    【解决方案2】:

    您不会在 MongoDB 和 MySQL 之间进行联接。

    我不确定我是否同意您的所有陈述。相对速度是最适合您的用例的基准。

    你真正需要了解的是这两个数据库的相对优势和劣势是什么:

    • MySQL 支持关系模型、集合和 ACID; MongoDB 没有。
    • MongoDB 更适合解决可以放弃 ACID 和事务的基于文档的问题。

    这些应该是您选择的基础。

    【讨论】:

      【解决方案3】:

      MongoDB 有一些很好的特性来支持地理定位工作。然而,开箱即用不一定比 MySQL 快。运行的许多基准测试表明 MySQL 在许多情况下都优于 MongoDB(例如 http://mysqlha.blogspot.com/2010/09/mysql-versus-mongodb-yet-another-silly.html)。

      话虽如此,我还没有遇到 MongoDB 在写入过程中丢失信息的问题。我建议如果你想使用 MongoDB,你也可以为用户使用 if,这样可以避免跨数据库“关联”,然后只在必要时将用户迁移到 MySQL。

      【讨论】:

      • 经过优化的 MySQL 在大多数简单的 CRUD 上的性能会优于 MongoDB?这是一个大胆的声明,无需了解插入类型、索引、查询、数据集大小、机器上的 RAM 量等。只有基准测试才能以某种方式证明这样的声明。
      猜你喜欢
      • 1970-01-01
      • 2015-03-21
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多