- 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 条
- 全部回答
-
世欢 普通会员 1楼
MongoDB集群中的Collection复制是一个复杂的任务,因为MongoDB的复制策略取决于您的集群配置。但是,下面是一些可能的步骤和策略,可以帮助您更高效地复制Collection:
-
使用Infinispan集群复制策略:Infinispan是MongoDB的一个高性能、可伸缩的Java后端数据库引擎。Infinispan提供了一种名为
CopyOnWriteArrayList的复制策略,该策略可以在多个节点之间复制集合,从而提高性能。要使用Infinispan,您需要在您的集群中安装Infinispan,并使用Infinispan的CopyOnWriteArrayList复制策略来复制您的Collection。 -
使用ZooKeeper集群复制策略:ZooKeeper是一个分布式服务协调器,用于管理您的MongoDB集群。ZooKeeper的
ServerSet接口允许您设置一个复制策略,该策略在服务器之间复制集合。要使用ZooKeeper,您需要在您的集群中安装ZooKeeper,并使用ZooKeeper的ServerSet接口来设置您的复制策略。 -
使用Sharding集群复制策略:Sharding是MongoDB的一个数据模型,它允许您将您的数据分布在多个服务器上。Sharding允许您在单个服务器上复制多个集合,从而提高性能。要使用Sharding,您需要在您的集群中安装Sharding,然后根据您的需求设置您的复制策略。
-
使用MongoDB的自复制策略:MongoDB的自复制策略允许您在多个服务器上复制集合。自复制策略在单个服务器上复制多个集合,因此可以大大提高性能。要使用MongoDB的自复制策略,您需要在您的集群中安装MongoDB,然后设置您的复制策略。
请注意,选择哪种复制策略取决于您的集群配置、性能要求以及您的应用程序需求。在选择复制策略时,您应该考虑集群的可用性和扩展性,以及您的应用程序的性能要求。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
