mongodb插入大集合

时间:2012-04-18 10:28:38

标签: java performance mongodb

我在复制集配置中有一个mongo(版本2)正在生产中(下一步是添加分片)。

我需要实现以下内容:

  • 每天我会收到一个包含数百万行的文件,然后将其加载到mongo中。
  • 我有一个总是从这个集合中读取的运行时应用程序 - 非常大量的读取,它们的性能非常重要。 集合已编制索引,并且所有读取都执行readByIndex操作。

我目前的加载实现是:

  1. drop collection
  2. 创建集合
  3. 插入集合新文档
  4. 我看到的一件事是因为mongoDB锁定我的总体性能在加载过程中变得最糟糕。 我已经检查了最多10万条条目的收藏品。 对于那个大小的更多我认为我应该开始使用分片

    爱这类问题的最佳方式是什么? 或者我应该使用其他解决方案策略?

1 个答案:

答案 0 :(得分:1)

您可以使用两个集合:)

  • collectionA包含当天的数据
  • 新数据到达
  • 创建一个新集合(collectionB)并插入数据
  • 现在使用collectionB作为您的数据

然后,第二天,重复上面的内容,只需交换A和B:)

这将使collectionA在更新collectionB时仍然提供服务请求。

PS刚刚注意到我回答这个问题已经晚了一年:)