온라인강의

[udemy] 데이터 베이스 엔지니어링 - Durabiltity

콩콩(๓° ˘ °๓)♡ 2024. 7. 1. 17:09

Durabiltity

지속성은 고객이 데이터베이스에 만든 권한을 비휘발성 시스템 저장소에 지속시키는 과정입니다.

 

하지만 지속성을 위해서는 디스크에 저장해야 하므로 '느리다'고 말하곤 합니다.

그래서 Postgre 데이터베이스는 메모리에 저장한 후 스냅샷을 찍어 디스크에 백업하므로 '빠르다'라는 점을 강조하기도 합니다.

 

다시 돌아와, 커밋된 트랜잭션에 의해 변경된 것들은 SSD, 하드드라이브같은 비휘발성 저장소에 저장되어야 합니다.

지속성을 보장하기 위해서는 어떤 과정을 거칠까요?

 

디스크에 실제로 기록하고 지속성을 갖기 위해서는 시간이 걸리기 때문에 사용되는 몇가지 기술이 있습니다.

 

1. WAL

그래서 데이터베이스에서는 변경 사항의 버전인 '델타'만 적용합니다.

그리고 쓰기 전용 로그인 write ahead log(WAL)에 모든 변경사항이 즉시 기록됩니다.

그리고나서 디스크에 플러시하면 지속성이 보장되는 것입니다.

 

만약 충돌이 발생한다면, 모든 WAL 항목을 다시 읽고 이 상태를 효과적으로 쉽게 지속된 상태에서 다시 구축할 수 있습니다.

 

2. 비동기적 스냅샷

쓰는 동안에 모든 것을 메모리에 유지하고 백그라운드에서 비동기적으로 한꺼번에 모든 것을 디스크에 스냅샷합니다.

 

3. AOF (Append Only File)

변경사항을 추적하고 기록하는 방식으로 가볍고, 충돌에서 복원도 용이합니다.