피드로 돌아가기
Dev.toDatabase
원문 읽기
MongoDB의 snapshot read concern을 사용하면 명시적 트랜잭션 없이도 다중 문서 일관된 스냅샷 읽기가 가능하며, majority read concern의 스냅샷 혼합 문제를 해결합니다
Read Concern "snapshot" for snapshot isolation outside explicit transactions
AI 요약
Context
MongoDB는 기본적으로 문서 단위의 일관성 경계를 제공하여 다중 문서 읽기 시 서로 다른 시점의 데이터가 혼합될 수 있습니다. majority read concern은 미확정 읽기를 방지하지만, 스캔 진행 중 majority 상태가 전진하면 일부 행이 더 새로운 스냅샷에서 제공될 수 있습니다.
Technical Solution
- MongoDB의 readConcern 옵션을 majority에서 snapshot으로 변경하여 단일 시점의 스냅샷에서 모든 문서를 읽도록 설정
- aggregate 연산 시 readConcern: { level: "snapshot" }을 지정하여 총 잔액 계산 시 일관된 스냅샷 보장
- 다중 문서 이체 작업은 기존대로 startTransaction/commitTransaction을 사용하고, 읽기 전용 연산에서 snapshot read concern 적용
- periodicReader 함수가 1초마다 총 잔액을 검증하면서 majority와 snapshot의 동작 차이를 확인
- 1백만 개의 계정과 5개의 동시 작성자 환경에서 read-your-writes 일관성 검증
실천 포인트
금융 서비스처럼 다중 문서 일관성이 중요한 환경에서 MongoDB를 사용할 때, 읽기 전용 집계 연산에 snapshot read concern을 적용하면 명시적 트랜잭션 없이도 일관된 스냅샷 격리 수준을 달성할 수 있습니다