NoSQL 데이터베이스 등장 배경
빅데이터와 고가용성 요구로 전통적인 관계형 DB의 한계가 드러났습니다. NoSQL은 수평 확장(Scale-out), 유연한 스키마, 높은 처리량을 제공합니다.
CAP 정리 (Brewer’s Theorem)
분산 시스템에서 세 가지 속성을 동시에 보장할 수 없다는 이론입니다.
- 일관성(Consistency): 모든 노드가 동일한 최신 데이터를 반환
- 가용성(Availability): 모든 요청에 응답 (오류 없이)
- 분할 허용성(Partition Tolerance): 네트워크 분할 발생 시에도 동작
분산 시스템에서 네트워크 분할(P)은 필수, 따라서 CP(일관성+분할허용) 또는 AP(가용성+분할허용) 중 선택해야 합니다.
- CP 시스템: HBase, Zookeeper (금융 등 데이터 일관성 중요)
- AP 시스템: CouchDB, Cassandra (SNS 등 가용성 중요)
BASE 속성
ACID(원자성·일관성·격리성·지속성)의 엄격함을 완화한 NoSQL의 특성:
- Basically Available: 기본적으로 가용성 보장
- Soft State: 일관성을 항상 보장하지 않음
- Eventually Consistent: 결과적으로 일관성 달성
NoSQL 유형
키-값 스토어 (Key-Value Store)
- 단순한 키-값 쌍 저장. 빠른 읽기/쓰기
- Redis: 인메모리, 초고속. 캐싱, 세션, 실시간 리더보드
- DynamoDB: AWS 완전 관리형 키-값 + 도큐먼트
도큐먼트 스토어 (Document Store)
- JSON/BSON 형식의 문서 저장. 유연한 스키마
- MongoDB: 가장 많이 사용되는 도큐먼트 DB. 컬렉션(Collection) + 도큐먼트(Document)
- 집계 파이프라인(Aggregation Pipeline)으로 복잡한 쿼리
와이드-컬럼 스토어 (Wide-Column Store)
- 행마다 다른 컬럼을 가질 수 있는 테이블 구조
- Cassandra: AP 특성. 쓰기 최적화, 대용량 시계열 데이터
- HBase: CP 특성. Hadoop 위에서 동작
그래프 데이터베이스
- 노드와 엣지로 관계 표현. 복잡한 관계 쿼리에 최적
- Neo4j: 가장 유명한 그래프 DB. Cypher 쿼리 언어
- 활용: SNS 친구 추천, 사기 탐지, 지식 그래프
Redis 심화
- 지원 자료구조: String, List, Set, Sorted Set, Hash, Bitmap, HyperLogLog
- Pub/Sub 메시징 지원
- AOF(Append Only File) + RDB(Redis Database) 영속성 옵션
- Redis Cluster: 데이터 샤딩으로 수평 확장
시험 핵심 포인트
- CAP: C·A·P 중 분산 시스템은 P 필수, CP 또는 AP 선택
- BASE: NoSQL의 속성 (ACID의 완화된 버전)
- Redis: 인메모리 키-값, 캐싱 및 세션 관리
- MongoDB: 도큐먼트 스토어, JSON/BSON, 유연한 스키마
- Cassandra: AP, 쓰기 최적화, 시계열 데이터
마무리
NoSQL은 정보처리기사 최신 출제 트렌드입니다. CAP 정리의 세 속성과 NoSQL 4가지 유형별 대표 DB를 연결하여 암기하면 효율적입니다.