내 잡다한 노트
DB에서 ACID 성질 본문
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 |