[TIL] NoSQL

Soeng_dev·2024년 12월 27일

NoSQL의 장단점

장점

  1. 유연한 데이터 모델링

    • 스키마리스로 데이터 구조 변경 용이.
    • 비정형 및 반정형 데이터 처리에 적합.
  2. 수평적 확장 가능

    • 노드 추가로 확장성 확보.
  3. 높은 성능

    • 읽기/쓰기 속도 최적화.
  4. 대규모 데이터 처리

    • 빅데이터, IoT와 같은 대용량 데이터에 적합.
  5. 다양한 데이터 유형 지원

    • JSON, XML, Binary 형식 저장 가능.
  6. 높은 가용성

    • 분산 복제 및 자동 장애 복구.
  7. 비용 효율성

    • 오픈 소스 기반으로 초기 비용 절감 가능.

단점

  1. 트랜잭션 일관성 부족

    • ACID 특성이 제한적이고, eventual consistency 사용.
  2. 표준화 부족

    • 데이터베이스마다 쿼리 언어와 API가 다름.
  3. 데이터 관계 처리 어려움

    • 복잡한 관계형 연산(조인 등)에 비효율적.
  4. 데이터 무결성 관리 어려움

    • 데이터 무결성과 참조 무결성을 보장하기 어렵고, 애플리케이션 레벨에서 관리해야 할 수 있음.
  5. 성숙도 부족

    • 일부 NoSQL 솔루션은 RDB에 비해 안정성과 성숙도가 낮을 수 있음.
  6. 초기 설계 실패 시 문제 발생

    • 잘못 설계하면 성능 저하 및 유지보수 비용 증가 가능.

NoSQL vs RDB 비교

NoSQL의 RDB 대비 장점

  1. 유연한 스키마 설계

    • 데이터 구조 변경이 쉽고 비정형 데이터 처리 가능.
  2. 대규모 데이터 처리에 적합

    • 수평적 확장으로 데이터 증가에 유연하게 대처.
  3. 특정 쿼리 패턴에 최적화

    • 키-값 조회, 도큐먼트 접근 등에서 높은 성능.

NoSQL의 RDB 대비 단점

  1. ACID 트랜잭션 제한적

    • 트랜잭션 일관성과 데이터 무결성 보장 어려움.
  2. 복잡한 데이터 관계 처리 어려움

    • 조인 연산 등 관계형 데이터 처리 비효율.
  3. 표준 쿼리 언어 부재

    • SQL처럼 표준화된 언어가 없어서 학습 곡선 존재.

NoSQL 사용 사례

  1. 대규모 트래픽 처리

    • 글로벌 서비스, 소셜 미디어.
  2. 비정형/반정형 데이터 저장

    • JSON, IoT 데이터를 유연하게 저장.
  3. 실시간 데이터 처리

    • 로그 데이터 분석, 추천 시스템.
  4. 분산 시스템 요구

    • 가용성과 확장성이 중요한 서비스.

분산 DB의 데이터 위치 찾기

  1. 해시 기반 샤딩

    • 해시 함수로 키를 계산해 데이터 위치 결정.
    • shard_key = hash(key) % number_of_shards
  2. 범위 기반 샤딩

    • 키 값의 범위로 샤드를 결정.
  3. 분산 해시 테이블(DHT)

    • 키와 가장 가까운 노드에 데이터 저장.
  4. 메타데이터 서버 활용

    • 메타데이터 서버가 데이터 위치를 관리하고 요청에 따라 라우팅.
  5. 마스터-슬레이브 구조

  • 마스터 노드가 데이터의 분산 상태를 관리.
    • 클라이언트가 마스터 노드에서 데이터가 저장된 슬레이브 노드 정보를 조회.
  • 슬레이브 노드는 데이터를 저장하고 읽기 작업을 수행.
    예: Redis 클러스터.

마스터-슬레이브 레플리카/샤딩의 차이

마스터-슬레이브 레플리카

  • 데이터 복제
    • 마스터 노드에 데이터를 저장하고, 슬레이브 노드로 복제.
    • 슬레이브 노드는 주로 읽기 작업 처리.
  • 특징
    • 모든 슬레이브에 동일 데이터 저장.

샤딩

  • 데이터 분산
    • 데이터를 여러 샤드로 나누어 저장.
    • 각 샤드는 고유한 데이터 조각을 관리.
  • 특징
    • 저장 및 쓰기 부하 분산 가능.
profile
Software Engineer

0개의 댓글