NoSQL

데이터를 테이블이 아닌 다양한 형태로 저장하며, 고정 스키마 없이 유연하게 대용량 데이터를 처리하는 비관계형 데이터베이스입니다.

종류

1. Document DB

JSON 형태의 문서로 데이터를 저장합니다.

// MongoDB 예시
{
  "_id": "1",
  "name": "Alice",
  "orders": [
    { "item": "book", "amount": 10000 },
    { "item": "pen",  "amount": 2000  }
  ]
}

2. Key-Value DB

키와 값의 쌍으로 저장합니다.

// Redis 예시
SET user:1 "Alice"
GET user:1  → "Alice"

3. Column Family DB

행 대신 컬럼 단위로 데이터를 저장합니다.

// Cassandra 예시
row_key: "user:1"
  → name: "Alice"
  → email: "a@..."

4. Graph DB

노드와 엣지로 관계를 저장합니다.

(Alice) --[FRIEND]--> (Bob)
(Alice) --[BOUGHT]--> (Book)

5. Time Series DB

타임스탬프가 있는 메트릭, 이벤트 등 시간에 따라 변화하는 데이터를 저장합니다.

// InfluxDB 예시
measurement: cpu_usage
  2026-02-25T10:00:00Z, host=server1, value=42.1
  2026-02-25T10:00:10Z, host=server1, value=45.8

핵심 특성: CAP 이론

분산 시스템에서 세 가지를 동시에 만족할 수 없습니다.

        Consistency (일관성)
             △
            / \
           /   \
          /     \
Availability ─── Partition Tolerance
 (가용성)          (분할 내성)

NoSQL은 보통 AP 또는 CP를 선택
조합설명예시
CP일관성 + 분할 내성MongoDB, Redis
AP가용성 + 분할 내성Cassandra, DynamoDB

BASE 속성

NoSQL이 ACID 대신 따르는 원칙입니다.

속성설명
Basically Available가용성 우선 보장
Soft State일정 시간 데이터 불일치 허용
Eventually Consistent최종적으로 일관성 수렴

NoSQL 종류별 비교

종류대표 제품주요 사용처
DocumentMongoDB콘텐츠, 카탈로그
Key-ValueRedis캐시, 세션
ColumnCassandra로그, 대규모 데이터 분석
GraphNeo4jSNS, 추천 시스템
Time SeriesInfluxDB, PrometheusIoT 데이터 수집, 모니터링

RDB vs NoSQL

항목RDBNoSQL
스키마고정유연
확장수직 확장수평 확장 O
일관성ACID O최종 일관성
관계 표현JOIN비정규화 / 중첩
적합한 데이터정형 데이터비정형 대용량

서비스 초기엔 RDB로 시작하고, 트래픽 증가나 비정형 데이터가 많아지면 NoSQL을 도입하는 혼합 전략이 일반적입니다.

→ NoSQL 데이터베이스의 유형에는 어떤 것들이 있나요?

CSLOG에서 보기