2013-06-20 1 views

답변

1

BasicDBObject.java를 살펴 보자 읽기 전용 확장합니다. 거기에 입력 한 모든 데이터는 즉시 BSON으로 직렬화되지 않지만 기존 Java 객체에 대한 참조로 수집됩니다. BSON 직렬화에 중복 작업을해서는 안됩니다.

직접 BSON을 수동으로 생성하려면 여기에서 하나 이상의 유형을 수정하거나 하위 클래스 화하는 것이 좋습니다 (https://github.com/mongodb/mongo-java-driver/tree/master/src/main/com/mongodb).

+0

나는 http://comments.gmane.org/gmane.comp.db.mongodb.user/43918 thats가 유사하다고 생각합니다. 하지만 LazyDBObject에는 사용 예제가 없습니다. – user1312837

2

BSON에 직접 쓰는 유일한 방법은 바이트 버퍼를 직접 쓰고 네트워크를 통해 서버로 보냅니다. 이것이 Java 드라이버의 기본 작업이기 때문에 드라이버와 BasicDBObject를 사용하면 MongoDB와 통신하는 버그가 발생하지 않을 것입니다.

BasicDBObject를 사용하는 것이 Java 드라이버에서 가장 최적화 된 경로이므로 성능이 문제가 될 것이라고 생각되면 성능 요구 사항을 고려해야합니다 (처리량 또는 대기 시간은 관심이 있습니까). 어떤 숫자를 목표로 하는가?) Java 드라이버와 사용자 고유의 직렬화를 모두 사용하여 적절한 성능 테스트를 작성하십시오.

JVM은 매우 스마트하며 프로그램에서 가장 일반적으로 사용되는 코드 경로를 최적화합니다. HotSpot은 프로그램과 Java 드라이버를 최적화하여 독자적인 직렬화를 작성할 수있는 이점이 없다는 것을 알 수 있습니다.