2016-06-14 6 views
2

4 개의 스레드에서 1300 만 레코드가있는 Mongo Collection에 액세스하는 스칼라 응용 프로그램이 있습니다.MongoDB에 대한 동시 읽기 작업

4 개의 스레드가 동시에 Mongo에 액세스하고 동일한 레코드를 읽지 않도록하고 싶습니다. 또한, 패스 3에서 스레드 2가 액세스 한 레코드는 앞으로 다른 스레드가 액세스해서는 안됩니다.

어떻게하면 좋을까요?

+0

어떤 lib를 사용하고 있는지 나타낼 때 유용 할 수 있습니다. – cchantep

+0

'number' 유형 필드가 있습니까? 그렇다면'$ mod' 연산자를 사용하여 데이터를 4 개의 스레드로 나눌 수 있습니다. 예 :'db.collection.find ({numField : {$ mod : [4,0]}})'in thread-0 – Shawyeok

답변

1

디스패처 기능에 적합한 장소입니다.

Dispatcher는 모든 ID를 읽은 다음 roundRobin 큐 푸시 ID를 f1,f2,f3,f4으로 변경해야합니다. 단일 문서에서 데이터를 읽지 못하게하는 잠금 메커니즘이 없으므로 ID가 전달 될 때 하위 함수가 모든 작업을 수행해야합니다.