2
我有一个scala应用程序,它正在通过4个线程访问一个拥有1300万条记录的Mongo Collection。对MongoDB的并发读取操作
我想让这四个线程同时访问Mongo,并且要确保它们从不读取同一条记录。另外,线程2在第3遍中访问的记录将来不应该被任何其他线程访问。
任何关于我如何实现它的建议?
我有一个scala应用程序,它正在通过4个线程访问一个拥有1300万条记录的Mongo Collection。对MongoDB的并发读取操作
我想让这四个线程同时访问Mongo,并且要确保它们从不读取同一条记录。另外,线程2在第3遍中访问的记录将来不应该被任何其他线程访问。
任何关于我如何实现它的建议?
它看起来是调度员功能的好地方。
调度员需要读取所有ID,然后使用我们说的roundRobin
队列推送ID到f1,f2,f3,f4
。没有锁定机制会阻止从SINGLE文件读取数据,因此当id被分派时,下属功能将不得不执行所有操作。
指示您使用哪个库可能很有用 – cchantep
您是否有'number'类型的字段?如果是的话,你可以使用'$ mod'操作符将数据分成四个线程。例如:db.collection.find({numField:{$ mod:[4,0]}})in thread-0 – Shawyeok