collection.bulkWrite() 메서드는 MongoDB의 Java 드라이버에서 제공하는 기능으로, 여러 쓰기 작업을 하나의 요청으로 묶어서 MongoDB 서버에 보낼 수 있게 해줌.
이 메서드는 성능 최적화를 위해 대량의 데이터를 처리할 때 유용하며, 네트워크 호출을 줄이고 데이터베이스 부하를 감소시키는 데 도움이 됨.
이 메서드는 WriteModel 인터페이스를 구현한 객체의 리스트를 인자로 받음. WriteModel은 여러 하위 클래스를 가지는데, 이들 하위 클래스는 다양한 쓰기 작업을 나타냄 예를 들어:
InsertOneModel: 단일 문서 삽입
UpdateOneModel: 단일 문서 업데이트
UpdateManyModel: 여러 문서에 대한 업데이트
DeleteOneModel: 단일 문서 삭제
DeleteManyModel: 여러 문서 삭제
ReplaceOneModel: 단일 문서 교체
List<WriteModel<Document>> operations = new ArrayList<>();
// 새로운 문서 삽입을 위한 InsertOneModel 객체 추가
operations.add(new InsertOneModel<>(new Document("_id", 1).append("name", "John Doe")));
// 기존 문서 업데이트를 위한 UpdateOneModel 객체 추가
operations.add(new UpdateOneModel<>(
Filters.eq("_id", 1), // 필터
new Document("$set", new Document("name", "Jane Doe")) // 업데이트 내용
));
// 문서 삭제를 위한 DeleteOneModel 객체 추가
operations.add(new DeleteOneModel<>(Filters.eq("_id", 2)));
// bulkWrite 메서드를 호출하여 모든 작업 실행
BulkWriteResult result = collection.bulkWrite(operations);
bulkWrite 메서드는 BulkWriteResult 객체를 반환하며, 이 객체를 통해 수행된 작업의 결과를 확인할 수 있음.
예를 들어,
몇 개의 문서가 삽입되었는지, 업데이트되었는지, 삭제되었는지 등의 정보를 얻을 수 있음.
bulkWrite를 사용할 때는 몇 가지 옵션의 설정이 가능함.
예를 들어,
ordered 옵션을 false로 설정하면,
MongoDB는 작업을 순차적으로 수행하지 않고 병렬로 수행하여 성능을 향상시킬 수 있음.
하지만 이 경우, 작업의 순서가 중요하다면 문제가 될 수 있음.
기본적으로 ordered 옵션은 true로 설정되어 있으며, 작업은 리스트에 추가된 순서대로 수행됨.
bulkWrite는 효율적인 데이터 처리를 위해 매우 중요한 메서드이며,
대규모 데이터를 다뤄야 하는 애플리케이션에서 종종 사용.