【问题标题】:Hybrid query with MongDB and MySQL使用 MongoDB 和 MySQL 进行混合查询
【发布时间】:2014-09-07 16:13:28
【问题描述】:

我在 mysql 数据库中有一个联系人表,在 mongodb 中有一个事件/操作日志数据库。操作日志中的项目属于联系人。

联系人表

id | name | email
 1 | Joe  | joe@email.com

事件集合

{_id:..., contact_id: 1, type:"purchase", data:{}}
{_id:..., contact_id: 1, type:"signup", data:{}}
{_id:..., contact_id: 1, type:"click", data:{}}

查询 1 - “购买”的联系人

这很容易,因为我只需要运行一个 mongo .find({type:"purchase"}),遍历联系人 ID 并查询 mysql 数据库。

查询 2 - 未购买的联系人

这是我卡住的地方,我想到的唯一选择是做.find({type:"purchase"}),获取联系人 ID 并将它们放在 NOT IN() 中,但从长远来看它不会起作用,什么会是可扩展的方法来运行这样的查询吗?

查询 3 - 注册联系人的电子邮件以“joe”开头

同样的问题,首先我需要运行 mysql 部分并获取电子邮件以“joe”开头的联系人,然后在 mongo 中使用这些 id,或者在数据较少的情况下反转(联系人 id)

mongo 中的一切

我不确定将联系人表移动到 mongo 集合是否会变得容易,因为在 mongo 中这种关系仍然需要多次查询运行。

感谢您的意见。

【问题讨论】:

    标签: php mysql mongodb database


    【解决方案1】:

    这对我来说是非此即彼,而不是两者兼而有之。日志数据库应该与事务数据库分开。如果你不能把所有东西都放在 MongoDB 中,我会在 MySQL 中拥有所有事务性的东西。复制两者中的数据,在 MySQL 中进行事务性 JOIN,查询时不要将两者混合。

    【讨论】:

      【解决方案2】:

      如果您的所有数据都在 mysql 中,那么您需要一个 JOIN 操作才能在一个查询中完成它。 Mongodb 不支持 JOIN。也许您可以将联系人数据冗余到事件中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-16
        • 1970-01-01
        • 1970-01-01
        • 2020-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多