我有一个大约625,000个对象的集合。
每晚通过cron,我从数据提供程序检索此数据的更新文件(tsv),并需要将它们重新导入到我的mongodb。
在不中断正在使用数据的网站/服务及其用户的情况下,最好的方法是什么?直接在集合上执行mongoimport—upsert是最好的方法吗?实在是太慢了。我是否应该考虑涉及我的集合副本的其他方法?
直接在集合上执行mongoimport——upsert是最好的方法吗?实在是太慢了。
这将工作,但在我的经验,mongoimport
一直是缓慢和笨拙的。它也有一些其他严重的限制:无法跟踪进度,没有检查/验证的位置,没有日志记录它正在做什么。
我是否应该考虑涉及我的集合副本的其他方法?
这里的另一种方法是编写一个脚本来执行此操作。在大多数语言中,这是非常微不足道的。
这将使您能够跟踪进度并处理坏数据。如果您发现导入特别慢,您也可以将该过程分成分支并拆分工作。
关于速度
请记住您正在更新625k个对象。如果你的更新速度是每秒1k次,那么你仍然需要10分钟的更新时间。如果在导入过程中运行mongostat
或检查监视,您应该了解正在完成多少工作。