Skip to content

Latest commit

 

History

History
65 lines (56 loc) · 3.91 KB

강민성.md

File metadata and controls

65 lines (56 loc) · 3.91 KB

RDB

  • 정해진 스키마에 따라 데이터를 테이블에 저장하는 데이터베이스
  • 데이터 구조를 보장하고 중복을 피할 수 있다.
  • SQL를 사용하여 데이터 저장, 수정, 삭제 및 검색이 가능하다.
  • 데이터는 관계를 통해 여러 테이블에 분산된다.
  • 수직적 확장이 용이하지만, 수평적 확장은 어렵다.
  • 스키마 변경이 어렵다.

RDB 장단점

  • 장점
    • 정해진 스키마에 따라 데이터를 저장하여, 명확한 데이터 구조를 보장
    • 각 데이터를 중복없이 저장
  • 단점
    • 테이블 간 관계를 맺고 있어, 복잡한 시스템일수록 JOIN문을 많이 사용해 성능이 저하된다.
    • 성능 향상을 위해 수직적 확장만 용이하다. 이로 인해 비용이 기하급수적으로 증가
    • 스키마로 인해 데이터가 유연하지 못해, 스키마가 변경되기 번거롭고 어렵다.

NoSQL

  • 스키마가 없거나 느슨한 스키마로 데이터 간의 관계없이 자유로운 형태로 데이터를 저장하는 데이터베이스
  • 관계형 데이터 모델을 지양
  • 스키마 없이 사용 가능하며, 느슨한 스키마를 제공
  • 대량의 분산된 데이터를 저장하고 조회하는 데 특화
  • 종류마다 쓰기/읽기 성능 특화, 2차 인덱스 지원, 오토 샤딩 지원, 동적인 스케일 아웃 지원, 가용성을 위한 데이터 복제 등 제공

NoSQL 장단점

  • 장점
    • 유연한 스키마를 가지므로, 요구 사항이 변경되었을 때 데이터베이스를 쉽게 변경할 수 있다.
    • 수평적 확장이 자유롭다.
    • 쿼리에 최적화되어 저장된다.
      • RDB 경우에는 여러 테이블를 join 해야 한다.
  • 단점
    • 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능
    • 많은 인덱스를 사용하려면 충분한 메모리가 필요. 인덱스 구조가 메모리에 저장
    • 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않아 데이터 구조를 결정하기 힘들 수 있다.
    • 데이터 일관성이 항상 보장되지 않다.
    • 데이터 중복이 발생하여 중복된 데이터가 변경될 경우 모든 컬렉션에 대해서 수정을 수행해야 한다.

저장 방식에 따른 NoSQL 분류

image
  • Key-Value Model
    • 키 하나로 데이터 하나를 저장하고 조회할 수 있는 단일 키-값 구조
    • 단순한 저장 구조로 복잡한 조회 연산은 지원 X
    • 고속 읽기와 쓰기에 최적화되어 있다.
    • (활용 예시) 사용자의 프로필 정보, 웹 서버 클러스터를 위한 세션 정보, 장바구니 정보, URL 단축 정보 저장 등
    • 성능 향상을 위해 데이터베이스 데이터 캐싱
    • Redis, AWS DynamoDB
  • Document Model
    • 키-값 모델을 개념적으로 확장한 구조로 하나의 키에 하나의 구조화된 문서를 저장하고 조회
    • 키는 문서에 대한 ID 로 표현, 저장된 문서를 컬렉션으로 관리하며 문서 저장과 동시에 문서 ID 에 대한 인덱스를 생성 → 문서 ID 에 대한 인덱스를 사용하여 O(1) 시간 안에 문서를 조회할 수 있다.
      • 문서 모델 NoSQL 은 B 트리 인덱스를 사용하여 2 차 인덱스를 생성
    • (활용 예시) 중앙 집중식 로그 저장, 타임라인 저장, 통계 정보 저장 등
    • MongoDB
  • Column Family Database
    • 하나의 키에 여러 개의 컬럼 이름과 컬럼 값의 쌍으로 이루어진 데이터를 저장하고 조회
    • 모든 컬럼은 항상 타임 스탬프 값과 함께 저장
    • (활용 예시) 채팅 내용 저장, 실시간 분석을 위한 데이터 저장소 등의 서비스 구현에 적합