cs/ODOQ

[ODOQ] ACID란?(데이터베이스)

icodesiuuuu 2025. 1. 16. 19:01

[One Day One Question]

ACID에 대해서 설명해 주세요.


 ACID는 데이터베이스 관리 시스템(DBMS)에서 트랜잭션의 신뢰성과 안정성을 보장하기 위해 정의된 네 가지 속성을 나타냅니다. ACID는 각각 Atomicity, Consistency, Isolation, Durability의 약자입니다.

 

1. Atomicity (원자성)

  • 설명: 트랜잭션이 모두 실행되거나, 전혀 실행되지 않아야 함을 보장합니다.
  • 즉, 트랜잭션 내의 작업이 일부만 실행되는 일은 없고, 실패 시 모든 작업이 롤백됩니다.
  • 예: 은행에서 계좌 A에서 B로 돈을 이체할 때, A에서 돈이 빠져나갔지만 B에 입금되지 않으면 안 됩니다. 트랜잭션은 둘 다 완료하거나 둘 다 실행하지 않아야 합니다.

 

2. Consistency (일관성)

  • 설명: 트랜잭션이 완료된 후 데이터베이스는 항상 일관된 상태로 유지되어야 합니다.
  • 데이터의 무결성을 보장하며, 트랜잭션 수행 전과 후에 데이터가 DB 규칙을 만족해야 합니다.
  • 예: 데이터베이스에 제약 조건(예: 외래키 제약)이 있다면, 트랜잭션 수행 후에도 이 제약 조건이 깨지지 않아야 합니다.

 

3. Isolation (고립성)

  • 설명: 여러 트랜잭션이 동시에 실행될 때 서로 간섭하지 않고 독립적으로 실행되어야 함을 보장합니다.
  • 하나의 트랜잭션이 완료되기 전에 다른 트랜잭션이 그 작업 결과를 볼 수 없습니다.
  • 예: A 사용자가 상품 재고를 수정하는 동안, B 사용자가 같은 상품의 재고를 조회하면 변경 사항이 확정되기 전의 데이터를 보게 됩니다.

 

4. Durability (지속성)

  • 설명: 트랜잭션이 완료되면 그 결과가 영구적으로 저장되어야 합니다. 서버가 다운되거나 문제가 발생해도 데이터는 손실되지 않습니다.
  • 데이터를 디스크에 영구적으로 저장하거나 로그를 사용하여 이를 보장합니다.
  • 예: 은행 이체 트랜잭션이 성공적으로 완료되었다면, 시스템이 재부팅되더라도 그 결과는 유지됩니다.

 

ACID의 중요성

  • ACID 속성은 데이터베이스의 신뢰성과 무결성을 보장하는 핵심 원칙입니다.
  • 이를 통해 데이터 손상, 충돌, 불일치 등이 발생하지 않도록 예방할 수 있습니다.

 

현대 DBMS에서의 적용

  • 많은 DBMS는 트랜잭션 관리와 로그를 활용하여 ACID 속성을 구현합니다(예: MySQL, PostgreSQL, Oracle 등).
  • 다만, 분산 데이터베이스에서는 ACID를 완벽히 구현하기 어려운 경우도 있어, BASE(Basically Available, Soft state, Eventually consistent) 모델을 사용하는 경우도 있습니다.