NoSQL¶
1. NoSQL 개요¶
Not Only SQL — 관계형 DB의 한계를 극복하기 위해 등장했습니다.
| 구분 | 관계형 DB (RDBMS) | NoSQL |
|---|---|---|
| 스키마 | 고정 스키마 | 유연한 스키마 |
| 확장 | 수직 확장 (Scale-Up) | 수평 확장 (Scale-Out) |
| 일관성 | 강한 일관성 (ACID) | 최종 일관성 (BASE) |
| 적합 | 복잡한 관계, 트랜잭션 | 대용량, 빠른 읽기/쓰기 |
2. NoSQL 종류¶
키-값 저장소 (Key-Value Store)¶
가장 단순한 구조. 키로 값을 조회합니다.
- 예시: Redis, DynamoDB, Memcached
- 용도: 세션 관리, 캐싱, 장바구니
문서 저장소 (Document Store)¶
JSON/BSON 형태의 문서를 저장합니다.
- 예시: MongoDB, CouchDB
- 용도: 콘텐츠 관리, 상품 카탈로그
컬럼 패밀리 저장소 (Column Family Store)¶
행 키를 기준으로 컬럼을 그룹화하여 저장합니다.
- 예시: Cassandra, HBase
- 용도: 시계열 데이터, 로그 분석, 대규모 쓰기
그래프 저장소 (Graph Store)¶
노드(개체)와 엣지(관계)로 데이터를 표현합니다.
- 예시: Neo4j
- 용도: 소셜 네트워크, 추천 시스템, 경로 탐색
3. CAP 정리¶
분산 시스템에서 세 가지 속성 중 최대 2가지만 동시에 만족 가능합니다.
| 속성 | 설명 |
|---|---|
| Consistency (일관성) | 모든 노드가 같은 데이터를 반환 |
| Availability (가용성) | 모든 요청에 응답 (오류 제외) |
| Partition Tolerance (분할 내성) | 네트워크 분리 상황에서도 동작 |
실제 시스템 선택¶
| 조합 | 포기 | 예시 |
|---|---|---|
| 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 형태