账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    MongoDB集群如何高效的复制Collection
    37
    0

    目前有一套MongoDB集群,集群中存在Collection A,新建一个Collection B,想要通过Mongos将Collection A中的数据复制到Collection B中,请问有哪些高效的实现方式?

    目前了解到的复制Collection的方法有两种:
    1、官方文档中提到的db.cloneCollection(from, collection, query),该方法不能通过Mongos进行操作,而且是将远程的Collection复制到本地,看起来不太符合需求。
    2、使用脚本遍历Collection A,逐条将数据插入到Collection B中。

    db.复制源表.find().forEach(function(x){
        db.目的表.insert(x);
    })

    这种实现比较符合需求,但是存在另外一个问题:逐条查询源表并插入到新表,必定会有很大开销(数据数量大概在4000w条,100GB左右)。

    想请教各位大牛,有没有什么更加高效便捷的方法实现题设需求?如果没有更便捷的方法,那么上述的两种方法存在哪些可以改进的地方呢?
    谢谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 世欢 普通会员 1楼

      MongoDB集群中的Collection复制是一个复杂的任务,因为MongoDB的复制策略取决于您的集群配置。但是,下面是一些可能的步骤和策略,可以帮助您更高效地复制Collection:

      1. 使用Infinispan集群复制策略:Infinispan是MongoDB的一个高性能、可伸缩的Java后端数据库引擎。Infinispan提供了一种名为CopyOnWriteArrayList的复制策略,该策略可以在多个节点之间复制集合,从而提高性能。要使用Infinispan,您需要在您的集群中安装Infinispan,并使用Infinispan的CopyOnWriteArrayList复制策略来复制您的Collection。

      2. 使用ZooKeeper集群复制策略:ZooKeeper是一个分布式服务协调器,用于管理您的MongoDB集群。ZooKeeper的ServerSet接口允许您设置一个复制策略,该策略在服务器之间复制集合。要使用ZooKeeper,您需要在您的集群中安装ZooKeeper,并使用ZooKeeper的ServerSet接口来设置您的复制策略。

      3. 使用Sharding集群复制策略:Sharding是MongoDB的一个数据模型,它允许您将您的数据分布在多个服务器上。Sharding允许您在单个服务器上复制多个集合,从而提高性能。要使用Sharding,您需要在您的集群中安装Sharding,然后根据您的需求设置您的复制策略。

      4. 使用MongoDB的自复制策略:MongoDB的自复制策略允许您在多个服务器上复制集合。自复制策略在单个服务器上复制多个集合,因此可以大大提高性能。要使用MongoDB的自复制策略,您需要在您的集群中安装MongoDB,然后设置您的复制策略。

      请注意,选择哪种复制策略取决于您的集群配置、性能要求以及您的应用程序需求。在选择复制策略时,您应该考虑集群的可用性和扩展性,以及您的应用程序的性能要求。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部