ACID
트랜잭션의 안정성과 신뢰성의 보장을 위해 데이터베이스에서 요구하는 4가지 핵심 속성
원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 영속성(Durability)의 약자이다.
1. 원자성 (Atomicity)
트랜잭션 내의 모든 연산이 완전히 성공하거나, 하나라도 실패하면 전체가 실패(취소)하여 데이터베이스에 아무것도 반영되지 않음을 보장하는 성질
- All or Nothing (전부 아니면 전무): 트랜잭션의 작업들은 더 이상 나눌 수 없는 하나의 원자적인 단위로 간주된다.
- 예시: 계좌 이체 시, 송금 계좌에서 금액을 인출하는 작업과 수취 계좌에 금액을 입금하는 작업 중 하나라도 실패하면, 전체 거래는 취소되어 원래 상태로 되돌아간다(Rollback).
2. 일관성 (Consistency)
트랜잭션이 성공적으로 완료된 후에도 데이터베이스가 일관된 상태를 유지해야 하는 성질 데이터베이스에 정의된 규칙이나 제약 조건(무결성 제약)을 위반하는 트랜잭션은 허용되지 않는다.
- 예시: 계좌의 잔액은 항상 0 이상이어야 한다는 규칙이 있다면, 트랜잭션은 잔액을 음수로 만드는 것을 허용하지 않는다.
3. 격리성 (Isolation)
둘 이상의 트랜잭션이 동시에 실행될 때, 각 트랜잭션이 마치 단독으로 실행되는 것처럼 서로에게 영향을 주지 않고 독립적으로 수행되도록 보장하는 성질
- 하나의 트랜잭션이 진행 중일 때, 다른 트랜잭션은 해당 트랜잭션의 중간 결과를 볼 수 없다.
- 데이터베이스 시스템은 격리 수준(Isolation Level)을 통해 동시성과 데이터 일관성의 균형을 조절한다.
4. 영속성 (Durability)
트랜잭션이 성공적으로 완료(Commit)된 후, 해당 변경 사항이 영구적으로 데이터베이스에 반영되어야 함을 의미
- 일단 커밋되면, 시스템 오류(정전, 시스템 다운 등)가 발생하더라도 그 결과는 손실되지 않고 보존된다.
- 일반적으로 데이터베이스의 비휘발성 메모리(HDD, SSD)에 기록되어 보장된다.
ACID 속성은 금융 거래와 같이 데이터의 무결성이 매우 중요한 시스템에서 트랜잭션의 신뢰성을 확보하는 데 필수적인 요소