Cluster 와 Node (물리적 구분)
노드는 데이터를 저장하며, 데이터 인덱싱과 검색 작업에 관여하는
클러스터의 구성원이 되는 단일 서버들을 가리킨다.
Index 와 Document
인덱스는 유사한 Property 를 가지는 Document 의 집합으로 인덱스 이름으로 식별되며
논리적인 그룹이라고 보면 된다.
Shard
하나의 인덱스는 노드 서버의 용량을 초과할 만큼의 대량의 데이터가 저장 가능하다.
따라서 인덱스를 여러 조각(Shared) 로 나눠서 저장하는 경우가 필요할 수 있는데
이렇게 나누는 것을 샤딩(Sharding) 이라고 한며 인덱스를 생성시 Shard 개수를 지정할 수 있다. (기본값 5)
아래는 단일 노드의 용량이 512 GB 이고 Index 생성시 Shard 개수를 4로 한 경우에 구성된 Cluster 를 보여준다.
Replica
샤드 또는 노드가 장애를 일으키는 경우를 대비하여 하나 이상의 복사본 (Replica Shard)을 생성하며
고가용성을 위해 Replica Shard 는 원본과 다른 노드에 존재한다.
Replica Shard 의 값이 원본 Shard 와 동일함을 보장하기 위해 Shared 는 CRUD 등을 처리하고 나서
Replica Shard 에 복사 작업이 완전히 끝난 다음에서야 이를 확인하고 Client 에 응답하게 된다.
Searching Data
이번에는 Electricsearch 에서 어떻게 데이터를 검색하는지 알아보자.
먼저 하나의 Index 가 포함된 세 개의 Node 로 구성된 Cluster 가 있다고 가정해 보자.
먼저 클라이언트가 검색 쿼리를 클러스터에 보낸다.
Query 를 처음 받은 노드는 "조정 Node" 이며 이 노드는 해당 쿼리를 다른 모든 노드로 보낸다.
이후 이에 대한 응답이 들어오면 자기 자신에 대하여 Query 를 수행하며
결과를 Assemble 하며 클라이언트에 응답을 한다.
Distributing Document accross shards
Document 는 특정 노드에 분배되지 않고 Routing 해시 함수에 의해 랜덤 분배된다.
물리적 / 논리적 구성 비교
Document Example
Querying
통신 방법으로 RestfulAPI 를 사용하므로 GET, PUT, POST, DELETE 를 사용하여
HTTP Request 를 Elasticsearch 서버에 요청한다.
Data structure sample
Compare with Relation DB
'Monitoring > Elasticsearch' 카테고리의 다른 글
06. Mapping (0) | 2020.01.17 |
---|---|
05. Document (0) | 2020.01.17 |
04. Cluster (0) | 2020.01.17 |
03. Install (0) | 2020.01.17 |
01. Elastic Stack (0) | 2020.01.17 |