로그 선행 기입

로그 선행 기입(, WAL)은 데이터베이스 시스템에서 ACID의 특성 가운데 원자성과 내구성을 제공하는 기술의 한 계열이다.

WAL을 사용하는 시스템에서 모든 수정은 적용 이전에 로그에 기록된다. 일반적으로 redo 및 undo 정보는 둘 다 로그에 저장된다.

한 예로 어느 프로그램이 특정 작업을 수행하는 동안 컴퓨터에 정전이 일어났다고 하자. 다시 시작할 때 프로그램은 어느 작업이 수행을 성공적으로 마쳤는지, 절반 성공했는지, 아니면 실패했는지를 잘 알고 있어야 한다. 로그 선행 기입이 사용된다면 프로그램은 이러한 로그를 검사하여 예기치 않은 정전 시 해야할 일과 실제로 했던 일을 비교하게 된다.

WAL은 데이터베이스 업데이트가 인 플레이스 알고리즘을 사용할 수 있게 한다. 원자적 업데이트를 구현하는 또다른 방법은 인 플레이스 알고리즘이 아닌 그림자 페이징 기법을 사용하는 것이다. 인 플레이스로 업데이트할 때의 주된 이점은 색인과 블록 목록의 수정 필요성을 줄인다는 점이다.

ARIES는 WAL 계열 중 잘 알려진 알고리즘이다.

사용 제품 
 PostgreSQL 데이터베이스 시스템은 WAL을 사용하여 포인트 인 타임 복구와 데이터베이스 복제 기능을 제공한다.
 SQLite 데이터베이스도 WAL을 지원한다.
 몽고DB는 로그 선행 기입을 사용하여 일관성과 충돌 안전을 제공한다.
 아파치 HBase는 WAL을 사용하여 재난 후 복구를 제공한다.

각주 

데이터베이스 알고리즘