ACID 프로퍼티란?
- 관계형 DB에서 트랜잭션은 반드시
atomic(원자적)
, consistent(일관적)
, isolated(격리된)
, durable(지속적)
이어야 한다.
- 이 프로퍼티들을
ACID
라고 한다.
ACID
프로퍼티들은 데이터베이스 트랜잭션이 안정적으로 처리되도록 해준다.
Atomicity(원자성)
- 원자성이란
트랜잭션이 전부 또는 아무것도 아님(all or nothing)
을 의미하는 용어이다.
트랜잭션이 커밋되면 데이터베이스는 트랜잭션을 성공적으로 끝내거나 트랜잭션을 롤백하여 데이터베이스를 원래 상태로 되돌리거나 둘 중 하나이다.
- 온라인 예약 애플리케이션의 경우
- 예약을 좌석 예약과 결제로 분리할 수 있다.
- 좌석 예약과 결제를 같은 트랜잭션에서 처리하여 예약이 완료되었다는 것을 트랜잭션이 보장할 수 있다.
- 좌석 예약이나 결제가 실패한다면 전체 트랜잭션은 롤백된다.
Consistency(일관성)
- 트랜잭션을 사용하는 장점 중 하나는
트랜잭션의 성공 여부에 상관 없이 데이터 무결성이 유지된다
는 것이다.
- 트랜잭션은 데이터베이스 엔진에 의해 허가된 방식으로만 관련 데이터를 변경할 수 있다.
- 이 점은 데이터의 일관성을 항상 유지해준다.
Isolation(격리성)
동시에 여러 트랜잭션이 실행되는 경우, 각각의 트랜잭션은 동시에 실행되는 다른 트랜잭션에 영향을 주지 않고 독립적으로 유지되어야 한다.
- 대부분의 DB 시스템에서 트랜잭션의 순서를 미리 알 수 없다.
- 대신 트랜잭션들은 병렬로 실행된다.
- 한 트랜잭션의 결과가 다른 트랜잭션의 결과에 영향을 미치지 않도록
데이터베이스 locking(잠금)
이 사용된다.
Durability(지속성)
지속성은 성공적으로 수행된 트랜잭션 커밋이 영원히 지속된다(유지된다)
는 것을 의미한다.
- 성공한 트랜잭션 커밋을 유지하기 위해 각각의 트랜잭션에 대한 항목이 데이터베이스 트랜잭션 로그에 추가된다.
참고