ACID란? 데이터베이스 트랜잭션의 4가지 속성
ACID란?
ACID는 데이터베이스 트랜잭션의 신뢰성을 보장하는 4가지 속성을 의미합니다. 데이터의 일관성(consistency)과 정확성(correctness)을 유지하는 데 중요한 개념입니다.
4가지 속성
| 속성 | 설명 | 예시 |
|---|---|---|
| A (Atomicity, 원자성) | 트랜잭션은 모두 수행되거나, 전혀 수행되지 않음 (All or Nothing) | 은행 계좌 이체 시, A 계좌에서 돈이 빠져나가고 B 계좌에 입금이 되어야 함. 하나라도 실패하면 전체 롤백 |
| C (Consistency, 일관성) | 트랜잭션 수행 후에도 데이터의 무결성이 유지됨 | A 계좌에서 100만 원을 이체했다면, B 계좌에는 정확히 100만 원이 추가되어야 함 |
| I (Isolation, 고립성) | 여러 트랜잭션이 동시에 실행되더라도 서로 간섭하지 않도록 보장 | 동시에 여러 사람이 같은 상품을 구매해도 재고 데이터가 꼬이지 않음 |
| D (Durability, 지속성) | 트랜잭션이 완료되면 시스템 장애가 발생해도 데이터가 유지됨 | 전기가 나가거나 서버가 다운되어도 완료된 거래 내역은 보존됨 |
예제: 은행 계좌 이체
- A 계좌에서 100만 원 출금
- B 계좌에 100만 원 입금
- 트랜잭션이 완료되면 변경 사항이 DB에 반영
- 중간에 장애가 발생하면 롤백 되어 원래 상태로 돌아감
이 과정에서 ACID 속성이 어떻게 적용되는지 보면:
- 원자성: 출금과 입금이 함께 이루어져야 함 (한쪽만 성공하면 안 됨)
- 일관성: 돈이 사라지거나 중복으로 입금되지 않음
- 고립성: 동시에 여러 건의 이체가 진행되어도 문제없음
- 지속성: 완료된 트랜잭션은 장애가 나도 유지됨
ACID vs BASE (NoSQL의 특징)
| 구분 | ACID (SQL) | BASE (NoSQL) |
|---|---|---|
| 일관성 | 강력한 일관성 | 최종적 일관성 (Eventually Consistent) |
| 트랜잭션 | 철저한 트랜잭션 관리 | 높은 가용성을 위해 일부 희생 |
| 속도 | 상대적으로 느림 | 빠른 데이터 처리 가능 |
| 사용 사례 | 금융, 전자상거래, ERP | 빅데이터, SNS, 캐시 시스템 |
결론
- ACID는 정확성과 신뢰성이 중요한 시스템에서 필수
- BASE (NoSQL의 특징)는 확장성과 속도가 중요한 경우 적합
- 보통 ACID(SQL)와 BASE(NoSQL)를 함께 사용해서 균형을 맞춤