본문 바로가기

개발자 강화/백엔드

[매일메일] ACID란? (BE.250207)

ACID

Atomicity 원자성, Consistency 일관성, Isolation 격리성, Durability 지속성

데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 의미함

 

각 속성의 의미

1. Acomicity 원자성

트랜잭션 내부 연산들이 부분적으로 실행되고, 중단되지 않는 것을 보장함

트랜잭션은 전체 성공과 전체 실패 중 한 가지만 수행함

계좌이체 트랜잭션은 A계좌 출금->B계좌 입금 연산으로 이루어져 있고, 입금이 실패하면 출금을 취소해야 함

 

2. Consistency 일관성

트랜잭션이 성공적으로 완료되면 일관성 있는 데이터베이스 상태로 유지되는 것을 보장함

데이터베이스에 정의된 규칙을 트랜잭션이 위반하는 경우(제약조건 위반) 해당 트랜잭션은 취소되어야 함

 

3. Isolation 격리성

동시에 실행되는 여러 트랜잭션이 서로 독립적임을 보장함

 

트랜잭션 사이에 다른 트랜잭션이 끼어들지 않는 것을 보장함

트랜잭션 밖에서 연산 중간 단계의 데이터를 볼 수 없음을 의미함

계좌 이체 작업에서 A 계좌의 잔고와 B 계좌 잔고 총합이 10,000원이면 특정 순간에는 총합이 10,000원이 아닐 수 있음

하지만, 다른 트랜잭션에서 볼 때는 잔고의 총합이 항상 10,000원이도록 보장해야함

 

4. Durability 지속성

성공적으로 수행된 트랜잭션은 영원히 반영됨을 보장함

시스템에 장애가 발생해도 성공적으로 트랜잭션의 결과는 항상 데이터베이스에 반영되어 있어야 함

전형적으로 트랜잭션은 로그로 남고, 로그가 저장되어야 트랜잭션이 성공되었다고 간주함

추후 장애가 발생한다면 로그를 활용해 데이터베이스를 회복함

 


 

 

출처

[1] 매일메일. ACID에 대해서 설명해주세요. 250207. 123번. https://maeil-mail.kr