将大量数据插入MongoDB的最快方法是什么?

时间:2014-10-21 10:01:00

标签: mongodb

我们正在尝试使用mongo db c驱动程序将大量文档连续插入mongo db。

每个文档都有一定数量的"列"。每列是文档的键值对。 一旦我们插入了文档,我们就不会修改它,直到删除。

我们如何实现最大插入速度(每秒)?

当我们尝试在200个列中插入5000个文档时,在正常的集合中,我们得到以下结果:

  • 未承认:平均花费0.99秒(重复500次,差异:11.03秒)
  • 已确认:平均花费3.0秒,差异为0.97秒

如果我们为每个文档插入较少的列(例如,只有3个整数),则速度更快:平均1次插入30&000; 000文档,未确认。

如果我们并行使用多个写入器,则时间会随着写入器的数量(几乎)线性增加。我们猜测这是因为MongoDB的每个数据库锁。

然后我们尝试在本地计算机上使用分片。使用分片,每个分片可以有一个写入器。我们在_id字段上使用了散列分片键。结果非常糟糕:插入速度比我们之前尝试的任何速度慢。

因此,当我们只使用一个编写器而没有分片时,我们获得了最快的插入速度。

我们如何让MongoDB在一台机器上扩展?

如果我们想要不断增长的数据集,我们可以使用上限集合吗?限制集合会提高插入速度吗?

我们应该使用另一个noSql数据库吗?

总结的"要求"对于我们的存储解决方案:

  • 我们需要能够连续插入一个一个文档。我们无法使用批量插入。
  • 我们不需要确认数据插入。
  • 我们不会修改数据,只会在一段时间后删除它。
  • 我们希望我们的存储解决方案可以在一台机器上扩展。
  • 如果我们想查询数据,我们会按_id查找文档。

相关:How to speed up MongoDB Inserts/sec? 这个问题不重复。我们有不同的要求并使用其他驱动程序。也许我们甚至会遇到不同的瓶颈,正如下面的评论指出的那样。

0 个答案:

没有答案