콘텐츠로 바로가기

NoSQL & Polyglot Persistence

비정형 데이터의 유연성과 수평적 확장을 목표로 하는 Key-Value, Document, Graph, Wide-column 등 비관계형 데이터 엔지니어링을 다루는 학습 노드입니다.

sys.entry
M

Me

hyunyoun's Blog

posts6 min read

1. Overview

NoSQL 및 폴리글랏 퍼시스턴스(NoSQL & Polyglot Persistence, NPP)는 스키마의 유연함과 데이터의 폭발적 확장을 위해 관계형 모델의 제약을 벗어난 다양한 데이터 저장 기술을 다룹니다.

모든 데이터를 한 종류의 DB에 담는 'One Size Fits All' 시대는 끝났습니다. 학습자는 데이터 노드의 성격에 따라 문서형(MongoDB), 키-값형(Redis), 그래프형(Neo4j), 와이드 컬럼형(Cassandra) 중 최적의 저장소를 선택하는 역량을 기릅니다. 특히 고가용성을 위해 일관성(Consistency)을 일부 희생하는 최종 일관성(Eventual Consistency) 모델과 분산 환경에서의 데이터 파티셔닝 전략을 핵심적으로 학습합니다.

2. Scope & Boundaries

In-Scope

  • Data Models: Document (JSON/BSON), Key-Value, Column-family, Graph 모델 차이
  • Scaling Mechanics: Sharding, Replication, Gossip Protocol 등 분산 저장 물리
  • Consistency Models: BASE (Basically Available, Soft state, Eventual consistency) 하의 데이터 거동
  • Storage Patterns: CQRS를 위한 전용 읽기 모델 저장 및 캐싱 전략

Out-of-Scope

  • RDBMS의 고급 SQL 튜닝 (06-01 Relational Systems 영역으로 위임)
  • 데이터 모델과 무관한 순수 인프라 자동화 (07-07 Cloud-Native 영역으로 위임)

Boundaries

  • NPP vs. Distributed Logic: 06-03(DL)이 '분산 환경에서의 트랜잭션과 복제 알고리즘' 자체에 집중한다면, NPP는 '다양한 데이터 구조(모델)를 비관계형으로 저장하는 특성'에 집중합니다.

3. Counterexample

  • 단순히 "빠르니까 NoSQL을 쓴다"고 결정하는 것은 NPP 학습이 아닙니다. 왜 특정 데이터가 관계형 정규화에 부적합한지(예: 극도로 빈번한 스키마 변경, 수십억 개의 연결 관계)를 분석하고, NoSQL 도입 시 데이터 정합성(Consistency) 문제를 서비스 로직에서 어떻게 물리적으로 보완할지 설계할 수 있어야 합니다.

4. Prerequisites

  • 기초 자료 구조 (Basic): 해시 맵, 그래프, 트리 등 비선형 자료 구조의 물리적 이해가 필수입니다. (04. CDS)
  • 관계형 시스템 (Recommended): RDBMS와의 비교를 통해 NoSQL의 득실을 명확히 정의하기 위해 선행 학습이 권장됩니다. (06. RS)

5. Learning Map

  1. Model Diversity: 각 NoSQL 타입별로 최적화된 데이터 형태와 물리 저장 방식을 익힙니다.
  2. Schema-less Strategy: 정형화되지 않은 데이터를 효율적으로 인덱싱하고 쿼리하는 법을 배웁니다.
  3. Availability Physics: 장애 상황에서도 서비스가 멈추지 않도록 하는 복제 및 샤딩 메커니즘을 이해합니다.
  4. Architecting Polyglot: 비즈니스 영역별로 RDB와 NoSQL을 적재적소에 배치하는 복합 아키텍처를 설계합니다.

6. Learning Topics

Basic

Core: NoSQL 분류와 데이터 모델 (Taxonomy & Models)

  • Why to Learn: 문제의 성격에 맞춰 가장 효율적인 데이터 저장 도구를 선택하기 위함입니다.
  • What to Learn:
    • Key-Value(캐시, 세션), Document(유연한 데이터), Graph(연결성 탐색) 모델의 특징
    • 스키마 유연성(Schema-less)이 개발 속도와 데이터 품질에 미치는 양면성
    • 대규모 비정형 텍스트 저장을 위한 컬럼 지향(Column-family) 물리
  • How to Learn:
    • 동일한 SNS 포스트 데이터를 RDBMS(테이블)와 Document DB(JSON)로 모델링하여 차이 분석
    • 온라인 퀴즈를 통해 특정 유즈케이스(예: 대용량 로그)에 적합한 NoSQL 유형 매칭 연습
  • Implement: 특정 도메인을 위해 Document 모델과 Key-Value 모델을 혼합한 저장 구조 설계서

Core: 가용성과 최종 일관성 (Availability & Consistency)

  • Why to Learn: 인터넷 스케일의 대규모 시스템에서 발생하는 지연 시간 문제를 물리적으로 해결하기 위해서입니다.
  • What to Learn:
    • CAP 정리 기초: 일관성(C), 가용성(A), 파티션 용인(P) 사이의 선택
    • 최종 일관성(Eventual Consistency)의 정의와 충돌 해결(Last Write Wins 등)
    • 쿼럼(Quorum) 시스템: N/W/R 설정을 통한 읽기/쓰기 강도 조정 물리
  • How to Learn:
    • 분산 노드 중 일부가 다운되었을 때의 서비스 응답성을 시뮬레이션 환경에서 확인
    • 데이터 복제 지연(Replication Lag)이 실시간 알림 서비스에 미치는 영향 분석 로깅
  • Implement: 쓰기 부하를 분산시키기 위해 쿼럼 설정을 조정하는 NoSQL 클러스터 구성 가이드

Practical

  • Why to Learn: 고도로 연결된 관계 정보와 고속 텍스트 검색 기능을 보강하기 위함입니다.
  • What to Learn:
    • Graph DB(Neo4j)를 이용한 최단 경로 및 커뮤니티 탐지 물리
    • Full-text Search 엔진(Elasticsearch)의 역색인(Inverted Index) 구조 이해
    • 주 저장소(RDB/Doc)와 검색/그래프 엔진 간의 데이터 동기화(CDC) 전략
  • How to Learn:
    • Cypher 쿼리를 이용해 대규모 인맥 그래프에서 '3촌 이내 친구'를 찾는 연산 오버헤드 측정
    • 검색 엔진의 분석기(Analyzer) 설정에 따른 단어 추출 결과 시각화 비교
  • Implement: 관계 데이터 처리를 위해 Graph DB를 도입한 추천 시스템 핵심 모직

Advanced

Core: 폴리글랏 퍼시스턴스 아키텍처 (Polyglot Architecting)

  • Why to Learn: 단일 DB의 한계를 넘어 엔터프라이즈 급의 고성능/고정합 시스템을 구축하기 위해서입니다.
  • What to Learn:
    • 서비스별 최적 DB 배치: 사용자 정보(RDB), 활동 로그(Doc/Column), 세션(KV)
    • 데이터 버스(Data Bus)를 이용한 이종 DB 간의 이벤트 기반 일관성 유지
    • Write-through, Write-behind 등 캐싱 전략의 물리적 적용
  • How to Learn:
    • 마이크로서비스 아키텍처(MSA)에서 각 서비스가 자신의 DB를 갖는 패턴 연구
    • 복합 DB 환경에서 전역 트랜잭션 없이 일관성을 맞추는 사가(Saga) 패턴 기초 연구
  • Implement: 서로 다른 3종류의 DB(RDB, Search, KV)를 결합한 고가용성 커머스 시스템 데이터 아키텍처

7. Terminology

Term (EN / ko, abbr) 1문장 정의 단계(기본/권장/실무/심화) 역할/맥락 관련 개념 유사/대비/함께 사용 오해 포인트 Evidence(Primary/Secondary/Industry) Flags(core/misused/legacy)
Eventual Consistency 데이터가 일시적으로 불일치할 수 있으나 시간이 지나면 결국 동일한 값으로 수렴되는 일관성 모델입니다. 추천 성능 vs 정합성 CAP Theorem Strong Consistency 데이터가 유실된다고 오해 P4:DS-BoK Systems core
Sharding (샤딩) 거대한 데이터셋을 수평적으로 분할하여 여러 서버(노드)에 나누어 저장하는 기법입니다. 실무 확장성 Partitioning Replication 수직 확장(Scale-up)과 혼동 P1:CS2023/Distributed core
Inverted Index (역색인) 문서 내 키워드가 어느 문서에 위치하는지를 매핑하여 고속 검색을 지원하는 데이터 구조입니다. 실무 검색 최적화 Search Engine Forward Index 캐시와 동일한 것으로 오해 Industry Internals core
Polyglot Persistence 하나의 앱에서 데이터의 성격에 따라 여러 종류의 데이터 저장소 기술을 혼합하여 사용하는 방식입니다. 실무 아키텍처 MSA Microservices 단순히 '여러 DB 설치'로 오해 Industry Fowler core

8. References

Primary References

Secondary References

  • [NoSQL Distilled] Pramod Sadalage & Martin Fowler — Definitive introduction.
  • [Seven Databases in Seven Weeks] Luc Perkins et al. — Hands-on various models.

Industry References

  • [AWS Database Selection Guide] — Practical polyglot choice examples.
  • [MongoDB/Neo4j Official Whitepapers] — Real-world use case architectures.

9. Final Checklist

Primary Checklist

  • 데이터의 형태(JSON vs 테이블)에 따라 데이터 무결성 체크 책임이 DB에 있는지 애플리케이션에 있는지 구분 가능한가? (P4)
  • 고가용성이 최우선인 시스템에서 왜 강력한 일관성(Strong Consistency)을 포기해야 하는지 물리적 이유를 CAP 이론으로 설명 가능한가? (P1)

Secondary Checklist

  • 키-값 저장소(Redis 등)에서 만료 시간(TTL) 설정이 물리 메모리 회수와 시스템 안정성에 미치는 영향을 분석하고 있는가?
  • 그래프 데이터베이스에서 다중 홉(Multi-hop) 쿼리가 관계형 DB의 조인 대비 가지는 물리적 연산 효율성을 인지하는가?

Industry Checklist

  • 비즈니스 도메인 분석 후, 쓰기 부하가 높은 도메인과 읽기 성능이 중요한 도메인을 분리하여 각기 다른 NoSQL을 배치 제안할 수 있는가? (SFIA)
  • 이종 DB 환경에서 데이터 동기화 지연 발생 시 대 사용자 안내 전략이나 보상 트랜잭션의 필요성을 논할 수 있는가?