ACID란?

ACID란?

ACID란, Atomicity(원자성), Consistency(일관성), Isolation(고립성), Durability(지속성)의 앞글자를 딴 말로, 데이터베이스의 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리킨다.
여기서 트랜잭션이란, 데이터베이스의 상태를 변환시키는 작업(연산)을 의미한다.

즉 ACID란, 데이터베이스의 조작이 적절하게 수행되는것을 위한 성질을 말하는것이다. 이곳에서는 ACID의 각 요소를 SQL DB를 사용한다고 가정하고 그 예시를 설명하고자 한다.

Atomicity

  • 트랜잭션의 연산은 데이터베이스에 모두 반영되거나 전혀 반영되지 않아야한다.
  • 트랜잭션 내의 모든 명령은 완벽히 수행되어야 한다. 하나라도 오류가 발생하면 전부 취소되어야 한다.

둘은 같은 내용이다. Atomicity(원자성) 이라는 이름에 맞게, 트랜잭션은 쪼개져서 실행되면 안된다는 내용이다. - 즉, SQL의 경우 값을 조작하는 쿼리를 실행하여 성공했을때 해당 내용이 전부 반영되어야한다. - 또한, 실패하였을 때에는, 해당 쿼리가 전혀 반영되지 않아야 한다.

Consistency

  • 트랜잭션 실행 후 언제나 일관성 있는 데이터베이스 상태로 변환한다.
  • 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 후의 상태가 같아야한다.

가령 account 라는 테이블의 모든 데이터는 balance 안의 값이 있어야 한다면, 이를 위반하는 트랜잭션은 중단된다.

Isolation

  • 둘 이상의 트랜잭션이 실행중인 경우, 서로의 연산에 끼어들 수 없다.
  • 수행중인 트랜잭션은 완전히 완료될 때 까지 다른 트랜잭션에서 수행결과를 참조할 수 없다.

만약 "A"라는 데이터를 넣고 있으면, 해당 데이터를 수정하는 또다른 쿼리는 "A"라는 데이터를 넣은 이후에야 실행이 되어야 한다는 내용이다.
"A"라는 데이터를 넣는동안에 수정하는 명령이 그것을 가로채서는 안된다.

Durability

  • 성공적으로 완료된 트랜잭션의 결과는 영원히 반영되어야 한다.
  • 시스템에 문제가 생기더라도, DB 일관성 체크를 하더라도 유지가 되어야 한다.

즉, 내가 실행한 쿼리를 통해 반영된 내용은 DB 시스템이 고장나더라도 망가지면 안된다는것이다.

Comments

Popular Posts