NoSQL
기본 정보
- 명칭: NoSQL
- 영문명: Not Only SQL
- 한글명: 비관계형 데이터베이스
- 분류: 데이터베이스 관리 시스템
- 주요 용도: 대용량 데이터 및 비정형 데이터 저장
- 관련 주제: #NoSQL #MongoDB #Redis #Database #백엔드
개요
NoSQL(Not Only SQL)은 관계형 테이블 구조(RDBMS)를 사용하지 않고 다양한 형태의 데이터를 저장하는 데이터베이스 시스템이다.
JSON 문서(Document), Key-Value, Column, Graph 등 여러 구조를 지원하며, 높은 확장성과 빠른 성능을 제공한다.
SNS, 채팅 서비스, 로그 시스템, IoT, AI, 빅데이터 플랫폼 등에서 많이 활용된다.
NoSQL 구조
Application
↓
NoSQL DB
↓
Document
Key-Value
Column
Graph
↓
Storage
주요 특징
- 스키마가 유연함
- 수평 확장(Scale Out)에 유리
- 대용량 데이터 처리
- 빠른 읽기/쓰기 성능
- 비정형 데이터 저장 가능
- JSON 기반 저장 지원
NoSQL 종류
Document Database
문서(JSON) 형태로 데이터를 저장한다.
대표 제품
- MongoDB
- CouchDB
Key-Value Database
Key와 Value 형태로 데이터를 저장한다.
대표 제품
- Redis
- Riak
Column Database
컬럼 단위로 데이터를 저장한다.
대표 제품
- Cassandra
- HBase
Graph Database
노드와 관계를 저장하는 데이터베이스이다.
대표 제품
- Neo4j
- Amazon Neptune
Document 구조
{
"_id": 1,
"name": "홍길동",
"age": 30,
"skills": [
"PHP",
"Python"
]
}
객체 안에 배열과 객체를 자유롭게 포함할 수 있다.
Key-Value 구조
user:1
↓
{
"name":"홍길동"
}
캐시 시스템에서 많이 사용된다.
RDBMS와 비교
| RDBMS | NoSQL |
|---|---|
| 테이블 기반 | 문서/Key-Value 기반 |
| 고정 스키마 | 유연한 스키마 |
| SQL 사용 | 제품별 쿼리 사용 |
| JOIN 지원 | 대부분 JOIN 미지원 |
| ACID 중심 | BASE 중심 |
| 수직 확장 중심 | 수평 확장에 강함 |
ACID vs BASE
ACID
- Atomicity
- Consistency
- Isolation
- Durability
데이터 일관성을 중요하게 생각하는 방식이다.
BASE
- Basically Available
- Soft State
- Eventual Consistency
높은 가용성과 확장성을 우선하는 방식이다.
MongoDB 예제
데이터 추가
db.users.insertOne({
name:"홍길동",
age:30
})
조회
db.users.find()
수정
db.users.updateOne(
{_id:1},
{$set:{age:31}}
)
삭제
db.users.deleteOne(
{_id:1}
)
Redis 예제
저장
SET user:1 홍길동
조회
GET user:1
삭제
DEL user:1
Scale Out
Server1
+
Server2
+
Server3
↓
Cluster
여러 서버를 추가하여 성능을 향상시킬 수 있다.
대표 활용 분야
- SNS
- 채팅 서비스
- 로그 분석
- IoT
- AI 플랫폼
- 캐시 서버
- 추천 시스템
- 빅데이터 처리
장점
- 높은 확장성
- 빠른 성능
- 유연한 데이터 구조
- JSON 저장 가능
- 대용량 데이터 처리에 적합
- 클라우드 환경에 적합
단점
- JOIN 기능 제한
- 데이터 중복 가능성
- 복잡한 트랜잭션 처리에 불리
- 제품마다 쿼리 문법이 다름
- 관계형 데이터 관리에는 비효율적일 수 있음
RDBMS를 선택하는 경우
다음과 같은 상황에서는 RDBMS가 적합하다.
- 금융 시스템
- 회계 시스템
- ERP
- 주문 관리
- 재고 관리
- 데이터 무결성이 중요한 서비스
NoSQL을 선택하는 경우
다음과 같은 상황에서는 NoSQL이 적합하다.
- 실시간 채팅
- 캐시 서버
- 로그 저장
- SNS
- 대용량 이벤트 데이터
- AI 데이터 저장
- IoT 플랫폼
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
- RDBMS와 NoSQL을 함께 사용하는 Hybrid 구조 고려
- Redis는 캐시 용도로 활용
- MongoDB는 JSON 데이터 저장에 적합
- 데이터 중복을 고려한 설계
- 샤딩(Sharding) 적용 검토
- 복제(Replication) 구성
- 백업 정책 수립
- 모니터링 시스템 구축
- 인덱스 최적화
- TTL(Time To Live) 기능 활용
NoSQL과 함께 사용하는 기술
대표 관리 도구
- MongoDB Compass
- Redis Insight
- Studio 3T
- Robo 3T
- NoSQLBooster
관련 문서
출처
- MongoDB 공식 문서
- Redis 공식 문서
- NoSQL 관련 기술 문서