2016-06-14 89 views
2

我有一個scala應用程序,它正在通過4個線程訪問一個擁有1300萬條記錄的Mongo Collection。對MongoDB的併發讀取操作

我想讓這四個線程同時訪問Mongo,並且要確保它們從不讀取同一條記錄。另外,線程2在第3遍中訪問的記錄將來不應該被任何其他線程訪問。

任何關於我如何實現它的建議?

+0

指示您使用哪個庫可能很有用 – cchantep

+0

您是否有'number'類型的字段?如果是的話,你可以使用'$ mod'操作符將數據分成四個線程。例如:db.collection.find({numField:{$ mod:[4,0]}})in thread-0 – Shawyeok

回答

1

它看起來是調度員功能的好地方。

調度員需要讀取所有ID,然後使用我們說的roundRobin隊列推送ID到f1,f2,f3,f4。沒有鎖定機制會阻止從SINGLE文件讀取數據,因此當id被分派時,下屬功能將不得不執行所有操作。