ACID: 관계형 데이터베이스의 4원칙

[원본 링크]

ACID는 일반적인 관계형 데이터베이스에서 가장 중요시하는 4개의 트랜잭션 관련 원칙을 축약한 단어다.

순서대로 원자성(Aromicity), 일관성(Consistency), 고립성(Isolation), 지속성(Duration)을 뜻한다.

대충 정리해보자



Atomicity

원자성은 여러개의 작업을 하나의 원자적 단위로 묶어 처리할 수 있는지에 대한 부분이다.

하나로 묶인 원자적 작업은 5개의 작업으로 이루어져있더라도,

  1. 5개가 전부 성공
  2. 5개가 전부 실패
    의 2가지로만 실제 반영이 된다.

가령, 포인트를 사용해 물품을 구매하는 작업을 해야한다고 치자.

그럼 먼저 사용자의 포인트를 update로 감소시키고,
물품을 구매목록에 insert하든 해야 할 것이다.

근데 update 후에 문제가 생겨서 포인트만 까이고 구매가 되지 않는다면 어찌할것인가?

트랜잭션을 사용하면 아주 단순해진다. 그냥 그 작업을 하나로 묶어서 뭐가 문제가 생긴다면 다 무효로 해버리면 되는 것이다.
이것을 롤백(rollback)이라 한다.

그리고 성공한다면 그냥 전부다 반영하면 된다.
이게 커밋(commit)이다.



Consistency

일관성은, 트랜잭션 수행 전후로도 항상 일관된 데이터구조 및 제약을 가져야 한다는 말이다.



Isolation

고립성은 각 트랜잭션은 독립된 상태여야 한다는 것이다. A와 B 트랜잭션이 동시에 실행되더라도, 서로간에 영향을 주지 않아야 한다.



Duration

지속성은 적용된 상태가 계속해서 지속되어야 함을 의미한다.
트랜잭션이 한번 commit됐다면, 그 내용이 뜬금없이 날라가거나 하면 안된다.



참조
https://dev.to/princessanjana1996/acid-properties-in-databases-43aa
https://covenant.tistory.com/85