ES 게시글
1. Elastic Search 관련 용어 정리
1.1 ES vs RDBMS
1.1.1 기본 용어 정리
RDBMS | Elastic Search |
Database | Index |
Table | Type |
Row | Document |
Column | Field |
Index | Analyze |
Primary Key | _id |
Schema | Mapping |
Physical Partion | Shard |
Logical Partion | Route |
Relational | Parent/Child, Nested |
SQL | Query DSL |
1.1.2 CRUD 용어 비교
RDBMS | Elastic Search |
Select | Get |
Insert | Put |
Update | Post |
Delete | Delete |
1.2 ElasticSearch 아키텍쳐 정리
1.2.1 Cluster(클러스터)
- ES의 가장 큰 시스템 단위
- 하나 이상의 노드(서버)가 모인 것으로 이를 통해 데이터를 저장하고 검색하는 기능 제공
- 서로 다른 클러스터는 데이터 접근, 교환 불가능한 독립적인 시스템으로 유지
- 여러 대의 서버가 하나의 클러스터 구성 가능, 한 서버에 여러 개의 클러스터 존재 가능
1.2.2 Node(노드)
- ES를 구성하는 하나의 단위 프로세스
- 역할에 따라 Master-eligible, Data, Ingest, Tribe 노드로 구분
1.2.3 Index(인덱스)
- RDBMS에서 database와 대응하는 개념
- 도큐먼트를 모은 집합(단위)
- Indexing(색인) : 데이터를 저장하는 행위
1.2.4 Shard(샤드)
- 인덱스의 도큐먼트를 분산 저장하는 저장소 : 노드에 분산되어 저장
- 기본적으로 샤드 단위로 인덱스가 분리
- Sharding(샤딩) : 데이터 분산 저장하는 방법, ES에서 스케일 아웃을 위해 인덱스를 여러 샤드로 쪼갠 것
기본적으로 1개가 존재하며, 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝 가능
- 샤드 구성요소
1.2.4.1 Primary Shard(프라이머리 샤드)
- 디폴트 1개의 샤드로 인덱스 구성(7.0ver)
- 처음 생성된 샤드
1.2.4.2 Replica(복제본)
- 클러스터에 노드 추가 시 샤드들은 노드로 분산, 디폴트로 1개의 복제본 생성
1.2.4.3 예시
- 1개의 인덱스 내 5개의 샤드(0, 1, 2, 3, 4), 클러스터는 4개의 노드로 구성
- 5개의 프라이머리 샤드와 복제본 총 10개의 샤드가 전체 노드에 분배되어 저장
- 같은 샤드와 복제본은 동일한 데이터를 담고 있고, 반드시 상호 다른 노드에 저장
- 만약 Node-3 노드가 사라지면, Node-3의 0, 4번 샤드도 유실된다.
- Node-1에 0번, Node-2에 4번 샤드가 각각 남아 있으므로 전체 데이터 정상 사용 가능
- 클러스터는 유실된 노드의 복구 대기 → 복구 불가 판단 시 복제 시작
- Node-1의 0번 샤드를 Node-2로 복제
- Node-2의 4번 샤드를 Node-4로 복제
- 유실되어 8개인 샤드가 10개로 복구
- 프라이머리 샤드와 리플리카를 통해 ES 운영 중 노드 유실 발생 시에도 데이터의 가용성과 무결성 보장
1.2.5 Document(도큐먼트)
- 데이터 단위
1.3 ES의 간단한 프로세스
2. Elastic Search 특징
2.1 분산형 검색 엔진
- 분산 검색 : 많은 컴퓨터와 네트워크를 사용하여 인덱싱(특정 데이터 골라내는 것) 및 쿼리 처리 등 작업을 진행하는 검색 엔진 기술
2.2 전문(Full text) 검색 엔진
- 전문 검색 : 내용 전체를 색인하여 특정 단어가 포함된 문서 검색
- 내부적으로 역파일 색인구조로 데이터를 저장, 사용자에게 JSON형식으로 데이터 전달
- Key-value 형식이 아닌 문서기반 : 복잡한 형식의 문서도 저장 가능
- JSON이 ElasticSearch가 지원하는 유일한 형식, 입력 데이터를 JSON형식으로의 가공이 필요
2.3 실시간(Real-time) 분석 시스템
- 클러스터가 실행되고 있는 동안 계속해서 데이터가 입력, 동시에 실시간에 가까운 속도로 검색 및 집계 수행
[출처]
https://yoo11052.tistory.com/197
https://www.slideshare.net/deview/2d1elasticsearch
https://github.com/exo-archives/exo-es-search
https://victorydntmd.tistory.com/308
https://www.elastic.co/kr/elasticsearch/
https://esbook.kimjmin.net/06-text-analysis/6.1-indexing-data
https://djlee118.tistory.com/m/153
https://the-dev.tistory.com/30
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
'초보 개발자의 스터디룸' 카테고리의 다른 글
[Elastic Search] 엘라스틱서치란? 2. 역 색인(Inverted Index) (0) | 2023.01.06 |
---|---|
[Kafka] 아파치 카프카란? 2. 개요, 사용 이유, 데이터 모델 (0) | 2023.01.06 |
[Kafka] 아파치 카프카란? 1. 구성요소, 연산방식, 관련용어 (0) | 2023.01.04 |
[GitHub] 이클립스 깃허브 연동 (0) | 2022.12.10 |
[Mac M1] 소소한 맥북 무료 앱 추천(AltTab, Hidden Bar 등) (0) | 2022.12.08 |