2

我收集了大约 625,000 个对象。

每晚通过 cron,我从数据提供者检索此数据的更新文件 (tsv),并且需要将它们重新导入我的 mongodb。

在不中断网站/服务及其使用数据的用户的情况下,最好的方法是什么?mongoimport --upsert 直接在集合上是最好的方法吗?就是这么慢。

我应该考虑其他涉及我的收藏副本的方法吗?

4

1 回答 1

1

mongoimport --upsert 直接在集合上是最好的方法吗?就是这么慢。

这会奏效,但根据我的经验,mongoimport这是缓慢而笨拙的。它还有一些其他严重的限制:无法跟踪进度,没有检查/验证的地方,没有记录它在做什么。

我应该考虑其他涉及我的收藏副本的方法吗?

这里的替代方法是编写一个执行此操作的脚本。在大多数语言中,这是非常微不足道的。

这将使您能够跟踪进度和处理不良数据。如果您发现导入特别慢,您也可以分叉该过程并拆分工作。

关于速度

请记住,您正在更新 625k 个对象。如果您可以每秒获得 1k 更新,那么更新仍然需要 10 分钟。如果您mongostat在导入过程中运行或检查您的监控,您应该了解正在完成的工作量。

于 2011-11-28T21:26:23.510 回答