본문 바로가기

ComputerScience/Database

[Database] ACID, BASE 원칙

이미지 출처: https://www.linkedin.com/pulse/acid-vs-base-database-properties-rudra-garnaik

ACID

  • ACID는 데이터베이스 트랜잭션에서 보장해야 하는 네 가지 주요 속성을 나타내는 약어
  • 트랜잭션은 데이터베이스에서 하나의 작업 단위를 말함. (자세한 내용은 여기에)

원자성(Atomicity)

  • 트랜잭션 내의 모든 작업이 완료되거나, 아니면 전혀 실행되지 않아야 함을 의미
  • 즉, 트랜잭션은 모두 성공하거나 실패.
  • 중간에 하나라도 SQL문이 실패하면 지금까지의 작업을 모두 취소하여 Rollback 수행
  • 이 속성은 부분적으로 완료된 트랜잭션이 데이터베이스를 일관성 없게 만드는 것을 방지
  • DBMS는 트랜잭션 내의 모든 연산이 완전히 수행되거나, 또는 전혀 수행되지 않도록 보장
  • 개발자는 언제 Commit하고, 언제 rollback 할지를 정하는 책임이 있음.

일관성(Consistency)

  • 트랜잭션이 성공적으로 완료된 후에 데이터베이스가 일관된 상태를 유지해야 함을 의미
  • 즉, 트랜잭션 시작 전과 후에 모든 비즈니스 규칙이 유효하게 유지되어야 함 (constraints, trigger)
  • DBMS는 트랜잭션이 데이터베이스를 일관된 상태에서 다른 일관된 상태로만 변경할 수 있도록 보장
  • 규칙을 위반했는지는 DBMS가 commit 전에 확인하고 알려준다.
  • 개발자는 application 관점에서 transaction이 consistent하게 동작하는지 확인할 책임이 있음.

고립성(Isolation)

  • 동시에 수행되는 트랜잭션은 서로에게 영향을 미치지 않아야 함을 의미
  • 즉, 트랜잭션은 독립적으로 실행되어야 하며, 동시에 실행되는 다른 트랜잭션의 중간 상태를 볼 수 없어야 함
  • DBMS는 동시에 수행되는 트랜잭션들이 서로 영향을 미치지 않도록 보장하고, 이를 위해 DBMS는 잠금(locking), 버전 관리(versioning), 직렬화(serialization) 등의 기능을 사용하여 동시에 발생하는 트랜잭션들 사이에서 데이터의 접근을 조정
  • 개발자는 Isolation level중에 어떤 level로 transaction을 동작시킬지 설정해야함
  • Concurrency control 을 잘해야 성능에 영향을 미치지 않고 여러 transaction을 다룰 수 있음

지속성(Durability)

  • 성공적으로 완료된 트랜잭션의 결과는 영구적이어야 함을 의미
  • 영구적으로 저장한다 -> 비휘발성 메모리(HDD, SDD ...)에 저장한다.
  • 즉, 시스템이 충돌하거나 재시작되더라도 트랜잭션의 결과는 데이터베이스에 안전하게 저장되어야 함
  • DBMS는 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 데이터베이스에 저장됨. 이를 위해 DBMS는 트랜잭션의 결과를 디스크 같은 영구 저장 매체(비휘발성 메모리)에 즉시 기록하고 트랜잭션 로그를 사용하여 시스템 장애 발생 시 복구하는 데 사용

하지만 NoSQL 데이터베이스는 대량의 데이터를 빠르게 처리하고 분산시스템에서 운영할 수 있는 능력이 필요한 다른 종류의 애플리케이션을 위해 설계되었기 때문에 이러한 시스템에서는 데이터의 일관성 보장보다는 가용성과 분할 허용성이 더 중요한 경우가 많다.
 
이런 이유로 NoSQL 데이터베이스는 대개 ACID 원칙을 완전히 따르지 않고, 대신 BASE(Basically Available, Soft state, Eventual consistency)라는 다른 원칙을 따르는 경향이 있다.

BASE

  1. 기본적으로 사용 가능(BAsically Available): 시스템은 항상 사용 가능한 상태를 유지하려고 함.
    즉, 시스템의 일부분이 실패하더라도 전체 시스템이 계속 작동
    이를 통해 고가용성을 보장
  2. 소프트 상태(Soft state): 시스템의 상태는 입력 없이도 변할 수 있음
    이는 네트워크 지연, 장애 등으로 인해 모든 노드가 동시에 같은 정보를 갖지 않을 수 있음을 인정하는 것
  3. 최종 일관성(Eventual consistency): 시스템은 일정 시간이 지나면(즉, 아무런 새로운 업데이트가 없는 경우) 일관성을 달성하게 됩니다. 즉, 모든 업데이트가 결국에는 모든 노드에 반영될 것이라는 보장

참고 자료

https://www.linkedin.com/pulse/acid-vs-base-database-properties-rudra-garnaik

 

ACID Vs. BASE - Database Properties

Relational databases are designed with reliability and consistency at their core. The engineers who developed them focused on a transactional model that ensures that the four principles of the ACID model will always be preserved.

www.linkedin.com