내 잡다한 노트

DB에서 ACID 성질 본문

DB

DB에서 ACID 성질

peanutwalnut 2024. 12. 9. 14:21

ACID 성질은 트랜잭션이 데이터 무결성을 보장하기 위해 따라야 할 4가지 핵심 속성을 의미.

 

1. Atomicity (원자성)

  • 트랜잭션에 포함된 작업은 모두 성공하거나 모두 실패해야 합니다.
  • 중간에 오류가 발생하면 트랜잭션은 실행되기 전 상태로 되돌아갑니다 (Rollback).
  • 예: 은행에서 계좌 A에서 B로 송금할 때, A의 돈이 빠져나갔지만 B에 입금되지 않으면 안 됩니다. 따라서 둘 중 하나라도 실패하면 전체 트랜잭션이 취소됩니다.

2. Consistency (일관성)

  • 트랜잭션 전후에 데이터베이스의 상태가 항상 일관된 상태를 유지해야 합니다.
  • 데이터베이스가 정의한 제약 조건(Constraints, 예: Primary Key, Foreign Key 등)을 위반하지 않아야 합니다.
  • 예: 계좌의 총 잔액이 트랜잭션 전후에 동일하게 유지되어야 합니다.

3. Isolation (격리성)

  • 여러 트랜잭션이 동시에 실행되더라도, 각 트랜잭션은 서로 간섭하지 않고 독립적으로 실행된 것처럼 보여야 합니다.
  • 격리 수준에 따라 다른 트랜잭션의 중간 결과를 볼 수 없게 하거나(완전 격리), 일부 볼 수 있게 허용하기도 합니다.
  • 격리 수준:
    • Read Uncommitted
    • Read Committed
    • Repeatable Read
    • Serializable (가장 강력한 격리 수준)
  • 예: 한 사용자가 상품의 재고를 확인하는 중에 다른 사용자가 상품 재고를 수정하더라도, 두 사용자 간의 작업이 충돌하지 않아야 합니다.

4. Durability (지속성)

  • 트랜잭션이 커밋(Commit)된 이후에는 시스템 장애나 예기치 않은 문제가 발생하더라도 데이터가 영구적으로 보존되어야 합니다.
  • 예: 은행에서 송금 처리가 완료된 후에 갑자기 시스템이 다운되더라도, 돈이 정상적으로 입금된 상태가 유지되어야 합니다.

ACID가 중요한 이유

ACID는 데이터베이스가 안정적이고 신뢰할 수 있는 데이터 처리를 보장하기 위한 필수 조건입니다. 특히 은행, 전자상거래, 의료 데이터와 같은 고가치 데이터를 다룰 때 매우 중요합니다.

그러나 NoSQL 데이터베이스는 일부 속성을 완화하거나 희생하여(특히 Consistency나 Isolation) 성능과 확장성을 높이는 경우가 많습니다. CAP 이론과 연관되어 설명되기도 합니다.

 

'DB' 카테고리의 다른 글

DB에서 Join 이란?  (0) 2024.12.09
데이터 정규화(Normalization)  (0) 2024.12.09
Cache의 갱신 방식  (0) 2024.12.09
트랜잭션(Transaction)  (1) 2024.12.09