본문 바로가기
개발/MSA

[MSA] 데이터 베이스 ACID와 BASE 비교

by 궁즉변 변즉통 통즉구 2024. 8. 11.
반응형

ACID 트랜잭션

먼저 ACID 트랜잰션에 대한 이해가 명확히 되어 있어야 한다. ACID 트랜잭션에 대한 이해없이 분산 트랜잭션에 대한 트레이드오프 분석은 불가능하다.

  • 원자성(Actomicity): 트랜잭션 범위 내의 작업들은 모두 커밋되거나 모두 롤백되어야 함, 모두 한 덩어리로 작업이 되어야 함
  • 일관성(Consistency): 트랜잰션 범위 내에서는 데이터베이스의 일관성 유지, 무결성 제약조건 유지
  • 격리성(Isolation): 개별 트랜잭션이 격리되서 커밋 전까지 서로 영향을 주지 않음
  • 내구성(Durability): 트랜잭션 실행으로 인한 데이터에 대한 영구 보존

여러 서비스에 분산된 트랜잭션 처리는 ACID 지원이 불가능하다. 개별 서비스 단위의 ACID만 지원 가능하다.
분산 트랜잭션에서는 ACID 대신 BASE를 지원한다.

 

 

BASE(Basic Availability, Soft state, Eventual consistency)

  • 기본 가용성(Basic Availability)
    • 사용자가 언제든 데이터베이스에 동시에 액세스할 수 있음을 의미(가용성을 중시). 사용자가 레코드를 업데이트하기 위해 다른 사용자가 거래를 완료할 때까지 기다릴 필요가 없음. 예를 들어 전자 상거래 플랫폼에서 트래픽이 갑자기 급증하는 경우 시스템은 제품 목록 제공 및 주문 수락을 우선시할 수 있고, 재고 수량 업데이트가 약간 지연되더라도 사용자는 계속해서 항목을 체크아웃할 수 있게 됨
  • 소프트 상태(Soft state)
    • 외부 트리거 또는 입력이 없더라도, 데이터가 시간 경과에 따라 변할 수 있는 일시적 상태 또는 임시 상태를 가질 수 있다는 개념. 여러 애플리케이션이 동시에 레코드를 업데이트할 때의 레코드의 전환 상태를 설명. 레코드 값은 모든 트랜잭션이 완료된 후에만 최종적으로 확정. 예를 들어 사용자가 소셜 미디어 게시물을 편집하는 경우 변경 사항이 다른 사용자에게 즉시 표시되지 않을 수 있지만 나중에 사용자가 트리거하지 않았더라도 게시물이 저절로 업데이트 됨(이전 변경 사항 반영).
  • 최종 일관성(Eventual consistency)
    • 모든 동시 업데이트가 최종 완료되었을 때 레코드의 일관성이 유지된다는 것을 의미. 이 시점에 레코드를 쿼리하는 애플리케이션은 동일한 값을 얻게 됨. 여러 사용자가 동시에 문서를 편집할 수 있는 분산 문서 편집 시스템을 예로 들어 보면, 사용자 A와 사용자 B가 문서의 동일한 섹션을 동시에 편집하는 경우, 변경 내용이 전파되고 동기화될 때까지 로컬 사본이 일시적으로 서로 달라질 수 있지만 시간이 지남에 따라 시스템은 여러 사용자가 변경한 내용을 전파하고 병합하여 최종 일관성을 보장.

 

데이터베이스 CAP(Consistency, Availability, Partition tolerance) 이론에 따라 데이터베이스는 일관성, 가용성, 분할 허용성이라는 3가지 특성 중 2가지만을 보장할 수 있다. ACID, BASE 데이터베이스 모두 분할 허용성을 제공함으로, 높은 일관성과 가용성을 모두 제공을 할 수 있는 없다. 예를들어, SQL 데이터베이스는 ACID 모델을 기반으로 구조화되어 CP에 포커스가 맞춰져있고, NoSQL 데이터베이스 같은 경우 BASE 기반으로 구조화되어 AP에 포커스가 맞춰진 특징이 있다고 볼 수 있다. 

 

 

ACID와 BASE 비교

  ACID BASE
확장 가능  수직적으로 규모를 조정  수평적으로 규모를 조정
유연성  유연성이 떨어짐
 처리 시 다른 애플리케이션의 특정 레코드를 차단
 더 유연함
 여러 애플리케이션이 동일한 레코드를 동시에 업데이트 가능
성능  대용량 데이터를 처리할 때는 성능이 저하  높은 처리량으로 대용량의 비정형 데이터를 처리 가능 
동기화  동기화 시 지연 시간이 늘어남  데이터베이스 수준에서 동기화가 이루어지지 않음

 

관련글:

 

[MSA] 분산 트랜잭션 최종 일관성(Eventual Consistency) 구현 방법 비교

MSA에서 서비스의 성능, 가용성, 유연성 등의 이유로 강력한 동기화 대신 최종 일관성(Eventual consistency)이라는 방법으로 데이터를 동기화하는 방법을 많이 사용한다. 최종 일관성을 구현하는 패턴

happy-jjang-a.tistory.com

 

반응형

댓글