daco 2024. 4. 17. 22:05

RDB에서 많이 사용되는 원칙이기에 정리하고자 합니다.

 

ACID

데이터베이스 관리 시스템 (DBMS)에서 트랜잭션의 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 보장하기 위한 속성들을 가리키는 약어입니다.

원자성

트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 것입니다.

즉, 트랜잭션은 실패하거나 전부 성공해야 한다는 것입니다.

예를 들어, 자금 이체는 성공할 수도 실패할 수도 있지만 보내는 쪽에서 돈을 빼 오는 작업만 성공하고 받는 쪽에 돈을 넣는 작업을 실패해서는 안된다는 것입니다.

일관성

트랜잭션 처리 전과 처리 후 데이터 모순이 없는 상태를 유지해야 한다는 것입니다.

예를 들어, 마이너스 통장이면 안되는 통장의 잔고가 0원일 때, 돈을 빼 오는 작업이 성공되어선 안된다는 것입니다.

고립성

트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 해야 한다는 것입니다.

이것은 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미합니다.

예를 들어, 20만원 입금과 30만원 입금이 동시에 일어났을 때, 20만원 입금 트랜잭션이 30만원 입금 트랜잭션보다 늦게 끝나서 20만원 입금 결과만 반영이 되어선 안된다는 것입니다.

지속성

성공적으로 수행된 트랜잭션은 영원히 반영되어야 한다는 것입니다.

예를 들어, 20만원 입금이 성공했다면, DB에 장애가 발생한 후 복구되었을 때도 20만원 입금 성공 결과는 반영되어 있어야 한다는 것입니다.