MongoDB:集合中的数十亿文档
我需要将66亿个Bigram加载到一个集合中,但我找不到任何关于最佳方式的信息 将这么多文档加载到一个主键索引将花费很长时间,但据我所知,mongo不支持分区的等效功能 切分有帮助吗?我是否应该尝试将数据集拆分到多个集合中,并将该逻辑构建到我的应用程序中?您完全可以(在网络上跨N个服务器的分区)。事实上,这是它的核心优势之一。在应用程序中不需要这样做MongoDB:集合中的数十亿文档,mongodb,Mongodb,我需要将66亿个Bigram加载到一个集合中,但我找不到任何关于最佳方式的信息 将这么多文档加载到一个主键索引将花费很长时间,但据我所知,mongo不支持分区的等效功能 切分有帮助吗?我是否应该尝试将数据集拆分到多个集合中,并将该逻辑构建到我的应用程序中?您完全可以(在网络上跨N个服务器的分区)。事实上,这是它的核心优势之一。在应用程序中不需要这样做 对于大多数用例,我强烈建议对66亿个文档这样做。根据我的经验,MongoDB在使用多台中端服务器时比使用一台大型服务器时性能更好。很难说最佳批量插
对于大多数用例,我强烈建议对66亿个文档这样做。根据我的经验,MongoDB在使用多台中端服务器时比使用一台大型服务器时性能更好。很难说最佳批量插入是什么——这在一定程度上取决于要插入的对象的大小和其他无法测量的因素。您可以尝试几个范围,看看什么能提供最佳性能。另外,有些人喜欢使用mongoimport,这非常快,但您的导入数据需要是json或csv。如果数据是BSON格式的,显然有mongodrestore Mongo可以轻松处理数十亿个文档,一个集合中可以包含数十亿个文档,但请记住。在MongoDB中有很多人拥有数十亿的文档,网上有很多关于它的讨论。如果你改变主意,想拥有多个收藏,这里有一个关于使用大量你可能喜欢阅读的收藏的建议。集合越多,索引也就越多,这可能不是您想要的 这是Craigslist关于在MongoDB和这家伙的网站上插入数十亿个文档的报道 看起来分片确实是一个很好的解决方案,但通常分片用于跨多个服务器进行扩展,很多人这样做是因为他们想扩展写操作,或者他们无法将工作集(数据和索引)保留在RAM中。从一台服务器开始,然后随着数据的增长或需要额外的冗余和恢复能力,移动到碎片或副本集是完全合理的 但是,也有其他用户使用多个mongod来绕过单个mongod的锁定限制,从而进行大量写入。很明显,但仍然值得一提的是,多mongod设置的管理比单个服务器更复杂。如果您的IO或cpu在这里没有达到最大值,您的工作集比RAM小,并且您的数据很容易保持平衡(非常随机分布),您应该会看到改进(在单个服务器上进行分片)。仅供参考,存在内存和IO争用的可能性。随着2.2在中的改进,我怀疑这样部署的理由会少很多 你需要正确地计划你的切分移动,也就是说,仔细考虑选择你的切分键。如果您这样做,那么最好预先拆分并关闭平衡器。移动数据以保持平衡会适得其反,这意味着您需要提前决定如何分割数据。此外,在设计文档时,考虑到某些字段对于切分或作为主键是有用的,这一点有时也很重要 这里有一些很好的链接-