
데이터베이스 트랜잭션의 핵심, ACID 완벽 정리
백엔드 개발을 하다 보면 반드시 마주하게 되는 개념이 바로 트랜잭션(Transaction)입니다. 그리고 이 트랜잭션의 안정성을 보장하는 핵심 개념이 바로 ACID입니다.
ACID는 데이터베이스가 안전하게 동작하기 위한 최소한의 약속이라고 볼 수 있습니다.
ACID란 무엇인가?
ACID는 다음 네 가지 속성의 앞 글자를 따온 용어입니다.
- Atomicity (원자성)
- Consistency (일관성)
- Isolation (격리성)
- Durability (지속성)
즉, "트랜잭션이 안전하게 수행되도록 보장하는 4가지 성질"을 의미합니다.
1. Atomicity (원자성)
원자성은 트랜잭션이 모두 성공하거나, 모두 실패해야 한다는 성질입니다.
예를 들어 계좌 이체를 생각해보겠습니다.
- A 계좌에서 돈을 출금
- B 계좌에 돈을 입금
만약 2번에서 오류가 발생하면, 1번도 반드시 취소되어야 합니다.
즉, 중간 상태는 존재하면 안 됩니다.
2. Consistency (일관성)
일관성은 트랜잭션 수행 전과 후의 데이터가 항상 유효한 상태를 유지해야 한다는 것을 의미합니다.
- 계좌 잔액은 0 이상이어야 한다
- 외래키 제약조건 유지
- 유니크 값 중복 금지
이러한 규칙을 위반하면 트랜잭션은 자동으로 롤백됩니다.
3. Isolation (격리성)
격리성은 동시에 실행되는 트랜잭션이 서로에게 영향을 주지 않도록 하는 성질입니다.
즉, 각각의 트랜잭션은 독립적으로 실행되는 것처럼 보여야 합니다.
다른 트랜잭션은 항상 완료된 결과만 볼 수 있어야 하며, 중간 상태를 읽을 수 없어야 합니다.
4. Durability (지속성)
지속성은 트랜잭션이 성공적으로 완료되면 그 결과가 영구적으로 저장되는 것을 의미합니다.
시스템 장애가 발생하더라도 데이터는 반드시 유지되어야 합니다.
이를 위해 데이터베이스는 보통 로그(WAL, Write-Ahead Log)를 활용합니다.
ACID 한눈에 정리
| 속성 | 설명 |
|---|---|
| Atomicity | All or Nothing |
| Consistency | 데이터 규칙 유지 |
| Isolation | 트랜잭션 간 간섭 없음 |
| Durability | 영구 저장 |
ACID가 중요한 이유
ACID는 단순한 이론이 아니라 실제 서비스의 안정성을 보장하는 핵심 개념입니다.
- 금융 시스템
- 결제 처리
- 주문/재고 관리
- 데이터 정합성이 중요한 서비스
특히 데이터가 틀리면 서비스 전체가 무너질 수 있는 상황에서 반드시 필요합니다.
마무리
ACID는 데이터베이스를 사용할 때 반드시 이해해야 하는 핵심 개념입니다.
👉 한 줄 정리
ACID는 "데이터를 안전하게 다루기 위한 최소한의 규칙"입니다.
'Storage' 카테고리의 다른 글
| [리뷰] Discord Migrates Trillions of Messages from Cassandra to ScyllaDB (디스코드 스토리지 마이그레이션) (0) | 2024.08.17 |
|---|