기록하는 습관

Elasticsearch (5) - 클러스터,Shard,Index 개념 본문

개발/Elasticsearch

Elasticsearch (5) - 클러스터,Shard,Index 개념

로그뉴 2022. 7. 6. 16:31

기본 용어

  1. 클러스터(Cluster)
    1. 물리적인 node 인스턴스들의 모임
    2. 모든 node의 검색과 색인 작업을 관장하는 logical 개념
    3. Index Document를 조회 할 때:
      1. master node를 통해 n개의 node를 모두 조회해서 각 data를 취합 후 결과를 하나로 합쳐서 반환함.
    4. 가용성확장성 측면에서 유연함
      1. 이유: cluster에 있는 node는 실시간 추가/제거가 가능하기 때문
  2. 인덱스(Index)
    1. 독립적인 데이터 저장 공간
    2. 하나의 index는 하나의 type만 가짐.
    3. 하나의 물리적인 노드에 여러 개의 논리적인 index 생성 가능.
      1. 만약 ES를 분산 환경으로 구성하면, 하나의 index가 여러 node에 분산되어 저장됨.
    4. Index 이름은 모두 소문자여야 함.
    5. Index가 없는 상태에서 데이터가 추가되면 index가 자동 생성됨.
  3. shard(Shard)
    1. 색인된 문서는 하나의 index에 담김.
    2. 색인된 데이터는 물리적인 공간에 여러 개의 파티션으로 나뉘어 구성되는데, 이 파티션을 shard라고 함.
    3. 인덱스가 생성된 후에는 shard 개수 변경이 불가능.
    4. 종류
      1. Primary Shard
        1.  index 별로 최소 1개 이상 존재해야 함.
        2. Index n개의 document를 색인하게 되면 설정된 shard 수 만큼 분산 저장됨
      2. Replica Shard
        1. Primary shard의 복제본
        2. Replica shard의 개수 == primary shard를 제외한 복제본 수
    5. 다수의 Shard document를 분산 저장하고 있어 데이터 손실 위험을 최소화 할 수 있음.
      1. 장애가 발생하면 master node는 데이터를 재분배 하거나, replica shard primary shard로 승격시켜 서비스 중단 없는 복구 가능. 
        1. 위 상황에서 Node1에 장애가 발생해도 나머지 노드에 모든 replica shard가 존재하므로 중단없이 복구 가능.
      2. N node에서 장애가 발생했을 때
        1. 최소 n+1개의 node가 동일 cluster 내에 존재해야 함.
        2. Replica의 수는 최소 n개 여야 함.
      3. Replica 개수 == 전체 node  - 1
        1. 만약, cluster node에 문제가 발생해 가용한 node  <= replica의 수
          1. 어떠한 노드에도 할당되지 못한 shard가 발생하게 됨
          2. 이런 경우 cluster status “YELLOW”가 된다.
  4. 타입(Type)
    1. Index의 논리적인 구조
    2. 7.0 이후 버전부터 지원 중단
  5. 문서(Document)
    1. 데이터가 저장되는 최소 단위
    2. 기본적으로 JSON 포맷으로 저장됨.
    3. 하나의 Document는 다수의 field로 구성.
    4. 문서 안에서 문서를 저장하는 중첩 구조도 가능함.
  6. 필드(Field)
    1. 문서를 구성하기 위한 속성
    2. Column과 비교할 수 있으나좀 더 dynamic한 데이터 타입.
    3. 하나의 field는 목적에 따라 다수의 데이터 type을 가질 수 있음.
  7. 매핑(Mapping)
    1. 문서의 field, field의 속성을 정의하고 색인 방법을 정의하는 프로세스.
    2. Field명은 중복해서 사용할 수 없음.

 

 

* ES가 대용량 처리가 가능한 이유

-        RDBMS: 모든 요청을 하나의 Server에서 처리

-        ES: 다수의 Server로 분산해서 처리하는 것이 가능

-> 분산 처리를 위해서는 다양한 형태의 node들을 조합해 cluster를 구성해야 함.

Comments