하나의 클러스터에 여러개의 노드가 존재할 수 있다.
샤드 설명
- 샤드는 인덱스(ES의 논리적 그룹핑 단위)를 더 작은 조각으로 나누는 방법이다.
- 각 조각은 샤드(Shard)라 부른다.
- 샤딩은 인덱스 레벨에서 이뤄진다.
- 주요 목적은 데이터 볼륨을 가로로(Horizontally) 늘리기(?) 위함이다.
- 인덱스가 저장할 수 있는 문서 수를 늘릴 수 있다. 따라서, 노드에 인덱스 수를 늘릴 수 있다.
- 각 샤드는 Apache Lucene Index 이다(?)
- ES 인덱스는 하나 이상의 Apache Lucene Indices 이다.
- 샤드는 정해진 사이즈가 없으며, Doc이 추가될 수록 증가할 수 있다. Doc은20억개 가량 저장할 수 있따(?)
- 인덱스는 디폴트로 싱글 샤드를 가진다.
- 샤딩은 쿼리 Throughput을 향상 시킬 수 있다.
※ 퀴즈)
인덱스가 사이즈를 늘리게 된다면, 하나의 노드로는 부족할 수 있다. 결국 클러스터 안의 어떠한 노드도 해당 인덱스를 가진 문서를 수용할 수 없게 된다. 따라서, 데이터 볼륨 스케일을 늘리는 것은 샤딩으로 가능하다. 샤드 Replica 증가가 곧 노드 증가로 이어진다.
"샤드는 인덱스를 찢는다!!"
Managing Documents
# 인덱스 생성 PUT /products { "settings": { "number_of_shards": 2, "number_of_replicas": 2 } } # 인덱스 목록 조회 GET /_cat/indices # 인덱스 결과 조회 GET /products # 인덱스 도큐먼트 지정(랜덤 ID, 지정 ID) POST /products/_doc { "name": "Coffee Maker", "price": 64, "in_stock": 10 } POST /products/_doc/100 { "name": "Toster", "price": 49, "in_stock": 4 } # ID 포함 결과 조회 GET /product/_doc/100 # 값 업데이트, 추가 및 조회 POST /product/_update/100 { "doc": { "in_stock": 3 } } POST /product/_update/100 { "doc": { "tags": ["electronics"] } } GET /product/_doc/100 |
반응형
'시스템 > DB' 카테고리의 다른 글
SELECT 기본 용법 (0) | 2022.08.02 |
---|