No Sql

Redis

  • 레디스는 고성능 키-값 저장소로서 문자열, 리스트, 해시, 셋, 정렬된 셋 형식으로 데이터를 지원하는 NoSQL
  • 메모리 이외의 영구 저장소를 지원

    레디스 데이터 구조

  • 문자열 데이터
    • 최대 512MB
    • 문자열 데이터를 저장할 때는 인코딩된 문자열과 몇 가지 부가 정보가 포함된 구조체 (레디스 객체형)
  • 해시 데이터
    • 문자열 필드와 값으로 이루어진 맵 구조
    • 해시 데이터에는 2^32-1 필드와 값을 저장 할 수 있음
    • 숫자로 바꾸면 약 42억
  • 셋 데이터
    • 중복을 허용하지 않는 집합 형태의 자료구조
    • 2^32-1 개의 값을 저장
  • 정렬된 셋 데이터
    • 셋 데이터와 동일한 특징을 가지면서 요소 정렬이라는 부가적인 특징을 가짐
    • 정렬된 셋 데이터는 셋 데이터 구조에 요소의 가중치 값이 추가
    • 가중치에 따라서 각 요소의 정렬이 수행
    • 기본 정렬 순서는 오름차순
  • 리스트 데이터
    • 리스트 데이터는 저장 순서를 기억하는 데이터 구조로 중복 허용
    • 2^32-1 개의 값을 저장
    • 이중 연결 리스트 구현

      확장과 분산 기법

    • 복재
      • 단일복제
        • 마스터, 단일 슬레이브 구조
        • 마스터 노드에 변경이 발생하면 실시간으로 슬레이브 노드에 데이터 변경상항을 기록
      • 다중복제
        • 다중 복제는 단일 복제의 단순 확장
      • 계층형복제
        • 마스터 노드에 너무 많은 슬레이브가 접속되어 쓰기 성능이 저하되는 문제를 해결하기 위한 복제 방법
        • 마스터 노드와 슬레이브 노브 1이 1차로 복제
        • 이후 슬레이브 2, 슬레이브 3, 슬레이브 4가 복제
    • 샤딩
      • 수직 샤딩
        • 데이터 성격을 기준으로 논리적 분할을 적용한 것
        • 사용자정보, 친구정보로 분리
      • 범위 지정 샤딩
        • 특정 키에 대하여 범위를 지정하여 저장될 노드를 결정하는것
        • 1~10,000 샤드1, 10,001 ~ 20,000 샤드 2
      • 해시 기반 샤딩
        • 키의 해시값을 구하여 해시값에 대한 특정 연산을 통해서 키가 저장될 위치를 구하는 방법
    • 샤딩과 복제 혼합
      • 두개의 샤드로 구성된 클러스터이며 각 샤드는 단일 복제를 사용

Elastic Search