CS Study

ACID란? 데이터베이스 트랜잭션의 4가지 속성

Database Transaction ACID SQL NoSQL

ACID란?

ACID는 데이터베이스 트랜잭션의 신뢰성을 보장하는 4가지 속성을 의미합니다. 데이터의 일관성(consistency)과 정확성(correctness)을 유지하는 데 중요한 개념입니다.

4가지 속성

속성 설명 예시
A (Atomicity, 원자성) 트랜잭션은 모두 수행되거나, 전혀 수행되지 않음 (All or Nothing) 은행 계좌 이체 시, A 계좌에서 돈이 빠져나가고 B 계좌에 입금이 되어야 함. 하나라도 실패하면 전체 롤백
C (Consistency, 일관성) 트랜잭션 수행 후에도 데이터의 무결성이 유지됨 A 계좌에서 100만 원을 이체했다면, B 계좌에는 정확히 100만 원이 추가되어야 함
I (Isolation, 고립성) 여러 트랜잭션이 동시에 실행되더라도 서로 간섭하지 않도록 보장 동시에 여러 사람이 같은 상품을 구매해도 재고 데이터가 꼬이지 않음
D (Durability, 지속성) 트랜잭션이 완료되면 시스템 장애가 발생해도 데이터가 유지됨 전기가 나가거나 서버가 다운되어도 완료된 거래 내역은 보존됨

예제: 은행 계좌 이체

  1. A 계좌에서 100만 원 출금
  2. B 계좌에 100만 원 입금
  3. 트랜잭션이 완료되면 변경 사항이 DB에 반영
  4. 중간에 장애가 발생하면 롤백 되어 원래 상태로 돌아감

이 과정에서 ACID 속성이 어떻게 적용되는지 보면:

  • 원자성: 출금과 입금이 함께 이루어져야 함 (한쪽만 성공하면 안 됨)
  • 일관성: 돈이 사라지거나 중복으로 입금되지 않음
  • 고립성: 동시에 여러 건의 이체가 진행되어도 문제없음
  • 지속성: 완료된 트랜잭션은 장애가 나도 유지됨

ACID vs BASE (NoSQL의 특징)

구분 ACID (SQL) BASE (NoSQL)
일관성 강력한 일관성 최종적 일관성 (Eventually Consistent)
트랜잭션 철저한 트랜잭션 관리 높은 가용성을 위해 일부 희생
속도 상대적으로 느림 빠른 데이터 처리 가능
사용 사례 금융, 전자상거래, ERP 빅데이터, SNS, 캐시 시스템

결론

  • ACID는 정확성과 신뢰성이 중요한 시스템에서 필수
  • BASE (NoSQL의 특징)는 확장성과 속도가 중요한 경우 적합
  • 보통 ACID(SQL)와 BASE(NoSQL)를 함께 사용해서 균형을 맞춤