繁体   English   中英

如何一起使用MySQL和MongoDb

[英]How to Use MySQL and MongoDb together

我打算将MongoDB用于我的评论功能。 但是所有用户的数据都在MySQL中。 这意味着,我试图将注释存储在MongoDB中,并将其他修复信息存储在MySQL中。 但是,当我开始考虑从MongoDB检索注释时,遇到了一个问题,即如何将MongoDB数据与MySQL相关联。 例如,用户名profile_url存储在MySQL中,注释与user_id存储在MongoDB中

所以我该如何检索数据

| name  | profile_url  | comments              |
|-------|--------------|-----------------------|
| xyz   | image.jpg    | That was nice comment |
| abc   | image.jpg    | I agree               |

有可能这样做吗? 还是还有其他方法?

我正在使用带有jenssegers/laravel-mongodb软件包的Laravel 5。

您不能同时检索用户和评论数据。 你必须:

  • 获取user ID
  • 使用user ID作为参数查询mongodb并获取所需的注释

如果需要更多用户的汇总数据,则可以考虑汇总查询:

  • 从mysql获取所有用户的数据
  • 查询mongodb询问指定用户的所有评论
  • 在PHP中将用户数据与注释数据合并

最后:您确定将注释存储在mongodb中是您所用的正确解决方案吗? 您是否打算将大量注释存储到外部数据库中?

如果选择这种方式,您也可以考虑将用户数据存储在mongodb中。 但是在执行此操作之前,请仔细计划是否适合您(例如,考虑您需要执行的查询,并检查以这种方式存储的数据是否适合您的查询)

MongoDB和MySQL是完全独立的应用程序。 除了通过您的应用程序,他们无法相互通信。 这意味着,如果一个请求需要来自两个源的数据,则需要分别查询两个源。

但是您可以做的是将冗余数据保留在两个数据库中。 当您在MongoDB中存储评论时,还将相关的用户信息放入Comment文档中。 在关系数据库中,这样的信息重复是致命的罪行,但在MongoDB中是常见的做法。 直到最近(3.2),MongoDB才对JOIN一直不提供任何支持,即使到现在,它仍然非常初级。 这意味着您通常应避免将满足一项请求所需的数据存储在多个集合中,即使这意味着您有冗余。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM