콘텐츠로 이동

NoSQL

1. NoSQL 개요

Not Only SQL — 관계형 DB의 한계를 극복하기 위해 등장했습니다.

구분 관계형 DB (RDBMS) NoSQL
스키마 고정 스키마 유연한 스키마
확장 수직 확장 (Scale-Up) 수평 확장 (Scale-Out)
일관성 강한 일관성 (ACID) 최종 일관성 (BASE)
적합 복잡한 관계, 트랜잭션 대용량, 빠른 읽기/쓰기

2. NoSQL 종류

키-값 저장소 (Key-Value Store)

가장 단순한 구조. 키로 값을 조회합니다.

  • 예시: Redis, DynamoDB, Memcached
  • 용도: 세션 관리, 캐싱, 장바구니
key: "user:1001"
value: { name: "김철수", age: 25 }

문서 저장소 (Document Store)

JSON/BSON 형태의 문서를 저장합니다.

  • 예시: MongoDB, CouchDB
  • 용도: 콘텐츠 관리, 상품 카탈로그
{
  "_id": "1001",
  "name": "김철수",
  "orders": [{"item": "노트북", "price": 1200000}]
}

컬럼 패밀리 저장소 (Column Family Store)

행 키를 기준으로 컬럼을 그룹화하여 저장합니다.

  • 예시: Cassandra, HBase
  • 용도: 시계열 데이터, 로그 분석, 대규모 쓰기

그래프 저장소 (Graph Store)

노드(개체)와 엣지(관계)로 데이터를 표현합니다.

  • 예시: Neo4j
  • 용도: 소셜 네트워크, 추천 시스템, 경로 탐색

3. CAP 정리

분산 시스템에서 세 가지 속성 중 최대 2가지만 동시에 만족 가능합니다.

속성 설명
Consistency (일관성) 모든 노드가 같은 데이터를 반환
Availability (가용성) 모든 요청에 응답 (오류 제외)
Partition Tolerance (분할 내성) 네트워크 분리 상황에서도 동작
        C (일관성)
       / \
      /   \
     /     \
    A-------P
  (가용성) (분할내성)

실제 시스템 선택

조합 포기 예시
CP 가용성 HBase, Zookeeper
AP 일관성 Cassandra, DynamoDB
CA 분할내성 단일 RDBMS (분산 불가)

분산 시스템에서는 네트워크 분할(P)은 피할 수 없으므로 실질적으로 CP 또는 AP 중 선택


4. BASE 속성

NoSQL의 일관성 모델입니다. ACID보다 완화된 수준입니다.

속성 설명
Basically Available 기본적으로 가용성 보장
Soft State 시간이 지나면서 상태가 변할 수 있음
Eventually Consistent 결국에는 일관성 달성 (최종 일관성)

시험 포인트

  • NoSQL 4종류: 키-값, 문서, 컬럼 패밀리, 그래프
  • CAP 정리: 세 가지 중 2가지만 선택 가능
  • 분산 시스템에서 P는 필수 → CP 또는 AP 선택
  • ACID vs BASE: 강한 일관성 vs 최종 일관성
  • Redis: 키-값 저장소, 캐싱/세션에 주로 사용
  • MongoDB: 문서 저장소, JSON 형태