2016-06-14 87 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被分派时,下属功能将不得不执行所有操作。