롤백 (데이터 관리)

롤백(rollback)은 컴퓨터 과학 및 데이터 관리 분야에서, 시스템이나 데이터베이스가 수행한 작업이나 상태 변화를 이전의 특정 시점으로 되돌리는 과정을 의미한다. 주로 트랜잭션 처리, 버전 관리, 시스템 복구 등에서 사용되며, 오류 발생 시 데이터 일관성을 유지하거나 의도치 않은 변경을 취소하기 위해 활용된다.

정의

롤백은 다음과 같은 상황에서 이루어진다.

  1. 트랜잭션 롤백: 데이터베이스 관리 시스템(DBMS)에서 하나의 트랜잭션이 오류나 사용자의 명령에 의해 전체를 취소하고, 트랜잭션 시작 이전의 상태로 복구하는 과정.
  2. 시스템 롤백: 운영 체제나 소프트웨어 업데이트 후 문제가 발생했을 때, 이전 버전으로 되돌리는 행위.
  3. 버전 관리 롤백: 버전 관리 시스템(예: Git)에서 특정 커밋 이전으로 코드를 되돌리는 작업.

동작 원리

  • 로그 기반 복구: 대부분의 DBMS는 Redo LogUndo Log(또는 Rollback Segment)를 사용한다. 트랜잭션이 수행한 변경 사항은 로그에 기록되며, 롤백 시 Undo Log에 저장된 정보를 역순으로 적용해 원래 상태로 복구한다.
  • 스냅샷 기반 복구: 파일 시스템이나 가상화 환경에서는 특정 시점의 스냅샷을 저장해 두고, 필요 시 해당 스냅샷으로 복원한다.

주요 특징

구분 내용
목적 데이터 무결성 보장, 오류 복구, 작업 취소
적용 대상 데이터베이스, 파일 시스템, 애플리케이션, 운영 체제
조건 롤백 대상에 대한 로그 또는 스냅샷이 사전에 저장되어 있어야 함
제한 롤백이 불가능한 경우(예: 로그 손실, 영구적인 삭제)는 복구가 어려울 수 있음

사용 예시

  • 데이터베이스: BEGIN TRANSACTION; INSERT INTO accounts ...; COMMIT; 과정에서 오류가 발생하면 ROLLBACK; 명령을 실행해 삽입된 레코드를 취소한다.
  • 소프트웨어 배포: 최신 버전으로 업데이트 후 서비스 장애가 발생하면, 배포 시스템은 이전 버전으로 롤백하여 정상 운영을 회복한다.
  • 버전 관리: git reset --hard <commit-id> 명령을 사용해 지정된 커밋 이전 상태로 프로젝트 코드를 되돌린다.

관련 용어

  • 커밋(Commit): 트랜잭션의 결과를 영구히 반영하는 작업.
  • 세이브포인트(Savepoint): 트랜잭션 내에서 중간 지점을 지정해, 해당 지점까지 선택적으로 롤백할 수 있게 하는 기능.
  • 포인트-인-타임 복구(Point-in-Time Recovery, PITR): 특정 시점까지의 데이터베이스 상태를 복구하는 방법으로, 롤백과 유사한 개념을 포함한다.

참고 문헌

  • 김성우 외, 데이터베이스 시스템 개론, 2판, 한빛미디어, 2020.
  • PostgreSQL Documentation, “Transaction Management”, 2023.
  • Oracle Database Concepts, Oracle Corporation, 2022.
둘러보기

더 찾아볼 만한 주제