1. 저널링 (Journaling) 이란?
  ㅇ 시스템의 변경 사항을 기록(log 또는 journal) 하여, 
     - 오류나 장애 발생 시에, 데이터를 일관성 있게 복구할 수 있도록 하는 기법
        . 주로, 복원 가능한 정보 만을 저널 로그에 남기는 수단에 의함
2. 파일시스템 저널링 (Journaling File System)
  ㅇ 디스크에 저장된 파일시스템 메타데이터의 변경 사항을 저널에 먼저 기록한 뒤 반영하는 방식.
     - 例) ext3/ext4 (Linux), NTFS (Windows), XFS, JFS 등
  ㅇ 기본 동작 과정
     - 파일 생성, 삭제, 이름 변경 등 메타데이터 변경 요청 발생하면,
     - 해당 변경 내용을 저널 영역(Journal area)에 순차적으로 기록하고,
     - 저널 기록이 완료되면, 실제 파일시스템 구조에 반영
     - 만일, 시스템이 비정상 종료되면, 부팅 시 저널 내용 만을 읽어, 미완료된 작업 만 복구
  ㅇ 장점
     - 비정상 종료 후에도 빠른 복구 (fsck 등 긴 검사 불필요)
     - 파일시스템 일관성(consistency) 유지
  ㅇ 단점  :  매번 파일 갱신 시간이 길어짐
3. 데이터베이스 저널링 (Database Journaling / Logging)
  ㅇ 데이터베이스의 트랜잭션(작업 단위) 수행 기록을 남겨,
     - (이런 기록 행위를, 보통 "로그(log)" 또는 "트랜잭션 로그(transaction log)"라고 부름)
     - 장애 발생 시에, 트랜잭션 단위로 롤백(rollback) 또는 재실행(redo) 가능하게 하는 기술
  ㅇ 기본 동작 과정
     - DBMS는 변경을 적용하기 전, 저널 로그 파일에 먼저 기록  :  (Write-Ahead Logging, WAL)
     - 시스템 장애 시, 저널 로그를 이용해,
        . 완료된 트랜잭션은, redo(재적용)
        . 미완료 트랜잭션은, undo(취소)
  ㅇ 저널 로그 종류
     - Redo Log  :  커밋 완료된 트랜잭션의 변경사항 재적용용
     - Undo Log	 :  미완료 트랜잭션의 변경사항 되돌리기용
     - Checkpoint Log  :  특정 시점의 데이터베이스 상태 스냅샷 기록 (복구 성능 향상용)
4. [요약 비교]  (범례  :  ① 파일시스템 저널링,  ② 데이터베이스 저널링
  
  ㅇ 보호 대상  :  ① 파일시스템 구조 보호,  ② 트랜잭션 단위 복구
  ㅇ 기록 대상  :  ① 상태 변경 전후 정보,  ② 메타데이터 및 일부 데이터 블록
  ㅇ 기록 시점  :  ① 변경 전,  ② 변경 전 (WAL 원칙)
  ㅇ 복구 단위  :  ① 파일 단위,  ② 트랜잭션 단위