ACID란 무엇인가.

Uhan33·2024년 1월 29일
0

TIL

목록 보기
19/72

오늘은 트랜잭션의 특징인 ACID에 대해 다뤄보려 한다.
그렇다면 우선 트랜잭션이 무엇인지부터 알아야 한다.
트랜잭션이 뭘까?

트랜잭션(Transaction)

트랜잭션(Transaction)은 작업의 완전성을 보장해주기 위해 사용되는 개념입니다. 특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해주는 기능이다.

트랜잭션을 사용하는 대표적인 이유는 작업의 단위를 하나의 쿼리에 종속하는 것이 아닌, 여러개의 작업(쿼리)을 묶어 하나의 작업 단위로 그룹화하여 처리하기 위함이다.

예시를 들어 계좌이체를 한다고 생각해보자.
우리는 1. 계좌이체를 위해 송금하는 고객의 계좌에서 금액을 차감하고, 2. 받는 사람의 계좌에 그 금액만큼 추가하는 로직을 만들었다.
그런데 아차차.. 1은 수행되었는데 오류로 인해 2가 수행이 안되었다면..?
송금하는 고객은 돈이 차감되었으나 받는사람은 받지도 못했다.
이러면 큰일난다.

그래서 트랜잭션이라는 개념을 도입한 것이다.
이 트랜잭션에는 특징이 있는데 이것이 바로 ACID이다.

ACID

ACID는 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 특징들을 나열해 놓은 개념이다.
이 특징은 4가지인데 아래와 같다.

  • 원자성(Atomicity)
  • 일관성(Consistency)
  • 격리성(Isolation)
  • 지속성(Durability)

원자성(Atomicity)

트랜잭션 내에서 실행되는 명령들을 하나의 묶음으로 처리하여, 내부에서 실행된 명령들이 전부 성공하거나, 아니면 모두 실패해야한다는 특징이다.
트랜잭션에서 실행되는 쿼리마다 하나의 작업 단위로 보지않고, 여러개의 작업들을 묶어 하나의 작업단위로 본다.

일관성(Consistency)

트랜잭션 내부에서 처리되는 데이터의 일관성을 유지해야하는 특징이다.
만약 작업이 성공할 경우 아무런 문제가 발생하지 않고, 실패하더라도 작업을 진행하던 도중 실패한 상태로 데이터를 방치하지 않는 특징이다.
트랜잭션 내의 데이터는 일관되어야하며, 에러가 발생하더라도 데이터의 상태가 일관성을 유지해야 한다.

격리성(Isolation)

트랜잭션이 실행 중인 경우 다른 트랜잭션에 의해 데이터가 변경되는 것을 방지하는 특징이다.
트랜잭션이 완전히 수행되거나 완전히 수행되지 않은 상태를 외부에서 참조할 수는 있지만, 트랜잭션의 중간 과정이나 중간 결과를 볼 수 없도록 하는 특징이다.

지속성(Durability)

지속성 혹은 영속성이라고 한다.
트랜잭션이 성공적으로 커밋된 후, 해당 트랜잭션에 의해 생성 또는 수정된 데이터가 어떠한 상황에서도 보존되는 특징이다.

다시 말해, 트랜잭션이 완료되면 결과는 데이터베이스에 영구적으로 저장되며, 이후 시스템에 어떠한 문제가 생기더라도 데이터는 손상되지 않는다.

지속성(Durability)은 트랜잭션의 안전성을 보장하며, 데이터 손실 없이 시스템의 안정성을 유지하는데 중요한 역할을 담당한다.

마치며..

오늘은 ACID에 대해 알아보았다.
데이터베이스에서 중요한 개념이다.

0개의 댓글