我必须编写一个应用程序,不断轮询给定数据库中的mongodb db集合。如果它找到它们读取的文件,则将它们复制到另一个数据库,进行一些额外处理并从原始数据库中删除它们。
实施此方法的最有效方法是什么?什么是最佳实践?
一次处理一个文档是否更好:阅读一个文档,复制文档然后删除它 或者更好地阅读所有文件,复制所有文件,然后删除所有文件?
在其中一个读取,写入删除过程中处理故障的最佳方法是什么?
答案 0 :(得分:0)
批量读取,插入和删除几乎总是比单个文档操作更高效。但是尝试将其限制为最大数量的文档,例如在我们的设置中,500似乎是最佳的。
对于处理错误,您可以使用以下伪事务模式:
如果处理部件或批量插入中出现问题,您可以解锁所有锁定的文档,然后重试。
可以在MongoDB教程中找到这类伪造事务的更详细的例子: http://docs.mongodb.org/manual/tutorial/perform-two-phase-commits/