gpt4 book ai didi

MongoDB,如何合并两个或多个数据库

转载 作者:可可西里 更新时间:2023-11-01 09:46:09 28 4
gpt4 key购买 nike

到目前为止的故事:首先,我们得到了一个网络应用程序和一个数据库。然后,产品所有者决定对第一个应用程序进行衍生(如果第一个应用程序是服装网站,那么第二个网站就是婴儿服装网站)。我们为第二个应用程序创建了第二个数据库。然后是第三个、第四个、第 n 个。我可以证明这个决定是正确的,因为数据库的信息没有交叉。

现在:产品负责人决定做一个 super 应用,一个应用统领一切。常见的故事:用户查询某些产品,结果必须包含来自不同数据库的聚合数据(但不是全部,n 中的 k)。

问题:是否有一些通用模式可以解决我们面前出现的常见问题?

第一种方式: super 数据库(所有数据库数据,复制到一个巨大的数据库中)

  • 优点:只需要一个查询;更容易应用排序或其他过滤
  • cons:我们将如何区分项目的原始数据库;可能是一些ID冲突;必须执行耗时且危险的信息复制;不会向后兼容旧的应用程序

第二种方法:相同的数据库(没有变化)

  • 优点:应用程序将向后兼容;不会有危险的应对
  • 缺点:一个查询变成多个查询(更慢,更难聚合)

最佳答案

将这一切存放在多个数据库中很好,因为 MongoDB(当然)没有 JOIN,所以这里没有聚合问题的真正威胁。如果 10gen 发布聚合函数等中的子选择功能以允许某种类型的伪连接,我想您将来可能会遇到问题。

如果您要执行多个输出到同一个集合的 MR,那么 MR 可能会出现一个问题,但是 MR 现在可以输出到不同的数据库(现在已经可用了一段时间),所以这很好。

对于多个数据库(在 2.2 中),锁也会在你这边,因为 2.2 中的锁定机制是数据库级别的。

在我个人看来,考虑到复制和 ID 冲突的问题,我会坚持使用您已有的东西,只创建一个抽象层,使其看起来像是来自一个数据库。

当然,如果您觉得将其存放在不同的数据库中是一个真正的逻辑问题,并且您很容易混淆数据,那么您可能别无选择。

关于MongoDB,如何合并两个或多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12672525/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com