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
- Model Diversity: 각 NoSQL 타입별로 최적화된 데이터 형태와 물리 저장 방식을 익힙니다.
- Schema-less Strategy: 정형화되지 않은 데이터를 효율적으로 인덱싱하고 쿼리하는 법을 배웁니다.
- Availability Physics: 장애 상황에서도 서비스가 멈추지 않도록 하는 복제 및 샤딩 메커니즘을 이해합니다.
- 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 모델을 혼합한 저장 구조 설계서
Recommended
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
Core: 그래프 및 검색 엔진 활용 (Graph & Search)
- 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
8. References
Primary References
- [P4] DS-BoK - Data Infrastructure & Platforms — Non-relational systems for big data.
- [P1] CS2023 - DM/Scalable & Distributed Data — High availability storage.
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 환경에서 데이터 동기화 지연 발생 시 대 사용자 안내 전략이나 보상 트랜잭션의 필요성을 논할 수 있는가?