MongoDB 인터널
MongoDB와 WiredTiger가 내부에서 어떻게 동작하는지, 스토리지 엔진부터 샤딩과 일관성 보장까지 살펴봅니다.
스토리지 엔진에서 시작해 복제, 샤딩, 일관성 보장 순서로 올라갑니다. 앞 글에서 다룬 WiredTiger의 동작이 뒤 글의 전제가 됩니다.
- 1 WiredTiger 스토리지 엔진 구조와 캐시스토리지 엔진 API, dbPath 파일과 ident, WiredTiger B-tree와 압축, 캐시 크기와 eviction
- 2 체크포인트와 저널60초 체크포인트, journal의 WiredTiger 로그, j 옵션과 journal flush, kill -9 뒤 복구, PostgreSQL WAL과의 차이
- 3 WiredTiger의 MVCC와 스냅샷update chain, 트랜잭션 스냅샷과 timestamp, WriteConflict, history store, minSnapshotHistoryWindowInSeconds, transactionLifetimeLimitSeconds
- 4 인덱스 구조와 쿼리 플래너의 계획 선택 방식KeyString과 RecordId, 후보 계획의 trial 실행과 점수, plan cache의 inactive/active와 replan, ESR, 커버링 쿼리, classic과 SBE
- 5 oplog와 레플리카셋 복제oplog 엔트리의 구조와 멱등성, OplogFetcher에서 OplogApplier까지의 복제 파이프라인, 복제 지연, oplog 크기와 window
- 6 Primary 선출 과정heartbeat와 election timeout, dry run과 term, 투표 규칙, stepDown과 election handoff, priority takeover, 네트워크 분할
- 7 샤딩 구조mongos와 config server, shard key와 chunk, balancer와 chunk migration, 쿼리 라우팅, shard version과 StaleConfig, orphan과 range deleter
- 8 Read/Write Concern이 실제로 보장하는 것write concern 대기와 majority commit point, 8.0의 기본 write concern, read concern별 읽기 시점, causal consistency, rollback과 rollback 파일