ACID vs BASE

Hyunjun Jang·2022년 1월 2일
0

ACID와 BASE 데이터베이스 모델 간의 근본적인 차이점은 아래와 같은 제한을 처리 하는것이 다르다.

  • ACID 모델은 일관된 시스템을 제공
  • BASE 모델은 고가용성을 제공

NoSQL 데이터베이스와 관련하여 데이터 일관성 모델은 때때로 관계형 데이터베이스에서 사용되는 모델과 현저하게 다를 수 있다.
가장 일반적인 두 가지 일관성 모델은 ACID 및 BASE로 알려져 있으며 둘 다 일관성 모델에는 장점과 단점이 있으며 어느 쪽도 항상 완벽하지는 않다.

ACID, BASE 모델의 특성에 대해서 알아보도록 한다.

ACID 모델

기존의 관계형 데이터베이스 모델은 ACID 속성과 함께 제공된다. ACID은 안전한 트랜잭션 수행 환경을 제공한다.

  • Atomicity (원자성)
    트랜잭션과 관련된 작업들이 모두 수행되었는지 아니면, 모두 실행이 안되었는지를 보장하는 능력.

    예 : 자금 이체는 성공할 수도 실패할 수도 있지만, 중간 단계까지 실행되고 실패하는 일은 없도록 하는 것.

  • Consistency (일관성)
    트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지하는 것.

    예 : 무결성 제약이 모든 계좌는 잔고가 있어야 한다면, 이를 위반하는 트랜잭션은 중단된다.

  • Isolation (고립성)
    트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것. 즉, 트랜잭션 밖에 있는 어떤 연산도 중간 단계의 데이터를 볼 수 없음을 의미한다.

    예 : 은행 관리자는 이체 작업을 하는 도중에 쿼리를 실행하더라도 특정 계좌간 이체하는 양 쪽을 볼 수 없다.

  • Durability (지속성)
    DBMS가 사용자에게 트랜잭션 커밋(commit) 응답을 했을 경우, 설사 데이터베이스 객체에 대한 해당 변경 사항이 디스크에 반영(flush) 되기 전에 시스템 장애가 발생하였더라도 해당 트랜잭션의 커밋은 보장 되어야 한다는 속성.

    DBMS는 트랜잭션의 지속성을 제공하기 위해 로그(log)라고 하는, 즉, 데이터베이스 객체의 갱신 작업에 대한 기록을 관리한다. 커밋된 트랜잭션에 의해 갱신된 내용이 디스크에 미처 반영되기 전에 시스템 장애가 발생하면, 시스템 재 구동 시에 로그를 판독하여 변경된 내용을 복구하게 된다.

BASE 모델


ACID와 대조적으로 가용성과 성능을 중시하는 특성을 가진 분산 시스템의 특성이다.

NoSQL 데이터베이스의 부상은 데이터를 조작하는 유연하고 유동적인 방법을 제공했습니다. 결과적으로 이러한 속성을 반영하여 새로운 데이터베이스 모델이 설계되었습니다.

약어 BASE는 ACID보다 약간 더 혼란스럽습니다. 그러나 그 뒤에 숨겨진 단어는 BASE 모델이 다른 방식을 암시합니다.

NoSQL 데이터베이스 세계에서 ACID 트랜잭션은 일부 데이터베이스가 확장성 및 복원력과 같은 다른 이점을 얻기 위해 즉각적인 일관성, 데이터 신선도 및 정확성에 대한 요구 사항을 완화했기 때문에 덜 유행합니다.

  • Basically Avaliable (기본적인 가용성)
    가용성을 중시, Optimistic Locking 및 큐 사용
    부분적인 고장은 있을 수 있으나, 나머지는 사용이 가능하다.

    다수의 실패에도 가용성을 보장, 다수의 스토리지에 복사본 저장 (주 서버가 안되더라도 백업 서버는 동작한다)

  • Soft State (소프트 상태)
    저장소는 쓰기 일관성이 있을 필요가 없으며 서로 다른 복제본이 항상 상호 일관성이 있을 필요도 없다.

    노드의 상태는 외부에서 전송된 정보를 통해 결정됨.
    분산 노드 간 업데이트는 데이터가 노드에 도달한 시점에 갱신.

  • Eventually Consistent (최종 일관성)
    저장소는 나중에 어떤 시점에서 일관성을 나타낸다. BASE 속성은 ACID가 보장하는 것보다 훨씬 느슨하지만 두 일관성 모델 간에 직접적인 일대일 매핑이 없다.

    일시적으로 일관성이 깨지는 상태가 되어도 일정시간 후에는 일관성이 있는 상태가 되는 성질

ACID VS BASE

속성BASEACID
적용분야NOSQLRDBMS
일관성측면약한 일관성강한 일관성
중점사항Availability‘Commit’에 집중
시스템측면성능에 초점엄격한 데이터관리
효율성쿼리디자인이 중요테이블 디자인이 중요

어떤 데이터베이스 모델이 더 나은가 하는 질문에 대한 직접적인 대답은 불가능 하다. 따라서 프로젝트의 모든 측면을 고려하여 결정해야 한다.

구조화된 특성을 감안할 때 ACID 호환 데이터베이스는 일관성, 예측 가능성 및 안정성이 필요한 프로젝트에 더 적합하다.

BASE 모델은 더 쉽게 확장할 수 있고 더 많은 유연성을 제공을 해준다. 그러나 BASE에는 모델의 한계를 다루는 방법을 알고 있는 개발자도 필요하다.

Reference

http://www.jidum.com/jidums/view.do?jidumId=906
https://phoenixnap.com/kb/acid-vs-base

profile
Let's grow together😊

0개의 댓글