【问题标题】:Using MySQL and MongoDB together一起使用 MySQL 和 MongoDB
【发布时间】:2014-10-19 18:01:18
【问题描述】:

我以前从未使用过 NoSQL,一般我写的应用程序都需要关系。但是,我遇到了一件我不知道该怎么做的事情。到目前为止,我只是在设计数据库。目前,我的主要逻辑在 MySQL 数据库中。我有将通过 CDN 托管的静态内容。但是,我有动态内容会更新,但很少更新,但几乎会在每次请求时阅读 - 例如电话号码、电子邮件地址、地址、附加信息。它们不会用于搜索,但是这些数据是非结构化的。一个用户可以有多个电子邮件地址、电话号码和地址;并且它们将需要多个表。因此,在这种情况下使用关系数据库无法满足我的需求(我不想为此创建实体-属性-值表),并且因为我知道它不会影响逻辑 - 它仅用作“元数据”我想将它们保存为 JSON 格式。在 Google 搜索了一段时间后,我发现 MongoDB 以 JSON 格式存储“文档”,这听起来像是完美的解决方案。但是,我对此有一个问题。如何将这些数据库连接在一起?我是否需要在创建/更新时为文档添加 user_id 或 organization_id“列”/字段并执行“选择”查询(MongoDB 中的等效项)来接收元数据?或者有什么不同的方法?

【问题讨论】:

    标签: mysql mongodb database-design database


    【解决方案1】:

    我将在这里提出我的意见。您在这里尝试做的事情称为“多语言持久性”。如果您引入 mongo,您将拥有 2 种用于存储数据的架构,它们在强度、api、设计等方面各不相同,而且这是有代价的。

    Mongo DB 是一个很棒的产品,我自己使用它并取得了巨大的成功,但您必须了解它并没有提供您期望从 MySQL 等 RDBMS 获得的所有功能。例如,它完全没有交易。 此外,如果您同时存储在 MySQL 和 Mongo 中,则您必须自己注意数据完整性(如果作为逻辑事务的一部分 mysql 事务成功,但 mongo 无法存储数据,会发生什么情况),没有回滚...... 我相信你明白我的意思。

    是的,mongo 确实允许通过各种 JSON 参数进行查询,实际上它具有整个查询语言的特性,它在某种程度上类似于 SQL,但它并不是真正的“关系”查询引擎,因为 mongo 不是关系数据库,因此,例如,您没有 JOIN。但是您自己说过您不会通过这些字段进行搜索,所以我有点不明白使用 mongo 会有什么好处。也许这只是关于术语,但我对这种说法有点困惑。

    mongo 真正闪耀的地方是当您拥有大量数据时(毕竟它是一个大数据产品),然后您拥有副本集和分片等有趣的东西,但问题是您是否真的需要它?你真的有“大数据”——要存储大量的对象吗?

    作为替代方案,我认为您可以使用文本列“按原样”存储 JSON。我的意思是,您可能有一列存储 JSON。 您甚至有时将“JSON”类型作为数据库中的本机类型,我不确定 MySQL 是否支持它。 在这种情况下,您甚至可以对这些 json 进行一些操作(如追加、部分更新等)。

    当然选择权在你,我的意思是你应该考虑使用 2 个持久化引擎是否有更多好处,还是会让你的项目更复杂。

    希望对你有帮助

    【讨论】:

    • 我想使用 mongo 而不是添加元数据字段,因为长/中文本是为了消除数据库中元数据的热量,并且编辑字段会更简单,因为我只会更改部分带有 mongo 的 JSON 文件,而 mysql 行中有长文本,我需要更新整个数据。此外,这最终也会使加载速度更快,因为相反,当我公开数据时,我需要将 JSON 转换为数组,然后附加数据并将数据转换回 JSON。有很多细微差别可以提高我的表现......
    猜你喜欢
    • 2018-07-21
    • 2014-10-21
    • 1970-01-01
    • 2015-11-07
    • 2011-06-19
    • 1970-01-01
    • 2014-07-28
    • 2012-06-19
    • 1970-01-01
    相关资源
    最近更新 更多