ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • NoSQL
    CS 지식/데이터베이스 2021. 1. 14. 15:35
    반응형

    NoSQL

    • RDBMS를 지양하며 대량의 분산된 데이터를 저장하고 조회하는데 특화된 data store
    • 동적 스케일 아웃을 지원
    • CAP 이론
      • 일관성 (Consistency)
        • 다중 클라이언트에서 같은 시간에 조회하는 데이터는 항상 동일한 데이터 보증
          • 관계형 데이터베이스가 지원하는 가장 기본적인 기능
        • 일관성을 지원하지 않는 NoSQL 을 사용하면, 데이터의 일관성이 느슨하게 처리되어 동일한 데이터가 나타나지 않을 수 있음
        • 느슨하게 처리된다는 것 === 데이터의 변경을 시간의 흐름에 따라 여러 노드에 전파하는 것
        • 이러한 방법을 최종적으로 일관성이 유지된다고 하여 최종 일관성 또는 궁극적 일관성을 지원한다고 함
        • 분산 노드 간의 데이터 동기화를 위해서 두 가지 방법
          • 동기 방법
            • 데이터의 저장 결과를 클라이언트로 응답하기 전에 모든 노드에 데이터를 저장
            • 느린 응답시간, 정합성 보장
          • 비동기 방법
            • 메모리나 임시 파일에 기록하고 클라이언트에 먼저 응답 ~> 특정 이벤트 or 프로세스를 사용해서 노드로 데이터를 동기화
            • 빠른 응답시간, 정합성 보장 X
      • 가용성(Availability)
        • 모든 클라이언트의 읽기와 쓰기 요청에 대해 응답이 항상 같음을 보증
          • == 내고장성
          • 내고장성 있는 NoSQL은 클러스터 내에 몇 개의 노드가 망가져도 정상 서비스
        • 몇몇 NoSQL은 가용성 보장을 위해 데이터 복제를 사용
        • 동일한 데이터를 다중 노드에 중복 저장 ~> 몇 대의 노드가 고장나도 유실되지 않도록
      • 네트워크 분할 허용성(Partition tolerance)
        • 지역적으로 분할된 네트워크 환경에서 동작하는 시스템에서 두 지역 간의 네트워크가 단절되거나 데이터 유실이 일어나도 각 지역 내의 시스템이 정상 동작해야함
    • 종류
      • Key-Value Model
        • Redis가 대표 예
        • 가장 기본적인 형태의 NoSQL, 키로 데이터 하나 저장 및 조회하는 키-값 구조
        • 복잡한 연산 지원 X (~> 요즘 JOIN 지원한다는 소리가 있음)
        • 읽기와 쓰기에 최적화
        • 하나의 서비스 요청에 다수 데이터 조회 및 수정 연산이 발생하면, 트랜잭션 터리가 불가능하여 데이터 정합성 보장 X
      • Document Model
        • MongoDB가 대표 예
        • 키-값 모델을 개념적으로 확장한 구조, 키에 구조화된 문서를 저장하고 조회
        • 키는 문서에 대한 ID로 표현
        • 저장된 문서를 컬렉션으로 관리 ~> 문서 저장과 동시에 ID에 대한 인덱스 생성
        • B 트리 인덱스를 사용, 2차 인덱스를 생성함
          • 따라서 읽기와 쓰기 비율이 7:3 정도일 때 가장 좋음
          • 중앙 집중식 로그, 타임라인, 통계 정보 등 저장에 사용
      • Column Model
        • 하나의 키에 여러 컬럼 이름과 값의 쌍으로 이루어진 데이터를 저장하고 조회
        • 모든 컬럼은 항상 타임 스탬프 값과 함께 저장
    반응형

    'CS 지식 > 데이터베이스' 카테고리의 다른 글

    MySQL Hint (옵티마이저 힌트 & 인데스 힌트)  (1) 2022.07.29
    Surrogate key vs Natural Key (대체 키 vs 자연 키)  (0) 2022.07.29
    트랜잭션(Transaction)  (0) 2021.01.14
    정규화  (0) 2021.01.14
    인덱스(Index)  (0) 2021.01.14

    댓글

Designed by Tistory.