728x90
반응형

가끔 NoSQL 데이터베이스를 사용할 때, 데이터 일관성 모델이 관계형 데이터베이스에서 사용되는 모델과 꽤 다를 수 있어요. 심지어 다른 NoSQL 저장소와도 차이가 크죠.

가장 흔한 두 가지 일관성 모델은 ACID와 BASE라는 약어로 불려요. 마치 최후의 승자를 가리는 싸움처럼 서로 경쟁하는 경우가 많지만, 사실 두 모델 모두 장단점이 있고, 상황에 따라 완벽하게 들어맞는 모델은 없을 수 있어요.

이번 블로그 포스팅에서는 ACID와 BASE 모델에 대한 인사이트를 제공하고, 어떤 일관성 모델이 여러분에게 가장 적합한지 결정하는 데 도움을 주려고 해요.

두 데이터베이스 일관성 모델의 장단점을 자세히 한번 살펴볼까요?

ACID 모델

많은 개발자분들이 이미 ACID 트랜잭션에 익숙하실 텐데요. 특히 관계형 데이터베이스를 사용해 보셨다면 더 그럴 거예요. ACID 일관성 모델은 오랫동안 표준으로 자리 잡았으니까요.

ACID의 주요 보장은 데이터를 안전하게 운영할 수 있는 환경을 제공한다는 점이에요. ACID 약어는 다음을 의미합니다.

  • 원자성 (Atomicity): 트랜잭션 내의 모든 작업이 성공하거나, 모든 작업이 롤백돼요.
  • 일관성 (Consistency): 트랜잭션 완료 또는 롤백 시, 데이터베이스는 항상 일관된 상태를 유지해요. 부분 업데이트나 논리적 손상은 절대 없죠.
  • 격리성 (Isolation): 트랜잭션끼리 서로 경합하지 않도록 보장해요. 데이터에 대한 액세스 충돌이 발생하면, 데이터베이스가 트랜잭션들이 순차적으로 실행되는 것처럼 보이도록 조정해 준답니다.
  • 지속성 (Durability): 트랜잭션 적용 결과는 실패하더라도 영구적으로 보존돼요.

ACID 데이터베이스 사용 사례

ACID 호환 데이터베이스는 데이터 저장이 엄격하게 규제되는 금융, 의료, 정부 행정과 같은 산업에서 널리 사용되고 있어요. 예를 들어, 은행 고객은 ACID 준수 데이터베이스가 항상 최신 데이터를 검색하기 때문에 계좌 잔액이 잘못 표시될 걱정을 할 필요가 없죠.

많은 중소기업들도 사용 편의성과 안정성을 위해 ACID 호환 데이터베이스를 사용해요. 이런 조직에서 처리하는 데이터 규모가 상대적으로 작기 때문에, ACID 규정 준수로 인해 발생하는 오버헤드 (예: 긴 JOIN을 처리하는 데 걸리는 시간)를 크게 신경 쓰지 않아도 되거든요.

어떤 데이터베이스가 ACID를 사용하나요?

널리 사용되는 ACID 호환 데이터베이스로는 모든 SQL 엔진(예: Oracle, MySQL, PostgreSQL 및 MS SQL 서버), Neo4j, MongoDB 등이 있어요. 일반적으로 데이터베이스 웹사이트에서 ACID 준수에 대한 설명을 찾아보면 해당 데이터베이스가 ACID를 준수하는지 확인할 수 있답니다.

ACID 속성은 트랜잭션이 완료되면 해당 데이터가 디스크에서 일관성 있고 (기술 용어로는 쓰기 일관성이라고 해요), 안정적이며 여러 개별 메모리 위치를 포함할 수 있다는 것을 의미해요.

쓰기 일관성은 애플리케이션 개발자에게 좋은 기능이지만, 대부분의 사용 사례에서는 무거운 패턴인 정교한 잠금도 필요로 해요.

NoSQL 기술의 경우, 대부분의 Graph Database (를 포함해서요!)는 ACID 일관성 모델을 사용해서 데이터가 안전하고 일관되게 저장되도록 하죠.

BASE 모델

많은 도메인과 사용 사례에서 ACID 트랜잭션은 도메인이 실제로 요구하는 것보다 훨씬 더 비관적이에요 (데이터 안전에 대해 지나치게 걱정하는 거죠).

성능이 대규모 샤딩 및 MPP(수평 확장)에 의존하는 일부 NoSQL 데이터베이스에서는 ACID 준수 트랜잭션이 수십 개의 인스턴스에 걸쳐 있을 때 비용이 엄청나게 많이 들 수 있어요 (예: 2단계 커밋/2PC 프로토콜의 오버헤드). 결과적으로 성능을 위해 수평적 확장에 크게 의존하는 NoSQL 데이터베이스는 BASE 트랜잭션 모델을 사용하는 경우가 많죠.

(특히 .NET 기반 RavenDB는 ACID 트랜잭션을 지원하는 종합 매장의 추세를 거스르네요.)

BASE 약어가 어떻게 분류되는지 한번 살펴볼까요?

  • 기본적으로 사용 가능(Basically Available): 데이터베이스가 대부분의 시간 동안 작동하는 것 같아요.
  • 소프트 상태(Soft State): 저장소는 쓰기 일관성을 가질 필요가 없고, 서로 다른 복제본이 항상 상호 일관성을 가질 필요도 없어요.
  • 최종 일관성(Eventually Consistent): 저장소는 나중에 어떤 시점에서 일관성을 나타낼 거예요 (예: 읽기 시 지연).

BASE 데이터베이스 사용 사례

BASE 호환 데이터베이스는 매일 수 테라바이트 이상의 데이터를 처리하는 상대적으로 규제되지 않은 공간의 대기업에서 거의 독점적으로 사용돼요. 이러한 회사의 규모가 크다는 건 ACID 규정 준수로 인한 오버헤드가 운영에 명백히 해를 끼치기 시작하는 지점에 도달했다는 의미죠. 따라서 그들은 그러한 오버헤드가 없는 대체 모델을 찾게 돼요. 실제로 DynamoDB(Amazon) 및 BigTable(Google)과 같은 많은 BASE 호환 데이터베이스는 바로 이 문제를 해결하기 위해 이들 회사의 프로젝트로 시작되었어요.

소규모 조직을 위한 BASE 호환 데이터베이스에 대한 일부 틈새 사용 사례도 있을 수 있어요. 예를 들어, 처리하는 데이터의 양이 빠르게 증가할 것으로 예측하는 스타트업에서는 잠재적인 마이그레이션 프로세스를 피하기 위해 BASE 호환 데이터베이스를 사용하려고 할 수도 있겠죠.

어떤 데이터베이스가 BASE를 사용하나요?

널리 사용되는 BASE 호환 데이터베이스에는 BigTable, DynamoDB, Cassandra 및 Hadoop이 포함돼요. 웹사이트를 둘러보면 특정 데이터베이스가 BASE와 호환되는지 여부를 알 수 있는 경우가 많아요.

BASE 데이터 저장소는 가용성(확장에 중요하니까요!)을 중요하게 생각하지만, 쓰기 시 복제된 데이터의 일관성을 보장하지는 않아요. 전반적으로 BASE 일관성 모델은 ACID보다 덜 엄격한 보증을 제공해요. 즉, 데이터는 읽기 시 (예: Riak) 또는 항상 일관되지만 특정 처리된 과거 스냅샷 (예: Datomic)으로 제공될 수 있다는 거죠.

MPP NoSQL 사용 사례 외에도 BASE 모델을 사용하는 다른 저장소는 기본 기록 시스템으로 간주되지 않으며 원본 소스에서 쉽게 다시 구축할 수 있는 저장소에요. 여기에는 종합 매장, 키-값 저장소 (종종 데이터를 캐시하는 데 사용됨) 및 경우에 따라 문서 저장소가 포함돼요.

ACID와 BASE 절충안 탐색

애플리케이션에 ACID와 BASE 일관성 모델이 필요한지 여부에 대한 정답은 없어요. 개발자와 데이터 설계자는 단지 추세나 이전에 사용된 모델을 기준으로 하지 않고, 사례별로 데이터 일관성 장단점을 선택해야 해요.

BASE의 느슨한 일관성을 고려할 때, 개발자는 애플리케이션에 BASE 저장소를 선택하는 경우 일관된 데이터에 대해 더 잘 알고 엄격해야 해요. 선택한 종합 매장의 BASE 동작을 숙지하고 이러한 제약 조건 내에서 작업하는 것이 중요하죠.

반면, BASE 제한 사항을 계획하는 것은 때때로 ACID 트랜잭션의 단순성과 비교할 때 큰 단점이 될 수 있어요. 완전한 ACID 데이터베이스는 데이터 신뢰성과 일관성이 필수적인 사용 사례 (뱅킹, 누구나?)에 완벽하게 적합하죠.

ACID 호환 데이터베이스를 사용하기로 결정했다면, Graph Database를 선택할 수 있어요. 이러한 유형의 데이터베이스는 관계 모델링에 적합하며 SQL과 같은 기존 RDBMS 시스템에 비해 매우 빠르답니다.

Knowledge Graph 구축을 고려하고 계신가요?
다운로드개발자 가이드: Knowledge Graph 구축 방법자신있게 구축을 시작하기 위해 알아야 할 모든 것을 단계별로 안내합니다.


  • 잠깐, 그래프가 뭐냐구요?
  • Graph Database가 미래인 이유
  • 데이터 모델링의 기본
  • 피해야 할 데이터 모델링 함정
  • Database 쿼리 언어가 왜 중요할까요? (생각보다 훨씬 더!)
  • 명령형 vs 선언형 쿼리 언어: 뭐가 다를까요?
  • 그래프 이론과 예측 모델링
  • NoSQL Database가 필요한 이유
  • Aggregate Stores 둘러보기
  • 네이티브 그래프 기술 vs 비-네이티브 그래프 기술
  • ACID
  • Aggregate Stores
  • base
  • NoSQL
  • NoSQL 데이터베이스

에이치시스템즈의 LogTree는 Neo4j 기반 GraphRAG 플랫폼으로, 데이터를 자동으로 지식그래프화하고 자연어 질의로 즉시 답을 제공합니다.

👉 에이치시스템즈 홈페이지

728x90
반응형

+ Recent posts