RDB와 NoSQL의 구조·일관성·확장성 비교
RDB와 NoSQL의 데이터 모델, 분산 처리, CAP 특성, ACID·BASE와 활용 환경을 비교해 저장소 선택 기준을 정리한다.
2026-08-14 · 최초 발행 2025-08-10
관계 모델과 유연한 데이터 모델의 차이
RDB는 테이블인 Relation을 정의하고 테이블 사이의 관계를 중심으로 데이터를 다루는 데이터베이스 모델이다. 데이터는 행(row)과 열(column)로 저장하며, 구조는 사전에 정한 고정 스키마를 따른다. 데이터 조작에는 SQL(Structured Query Language)을 사용한다.
NoSQL은 Key와 Value를 기반으로 데이터를 분산 서버에 복제하며 단절 내성(Partition Tolerance)에 초점을 둔 데이터베이스 구조다. 키-값 쌍, 문서, 열 지향, 그래프처럼 여러 데이터 모델을 수용할 수 있고 스키마도 유연하다. 대규모 분산 환경에서 수평 확장을 제공하며, 접근은 대부분 API 기반으로 이뤄진다.
같은 데이터를 여러 서버에서 다루는 방식
RDB는 RAC(Real Application Clusters) 같은 구성으로 여러 서버가 동일 데이터베이스에 접근할 수 있다. 하드웨어 성능을 높여 처리량을 키우는 수직적 확장(Scale-up)에 더 적합하며, 트랜잭션으로 강한 데이터 일관성을 보장한다. Oracle RAC와 MySQL Cluster가 사례다.
NoSQL은 샤딩(Sharding)과 파티셔닝으로 데이터를 여러 서버에 나눠 저장한다. 서버를 추가해 용량과 처리량을 늘리는 수평적 확장(Scale-out)에 최적화되어 있으며, 여러 노드에 데이터를 복제해 가용성을 확보한다. Cassandra의 링 구조와 MongoDB의 샤딩이 대표적인 사례다.
CAP 관점에서 보는 선택 기준
CAP 이론은 분산 시스템이 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance)을 동시에 만족할 수 없다는 설명 틀이다.
RDB는 일반적으로 CA(Consistency + Availability) 유형으로 분류된다. 트랜잭션으로 강한 일관성을 제공하고 클러스터링 기술로 고가용성을 지원하지만, 네트워크 분할 상황에 대한 대응은 제한적이다.
NoSQL은 CP(Consistency + Partition Tolerance) 또는 AP(Availability + Partition Tolerance) 형태를 취한다. MongoDB와 HBase 같은 CP 시스템은 일관성을 우선하며, Cassandra와 CouchDB 같은 AP 시스템은 가용성을 우선한다. 네트워크 분할 상황에서도 계속 동작할 수 있다는 점이 특징이다.
경합을 다루는 방법과 트랜잭션 모델
RDB에서는 SQL의 선언적 쿼리로 데이터에 접근한다. 경합 처리는 주로 MVCC(Multi-Version Concurrency Control)를 사용한다. 데이터 변경 때 새 버전을 만들어 읽기 작업의 방해를 줄이고, 트랜잭션 격리 수준으로 일관성과 동시성을 조절한다. 행 단위와 테이블 단위 잠금도 제공한다.
NoSQL은 전용 API나 간소화한 쿼리 언어를 통해 접근한다. 샤딩으로 데이터를 논리적 샤드로 나누고, 파티셔닝 기준에 따라 분산해 경합 자체를 피하는 방식이 중심이다. 일관성 모델에서는 결과적 일관성(Eventual Consistency)을 허용할 수 있다.
RDB의 트랜잭션 모델은 ACID 속성으로 설명된다.
- 원자성(Atomicity): 트랜잭션의 모든 연산은 모두 수행되거나 전혀 수행되지 않는다.
- 일관성(Consistency): 트랜잭션 전후 데이터베이스 상태는 일관적으로 유지된다.
- 격리성(Isolation): 동시에 실행되는 트랜잭션은 서로 영향을 미치지 않는다.
- 지속성(Durability): 성공적으로 끝난 트랜잭션 결과는 영구적으로 반영된다.
NoSQL의 BASE 속성은 기본 가용성(Basically Available), 소프트 상태(Soft state), 결과적 일관성(Eventually consistent)으로 구성된다. 시스템은 항상 응답할 수 있고, 상태는 시간에 따라 변할 수 있으며, 시간이 지나면 데이터가 일관된 상태로 수렴한다.
데이터 성격에 맞는 저장소
일관성과 트랜잭션이 중요한 업무 시스템, 구조화된 데이터와 복잡한 관계를 가진 데이터에는 RDB가 적합하다. 금융 시스템, ERP, 전통적인 비즈니스 애플리케이션이 여기에 속하며 Oracle, MS SQL Server, MySQL, PostgreSQL이 대표 제품이다.
NoSQL은 수천, 수만 대로 구성된 클라우드 환경, 비구조화·반구조화 데이터와 대용량 데이터에 맞는다. 소셜 네트워크, 실시간 분석, IoT 데이터 수집이 대표 사례다. MongoDB는 문서형, Cassandra는 열 지향, Redis는 키-값, Neo4j는 그래프 모델을 제공한다.
Oracle RAC는 여러 노드가 공유 스토리지에 접근하는 클러스터 구성이다. 활성-활성(Active-Active) 방식으로 높은 가용성을 제공하고 노드 추가로 확장할 수 있지만, 공유 리소스 경합이 발생할 수 있다. 엔터프라이즈 미션 크리티컬 애플리케이션에 적용된다.
Cassandra는 링 구조의 피어-투-피어 분산 데이터베이스다. 마스터리스(Masterless) 아키텍처로 단일 장애점이 없으며, 노드 추가만으로 선형적 확장이 가능하다. 타임시리즈 데이터, 대규모 로깅, 센서 데이터 처리에 적용된다.
저장소를 조합하는 데이터 아키텍처
단일 데이터베이스로 모든 요구사항을 해결하기보다 RDB와 NoSQL의 장점을 결합하는 하이브리드 접근도 사용된다. 폴리글랏 퍼시스턴스는 목적에 따라 여러 데이터베이스 기술을 조합하는 방식이다. 멀티모델 데이터베이스는 ArangoDB처럼 하나의 시스템에서 여러 데이터 모델을 지원하며, NewSQL은 Google Spanner와 CockroachDB처럼 RDB의 ACID 속성과 NoSQL의 확장성을 결합한다.
RDB와 NoSQL은 상호 배타적인 기술이 아니라 서로 다른 요구사항에 맞춘 보완적 기술이다. 데이터 무결성, 정확성, 일관성이 필요한 트랜잭션 시스템에는 RDB가 맞고, 확장성, 유연성, 고가용성이 필요한 대규모 분산 환경에는 NoSQL이 맞다. 저장소의 특성을 문제 영역에 맞춰 선택하는 전략이 필요하다.