2013-05-26 2 views
1

JavaDoc DBCursor의 경우 결과가 데이터베이스에서 지연 가져 오기라고합니다. 그러나MongoDB 용 java DBCursor

public class DBApiLayer extends DB { 
    ... 
    private void init(Response res){ 
    ... 
     _cur = res.iterator() 
    ... 
    } 
    Iterator<DBObject> _cur; 
    ... 
} 

는 쿼리와 일치하는 모든 항목이 포함 (그리고 나는 그것을 이해 그들은 힙을). 동시 db.collection.update (...)는 이러한 객체를 변경하지 않습니다. 모든 개체를 힙 thread safe 구현에 저장하고 있습니까?

이 경우 '게으른'및 '스레드 안전'이란 의미를 설명해주십시오.

+0

게으른 페칭을 알기 위해서는 http://docs.mongodb.org/manual/core/read-operations/#cursor-behaviors 사이트를 방문하십시오. doc : "대부분의 쿼리의 경우 첫 번째 일괄 처리에서는 101 개의 문서 또는 1MB를 초과하는 문서 만 반환합니다. 이후의 일괄 처리 크기는 4MB입니다. 일괄 처리의 기본 크기를 재정의하려면 batchSize() 및 limit() " –

+0

당신 말이 맞아요. 나는 수천 개의 레코드에 관한 소규모 컬렉션을 시도했다. 난 그냥 10 억 레코드를 시도하고 동시 작업 커서 반복 횟수를 변경했습니다. 감사 – katoquro

답변

0

"지연"은 클라이언트가 DBCursor를 반복하면서 다음 배치가 지연 요청됨을 의미합니다. 따라서 초기 반복에서 벗어나면 나머지 결과는 가져 오지 않습니다.

언급 한 페이지에서 "스레드 안전성"이 드라이버의 모든 단일 클래스가 동시에 여러 스레드를 사용하는 것이 안전하다는 의미는 아닙니다. 실제로 MongoClient, DB 및 DBCollection은 스레드로부터 안전하지만 DBCursor 및 DBObject는 그렇지 않습니다.