Nosql
title: 2026-03-05 author: 강병호 (이름) date: 2026-03-05 (날짜) category: TIL/강병호/2026/03 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
NoSQL 데이터베이스의 주요 유형과 특징
NoSQL 데이터베이스는 데이터 모델에 따라 크게 다섯 가지 유형으로 분류됩니다. 각 유형은 특정 비즈니스 요구사항과 데이터 구조에 최적화되어 있습니다.
1. 키-값 데이터베이스 (Key-Value Database)
데이터를 키(Key)와 값(Value)의 쌍으로 저장하는 가장 단순하고 빠른 형태의 데이터베이스입니다.
- 특징: 고유 식별자인 키를 통해 데이터에 접근하며, 단순한 구조 덕분에 읽기 및 쓰기 성능이 매우 뛰어납니다.
- 대표 예시: Redis, Amazon DynamoDB
- 주요 용도: 세션 관리, 캐싱, 실시간 순위(Leaderboard) 시스템
2. 문서 지향 데이터베이스 (Document-oriented Database)
데이터를 JSON, BSON, XML과 같은 문서 형식으로 저장합니다.
- 특징: 스키마가 유연하여 다양한 데이터 구조를 수용할 수 있으며, 계층적인 데이터를 표현하기에 적합합니다.
- 대표 예시: MongoDB, CouchDB
- 주요 용도: 콘텐츠 관리 시스템(CMS), 사용자 프로필 저장, 이커머스 상품 카탈로그
3. 열 지향 데이터베이스 (Column Family Database)
행(Row)이 아닌 열(Column) 단위로 데이터를 묶어서 저장합니다.
- 특징: 대규모 데이터 집합에 대한 분석 쿼리에 최적화되어 있으며, 행마다 서로 다른 열을 가질 수 있는 유연성을 제공합니다.
- 대표 예시: Apache Cassandra, HBase
- 주요 용도: 대규모 데이터 분석, 로그 수집 및 관리
4. 그래프 데이터베이스 (Graph Database)
데이터 간의 관계를 노드(Node)와 엣지(Edge)를 사용하여 그래프 구조로 저장합니다.
- 특징: 복잡하게 얽힌 관계를 효율적으로 탐색하고 쿼리할 수 있도록 설계되었습니다.
- 대표 예시: Neo4j, Amazon Neptune
- 주요 용도: 소셜 네트워크 분석, 사기 탐지, 정교한 추천 시스템
5. 시계열 데이터베이스 (Time Series Database)
시간의 흐름에 따라 발생하는 데이터를 순차적으로 저장하는 데 특화되어 있습니다.
- 특징: 타임스탬프를 포함한 대량의 데이터를 압축하여 효율적으로 저장하며, 시간 범위에 따른 조회 성능이 우수합니다.
- 대표 예시: InfluxDB, Prometheus, TimescaleDB
- 주요 용도: IoT 센서 데이터 수집, 금융 시장 데이터 분석, 시스템 모니터링
실시간 채팅 앱을 위한 NoSQL 활용 전략
실시간 채팅 시스템은 메시지의 즉각적인 전달과 대규모 데이터의 안정적인 저장이라는 두 가지 핵심 과제를 해결해야 합니다. 이를 위해 서로 다른 특성을 가진 NoSQL을 조합하여 아키텍처를 구성할 수 있습니다.
1. Redis: 실시간 메시징 및 캐싱
실시간성을 확보하기 위해 Redis의 Pub/Sub(발행/구독) 모델을 활용합니다.
- 역할: 낮은 지연 시간(Low Latency)을 바탕으로 사용자 간의 메시지를 즉시 브로드캐스트하는 메시지 브로커 역할을 수행합니다.
- 활용: 현재 접속 중인 사용자의 상태 관리 및 세션 저장소로도 병행 사용할 수 있습니다.
2. MongoDB: 메시지 영구 저장 및 확장성
채팅 내역의 영구적인 보관과 관리에는 MongoDB를 활용합니다.
- 역할: 채팅 메시지, 사용자 정보, 채널 메타데이터 등을 JSON 형식으로 유연하게 저장합니다.
- 장점: 대규모 트래픽 발생 시 샤딩(Sharding) 기능을 통해 서버를 수평적으로 확장할 수 있어, 서비스 성장에 따른 데이터 용량 및 처리량 증가에 안정적으로 대응 가능합니다.