TIL:) AWS ElasticSearch

⭐알게 된 점⭐

👉 ElasticSearch란?

- Apache Lucene 기반의 Java 오픈소스 분산 검색 엔진

- 방대한 양의 데이터를 신속하게, 거의 실시간으로 저장, 검색, 분석 가능

- 검색을 위해 단독으로 사용하기도 하지만, ELK 스택으로 사용되기도 함

 

👉 ELK 스택

1. Logstash : 다양한 소스(DB, csv 파일 등)의 로그 또는 트랜잭션 데이터를 수집, 집계, 파싱하여 ElasticSearch로 전달

2. Elasticsearch : Logstash로 받은 데이터를 검색 및 집계를 하여 필요한 관심 있는 정보를 획득

3. Kibana : Elasticsearch의 빠른 검색을 통해 데이터를 시각화 및 모니터링

 

ElasticSearch와 관계형 DB 비교

 

👉 ElasticSearch 아키텍쳐 / 용어 정리

1. 클러스터 (Cluster)

- ElasticSearch에서 가장 큰 시스템 단위를 의미

- 최소 하나 이상의 노드로 이루어진 노드들의 집합

- 서로 다른 클러스터는 데이터의 접근, 교환을 할 수 없는 독립적인 시스템으로 유지

- 여러 대의 서버가 하나의 클러스터를 구성할 수 있고, 한 서버에 여러 개의 클러스터가 존재할 수 있음

 

2. 노드 (Node)

- ElasticSearch를 구성하는 하나의 단위 프로세스를 의미

- master-eligible node

  클러스터를 제어하는 마스터로 선택할 수 있는 노드

  인덱스 생성, 삭제

  클러스터 노드들의 추적, 관리

  데이터 입력 시 어느 샤드에 할당할 것인지

- Data node

  데이터와 관련된 CRUD 작업과 관련있는 노드

  CPU, 메모리 등 자원을 많이 소모하므로 모니터링이 필요하며, master 노드와 분리되는 것이 좋음

- Ingest node

  데이터를 변환하는 등 사전 처리 파이프라인을 실행하는 역할

- Coordination only node

  data node와 master-eligible node의 일을 대신하는 이 노드는 대규모 클러스터에서 큰 이점이 있음

  로드밸런스와 비슷한 역할을 함

 

3. 인덱스 ( Index ) / 샤드( Shard ) / 복제( Replica )

- index는 RDBMS에서 database와 대응하는 개념

- 샤딩(sharding)

  데이터를 분산해서 저장하는 방법을 의미

  Elasticsearch에서 스케일 아웃을 위해 index를 여러 shard로 쪼갠 것

  기본적으로 1개가 존재, 검색 성능 향상을 위해 클러스터의 샤드 갯수를 조정하는 튜닝을 하기도 함

- replica

  또 다른 형태의 shard

  노드를 손실했을 경우 데이터의 신뢰성을 위해 샤드들을 복사하는 것

  replica는 서로 다른 노드에 존재할 것을 권장

 

👉 특징

- Scale out

  샤드를 통해 규모가 수평적으로 늘어날 수 있음

- 고가용성

  Replica를 통해 데이터의 안정성을 보장

- Schema Free

  Json 문서를 통해 데이터 검색을 수행하므로 스키마 개념이 없음

- Restful

  데이터 CRUD 작업은 Restful API를 통해 수행Data CRUD Elasticsearch Restful

SELECT GET
INSERT PUT
UPDATE POST
DELETE DELETE

- 역색인(inverted index) 방식

  키워드를 통해 문서를 찾아내는 방식

  아주 빠른 전체 텍스트 검색이 가능

  문서에 나타나는 모든 고유한 단어 목록을 만들고, 각 단어가 발생하는 모든 문서를 식별

BELATED ARTICLES

more