항해 46일차
이전 글에서 트랜잭션에 대해서 찾아봤고 데이터베이스 트랜잭션은 ACID라는 특성을 가지고 있다.
트랜잭션을 정의하는 4가지 중대한 속성을 가르킨다.
원자성(Atomicity), 일관성(Consistency), 격리(Isolation), 영속성(Durability) 을 의미한다.
데이터베이스 작업에 이러한 ACID속성이 있다면 ACID트랜잭션이라 부르고 이런 작업을 적용하는 데이터 스토리지 시스템을 트랜잭션 시스템이라고 한다.
ACID 트랜잭션은 한 테이블의 읽기, 쓰기, 수정 작업이 각각 아래와 같은 속성을 가지고 있다고 보장해준다.
원자성(Atomicity) - 트랜잭션에 속한 각각의 문(데이터를 읽기, 쓰기, 업데이트 또는 삭제하기 위함)을 하나의 단위로 취급한다. 문 전체를 실행하거나 그 문의 어떤 부분도 실행하지 않는다. 이 속성이 있으면 스트리밍 데이터 소스가 스트리밍 중에 갑자기 오류를 일으키더라도 데이터 손실과 손상이 방지된다.
일관성(Consistency) - 트랜잭션이 테이블에 변경 사항을 적용할 때 미리 정의된 예측할 수 있는 방식만 취한다. 트랜잭션 일관성이 확보되면 데이터 손상이나 오류 때문에 테이블 무결성에 의도치 않은 결과가 생기지 않는다.
격리(Isolation) - 여러 사용자가 같은 테이블에서 모두 동시에 읽고 쓰기 작업을 할 때, 각각의 트랜잭션을 격리하면 동시 트랜잭션이 서로 방해하거나 영향을 미치지 않는다. 각각의 요청이 실제로는 모두 동시에 발생하더라도, 마치 하나씩 발생하는 것처럼 발생할 수 있다.
영속성(Durability) - 트랜잭션 실행으로 인해 데이터에 적용된 변경 사항이 저장되도록 보장한다. 시스템 오류가 발생해도 마찬가지다.