데이터베이스에서 ACID
- 원자성(Atomicity)
- 일관성(Consistency)
- 고립성(Isolation)
- 내구성(Durability)
이 네 가지 특성은 데이터베이스 시스템에서 데이터의 신뢰성과 무결성을 보장하는 데 필수적입니다.
트랜잭션
- 원자성: 이는 데이터베이스의 트랜잭션을 단일하고 분할 불가능한 작업 단위로 처리해야 함을 의미합니다. 트랜잭션 내에서 일어난 모든 변경 사항을 커밋해야 하거나, 아니면 전혀 커밋하지 않아야 합니다. 트랜잭션 중에 오류가 발생하면 시스템은 일관성을 유지하기 위해 해당 트랜잭션에서 일어난 모든 변경 사항을 롤백해야 합니다.
- 예: 은행 계좌간의 이체는 출금과 입금 모두 성공해야 트랜잭션이 완료됨
- 일관성: 이 특성은 트랜잭션이 발생하기 전과 후의 데이터가 일관되도록 보장합니다. 이는 데이터베이스가 항상 유효한 상태여야 함을 의미합니다. 만약 트랜잭션이 데이터베이스에서 정의된 제약 조건이나 규칙을 위반한다면, 시스템은 일관성을 유지하기 위해 해당 트랜잭션을 취소해야 합니다.
- 예: 은행 계좌의 잔고는 음수가 될수 없음 → 마이너스 통장 제외
- 고립성: 이 특성은 데이터베이스의 각 트랜잭션이 동시에 실행되는 다른 트랜잭션과 독립적임을 보장합니다. 즉, 트랜잭션은 병렬로 실행되더라도 직렬적으로 실행되는 것처럼 보여야 합니다. 고립 수준은 트랜잭션 간의 분리 정도를 정의합니다.
- 예: 한 은행 계좌에서 두 인출 트랜잭션이 진행시에는 남은 트랜잭션은 대기 상태가 되어야함
- 내구성: 이 특성은 한 번 커밋된 트랜잭션의 변경 사항이 시스템 장애가 발생하더라도 지속되어야 함을 보장합니다. 이는 시스템이 데이터베이스의 변경 사항을 영구적으로 저장하고, 하드웨어나 소프트웨어 장애로 인해 데이터가 손실되지 않도록 보장해야 함을 의미합니다.
- 예: 트랜잭션이 커밋되면 이슈로 인해 서비스가 다운되어도 커밋된 데이터는 유지되어야함
전반적으로, ACID 특성은 데이터베이스에서 데이터의 정확성과 일관성을 보장하는 데 필수적입니다.