모든 빠른 쓰기는 다른 곳으로 작업을 옮긴다
Every fast write moves work somewhere else

모든 스토리지 엔진은 쓰기 성공을 알리기 전에 어떤 작업을 완료해야 하는지 결정해야 한다. 메모리 복사 후 즉시 응답하는 방식은 빠르지만 머신 크래시 시 데이터가 손실될 수 있다. 로컬 SSD에 fdatasync()를 기다리는 방식은 프로세스나 커널 크래시에는 안전하지만 디바이스나 호스트 손실에는 취약하다. 네트워크 볼륨이나 여러 데이터베이스 서버에 복제하는 방식은 더 많은 장애를 견디지만 모든 쓰기에 네트워크 및 복사 시간이 추가된다. 객체 스토리지를 기반으로 한 최신 설계는 로컬 WAL과 LSM 트리 구조를 결합하여 성능과 내구성 사이의 트레이드오프를 보여준다. 이 글은 클라이언트 PUT이 메모리, 로컬 SSD, 원격 스토리지, 다수 서버 복제를 거치는 과정을 추적하며, 성공 후에도 데이터 손실 가능성이 있는 지점과 시스템이 허용할 수 있는 미완료 정리 작업의 양을 질문한다.
성공 후에도 여전히 잃을 수 있는 것이 무엇인지, 시스템이 얼마나 많은 미완료 정리 작업을 허용할 수 있는지 알고 싶다.