Php 如何同时使用MySQL和MongoDb

Php 如何同时使用MySQL和MongoDb,php,mysql,mongodb,laravel,Php,Mysql,Mongodb,Laravel,我计划将MongoDB用于我的评论功能。但是所有用户的数据都在MySQL中。这意味着,我试图在MongoDB中存储注释,并在MySQL中存储其他修复信息。但是,当我开始考虑从MongoDB检索评论时,我遇到了一个问题:如何将MongoDB数据与MySQL关联起来。 例如 用户名、配置文件和url存储在MySQL中 注释以用户id存储在MongoDB中 那么,我如何检索像这样的数据呢 | name | profile_url | comments | |-------

我计划将MongoDB用于我的评论功能。但是所有用户的数据都在MySQL中。这意味着,我试图在MongoDB中存储注释,并在MySQL中存储其他修复信息。但是,当我开始考虑从MongoDB检索评论时,我遇到了一个问题:如何将MongoDB数据与MySQL关联起来。 例如 用户名、配置文件和url存储在MySQL中 注释以用户id存储在MongoDB中

那么,我如何检索像这样的数据呢

| name  | profile_url  | comments              |
|-------|--------------|-----------------------|
| xyz   | image.jpg    | That was nice comment |
| abc   | image.jpg    | I agree               |
有可能吗?或者还有别的办法吗


我将Laravel 5与Jenssers/Laravel mongodb软件包一起使用。

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

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

如果需要更多用户的聚合数据,可以考虑聚合查询:

从mysql获取所有用户的数据 查询mongodb,询问指定用户的所有评论 在PHP中将用户数据与注释数据合并 最后:您确定将注释存储在mongodb中是您的最佳解决方案吗?您是否计划在需要将大量注释存储在外部数据库中的时候使用这些注释


如果您选择这种方式,您可以考虑将用户数据存储在MunGDB中。但是在这样做之前,仔细计划如果它是对你的正确选择,即考虑你需要做的查询,并且检查以这种方式存储的数据是否适合你的查询

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

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

如果需要更多用户的聚合数据,可以考虑聚合查询:

从mysql获取所有用户的数据 查询mongodb,询问指定用户的所有评论 在PHP中将用户数据与注释数据合并 最后:您确定将注释存储在mongodb中是您的最佳解决方案吗?您是否计划在需要将大量注释存储在外部数据库中的时候使用这些注释


如果您选择这种方式,您可以考虑将用户数据存储在MunGDB中。但是在这样做之前,仔细计划如果它是对你的正确选择,即考虑你需要做的查询,并且检查以这种方式存储的数据是否适合你的查询

< P> MangGDB和MySQL是完全分开的应用程序。除非通过应用程序,否则它们无法相互通信。这意味着如果一个请求需要来自两个源的数据,它需要分别查询这两个源


但您可以做的是在两个数据库中保留冗余数据。在MongoDB中存储评论时,还要将相关用户信息放入评论文档中。这种信息复制在关系数据库中是一种致命的罪恶,但在MongoDB中却是常见的做法。直到最近,3.2 MongoDB还不支持任何形式的连接,即使是现在,它仍然相当初级。这意味着您通常应该避免将满足请求所需的数据存储在多个集合中,即使这意味着您有冗余。

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


但您可以做的是在两个数据库中保留冗余数据。在MongoDB中存储评论时,还要将相关用户信息放入评论文档中。这种信息复制在关系数据库中是一种致命的罪恶,但在MongoDB中却是常见的做法。直到最近,3.2 MongoDB还不支持任何形式的连接,即使是现在,它仍然相当初级。这意味着您通常应该避免将满足请求所需的数据存储在多个集合中,即使这意味着您有冗余。

谢谢@Farkie,但还有其他方法吗?就像首先从mongodb检索数据,然后使用用户id从mysql获取数据一样。但是我想if会花费大量的时间进行大量的评论。异构数据库后端可能会带来很大的痛苦。您需要维护更多的后端基础设施,还需要额外的单点故障和额外的技术诀窍来支持应用程序。我通常会建议避免使用它,除非你有很好的技术理由这样做。谢谢@Philipp我在考虑mongodb,因为将来我可能会得到比普通用户数据更多的评论。我在考虑考虑考虑可伸缩性,这可能会在几年后导致问题,然后我可能需要将所有注释从sql移动到NoSql数据库。谢谢@Farkie,但还有其他方法吗?就像首先从mongodb检索数据,然后使用用户id从mysql获取数据一样。但是我想如果你想的话,你会消耗很多钛
一个异构的数据库后端可能会造成很大的痛苦。您需要维护更多的后端基础设施,还需要额外的单点故障和额外的技术诀窍来支持应用程序。我通常会建议避免使用它,除非你有很好的技术理由这样做。谢谢@Philipp我在考虑mongodb,因为将来我可能会得到比普通用户数据更多的评论。我在考虑考虑考虑可伸缩性,这可能会在几年后导致问题,然后我可能需要将所有注释从sql移动到NoSql数据库。谢谢。我试试看。我实际上放弃了这个选项,因为我认为从两个不同的数据库检索数据需要更多的时间和计算能力。谢谢。我试试看。我实际上放弃了这个选项,因为我认为从两个不同的数据库检索数据需要更多的时间和计算能力。谢谢@Philipp的指导。我将尝试您的选项,存储用户的信息与评论。毕竟,平衡数据和计算能力是相当困难的。大多数时候,我们需要存储更多数据以节省计算能力。感谢@Philipp的指导。我将尝试您的选项,存储用户的信息与评论。毕竟,平衡数据和计算能力是相当困难的。大多数时候,我们需要存储更多的数据以节省计算能力。