NoSQL의 장단점
장점
-
유연한 데이터 모델링
- 스키마리스로 데이터 구조 변경 용이.
- 비정형 및 반정형 데이터 처리에 적합.
-
수평적 확장 가능
-
높은 성능
-
대규모 데이터 처리
- 빅데이터, IoT와 같은 대용량 데이터에 적합.
-
다양한 데이터 유형 지원
- JSON, XML, Binary 형식 저장 가능.
-
높은 가용성
-
비용 효율성
단점
-
트랜잭션 일관성 부족
- ACID 특성이 제한적이고, eventual consistency 사용.
-
표준화 부족
-
데이터 관계 처리 어려움
-
데이터 무결성 관리 어려움
- 데이터 무결성과 참조 무결성을 보장하기 어렵고, 애플리케이션 레벨에서 관리해야 할 수 있음.
-
성숙도 부족
- 일부 NoSQL 솔루션은 RDB에 비해 안정성과 성숙도가 낮을 수 있음.
-
초기 설계 실패 시 문제 발생
- 잘못 설계하면 성능 저하 및 유지보수 비용 증가 가능.
NoSQL vs RDB 비교
NoSQL의 RDB 대비 장점
-
유연한 스키마 설계
- 데이터 구조 변경이 쉽고 비정형 데이터 처리 가능.
-
대규모 데이터 처리에 적합
- 수평적 확장으로 데이터 증가에 유연하게 대처.
-
특정 쿼리 패턴에 최적화
- 키-값 조회, 도큐먼트 접근 등에서 높은 성능.
NoSQL의 RDB 대비 단점
-
ACID 트랜잭션 제한적
- 트랜잭션 일관성과 데이터 무결성 보장 어려움.
-
복잡한 데이터 관계 처리 어려움
-
표준 쿼리 언어 부재
- SQL처럼 표준화된 언어가 없어서 학습 곡선 존재.
NoSQL 사용 사례
-
대규모 트래픽 처리
-
비정형/반정형 데이터 저장
-
실시간 데이터 처리
-
분산 시스템 요구
분산 DB의 데이터 위치 찾기
-
해시 기반 샤딩
- 해시 함수로 키를 계산해 데이터 위치 결정.
shard_key = hash(key) % number_of_shards
-
범위 기반 샤딩
-
분산 해시 테이블(DHT)
-
메타데이터 서버 활용
- 메타데이터 서버가 데이터 위치를 관리하고 요청에 따라 라우팅.
-
마스터-슬레이브 구조
- 마스터 노드가 데이터의 분산 상태를 관리.
- 클라이언트가 마스터 노드에서 데이터가 저장된 슬레이브 노드 정보를 조회.
- 슬레이브 노드는 데이터를 저장하고 읽기 작업을 수행.
예: Redis 클러스터.
마스터-슬레이브 레플리카/샤딩의 차이
마스터-슬레이브 레플리카
- 데이터 복제
- 마스터 노드에 데이터를 저장하고, 슬레이브 노드로 복제.
- 슬레이브 노드는 주로 읽기 작업 처리.
- 특징
샤딩
- 데이터 분산
- 데이터를 여러 샤드로 나누어 저장.
- 각 샤드는 고유한 데이터 조각을 관리.
- 특징