Wired Tiger

WiredTiger(WT)는 MongoDB의 storage engine중 하나이다. 3.2부터 공식적으로 사용되었다.

여러가지 기능이 있는데, 그중에서 recovery를 살펴보겠다.

복구를 하는 가장 일반적이고 보편화된 방법 (다른 방법은 들은적이 없기도 하다.)은 checkpoint를 위한 snapshot을 만들고, 그 후에 log를 통해서 복구하는 방법이다. 이 log를 MongoDB에서 journal이라고 부른다.

Operation이 시작되면 WT는 snapshot에 data를 적는다 (consistent 방법). WT는 concurrency control을 위해 MVCC를 사용한다.

  1. 모든 dirty leaf page를 disk로 flush 시킨다.

  2. 모든 dirty internal page가 disk에 쓰여진다.

  3. fsync로 checkpoint가 disk에 persistent하게 쓰여진다.

  4. btree의 root가 new root로 변한다.

  5. dependency를 조사해 같은 것은 복사하고 이전의 checkpoint는 삭제를 한다.

Last updated