ACID: 관계형 데이터베이스의 4원칙
ACID는 일반적인 관계형 데이터베이스에서 가장 중요시하는 4개의 트랜잭션 관련 원칙을 축약한 단어다.
순서대로 원자성(Aromicity), 일관성(Consistency), 고립성(Isolation), 지속성(Duration)을 뜻한다.
대충 정리해보자
Atomicity
원자성은 여러개의 작업을 하나의 원자적 단위로 묶어 처리할 수 있는지에 대한 부분이다.
하나로 묶인 원자적 작업은 5개의 작업으로 이루어져있더라도,
- 5개가 전부 성공
- 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