Post

[DB] ACID와 BASE

[DB] ACID와 BASD

DB 트랜잭션 처리를 위한 개념이다.

ACID

  • 안전하고 신뢰 가능한 트랜잭션을 보장한다.

원칙

Atomicity (원자성)

  • 단일 트랜잭션은 단계가 완료 되거나 원래 상태로 돌아가야 한다. (execute or abort)
  • 트랜잭션 일부만 실패해도 데이터는 변경되지 않는다.

Consistency (일관성)

  • 여러 사용자가 동시에 유사한 작업을 수행하더라도 모든 사용자는 일관된 데이터를 유지한다.
    • 은행 계좌 이체할 때와 비슷하다고 생각하면 된다.

Isolation (격리성)

  • 새 트랜잭션은 이전 트랜잭션이 완료될 때까지 기다린다.
  • 트랜잭션이 서로 간섭하지 않도록 보장해 순차적으로 실행되는 것처럼 보인다.

Durability (내구)

  • 시스템에 오류가 생겨도 commit된 모든 기록은 DB에 유지한다.

BASE

원칙

Basically Available

  • 사용자가 언제든 DB에 동시에 접근할 수 있다.
    • 이전 사용자가 완료될 때까지 기다릴 필요가 없다.

Soft-state

  • 데이터가 시간 변화에 따라 변할 수 있는 임시 상태를 가진다.
  • 모든 트랜잭션이 완료되면 확정된다.
    • 카페에 글을 쓸 때 임시 저장을 하면 남들은 볼 수 없지만, 저장을 누르면 남들에게도 보이는 것과 비슷하다.

Eventually consistent

  • 동시에 업데이트 됐을 때 일관성이 유지된다.
  • 중간 사용자에게 보이는 값이 다를지라도 나중에 병합돼 모두 같은 값을 받게 된다.

차이점

확장

ACID

  • 일관성에 초점을 맞추므로 규모를 조정하기 어렵다.

BASE

  • 엄격한 일관성을 유지할 필요가 없어 수평적으로 규모 조정이 가능하다.

유연성

ACID

  • 데이터 처리할 때 유연성이 떨어진다.
  • 네트워크 장애가 발생하면 일부 어플리케이션에 대한 접근이 제한될 수 있다.

BASE

  • 어플리케이션이 레코드를 사용할 수 있게 되면 레코드를 수정할 수 있도록 할 수 있어 유연성이 높다.

ACID 데이터베이스 대 BASE 데이터베이스 - 데이터베이스 간의 차이점 - AWS (amazon.com)

This post is licensed under CC BY 4.0 by the author.