[Elastic Stack] Elasticsearch 란?
DB

[Elastic Stack] Elasticsearch 란?

728x90

엄청나게 대량데이터를 빠르게 검색하는 것이 필요할때, Elasticsearch(ES)를 한번쯤 들어보신적이 있으실 것 같습니다. 오늘은 이 Elasticsearch에 대해 간단하게 소개를 해보려고합니다.


Elasticsearch 정의

Elasticsearch는 Elastic사에서 만든 Apache Lucene(아파치 루씬)기반의 java 오픈소스 분산 검색엔진입니다. 검색엔진인 만큼 방대한 양의 데이터를 신속하게, 거의 실시간급으로 으로 저장, 검색, 분석할 수 있습니다.


Elasticsearch 구조

클러스터(Cluster)

ES는 클러스터(Cluster)로 관리가 됩니다. 따라서 클러스터는 ES에서 가장 큰 시스템 단위를 의미하며, 이 클러스터는 최소 한개이상의 노드로 이루어져있습니다. 서로 다른 클러스터는 데이터의 접근, 교환을 할수없는 독립적인 시스템이며, 한서버에 여러개의 클러스터가 있을 수도 있습니다

 

노드(Node)

ES 클러스터를 구성하는 노드에는 여러 종류가 있고, 각 종류마다 역할이 정해져있습니다.

  • Master Node: 클러스터를 제어하는 관리자격의 노드이며, 인덱스 생성/삭제, 노드 추적/관리, 샤드에 데이터 등록 등 가장 중요한 역할을 맡습니다.
  • Data Node: 데이터가 실질적으로 저장되는 노드입니다. 메모리를 많이 소모하므로 모니터링이 필요하며 마스터노드와 분리되는것이 좋습니다.
  • Ingest Node: 데이터를 전처리하기 위한 파이프라인을 실행하는 역할을 합니다
  • Coordination only node: 로드밸런서와 비슷한 역할을 합니다.

 

인덱스(Index)

인덱스는 RDB에서 Database와 상응하는 개념입니다. 하나의 인덱스를 하나의 테이블처럼 쓸수도 있으며 json 형식으로 정보를 인덱스에 저장할 수 있습니다.

 

샤드(Shard)

샤딩(Sharding)은 데이터를 분산해서 저장하는 방법을 뜻합니다. 하나의 인덱스에 여러개의 샤드를 할당해서 분산저장을 할 수 있습니다. 샤드의 갯수를 조정하여 속도를 튜닝하기도 합니다.

 

레플리카(Replica)

Replica는 샤드의 복제본이라고 보시면 됩니다. ES는 클러스터형태로 관리되기때문에 노드가 여러개일수가 있는데, 하나의 인덱스에 대한 여러 샤드는 여러개의 데이터노드에 분산되어있을 수 있습니다. 이때 replica 설정으로 복제 샤드를 만들어서 원본 샤드와 다른 데이터 노드에 저장해둔다면, 원본 샤드가 유실되어도 복제본으로 복구를 하여 데이터의 신뢰성을 보장할 수 있습니다.


Elasticsearch 특징

  • 편리한 Scale Out: 샤드 갯수 조정을 통해 데이터 규모가 수평적으로 늘어날 수 있습니다
  • 데이터의 안정성 보장: replica 설정을 통해 데이터 유실을 방지하고 신뢰성을 높일 수 있습니다
  • Schema Free: 스키마 개념이 없기 때문에 RDB처럼 schema 제약에 신경 쓸 필요가 없습니다
  • Restful: Restful API 호출을 통해 저장/호출/수정/설정 등등을 수행합니다
  • 역색인(Inverted Index): ES 검색이 빠른 이유입니다. ES는 저장하는 텍스트를 파싱해서 검색어 사전을 만든 다음 역색인 방식으로 텍스트를 저장합니다.

단점:

  • ES는 인메모리 버퍼를 사용하기땜누에 쓰기와 읽기 작업을 동시에 진행할 수 없습니다.
  • 트랜잭션을 지원하지 않습니다
  • 진정한 의미의 업데이트를 지원하지 않습니다. 대신 삭제후 저장이 진행됩니다.
출처:
- 🙈[Elasticsearch] 기본 개념잡기🐵
- [데이터베이스] Elasticsearch란?
- Elasticsearch란? (개념 및 종류, RDBMS와 차이)
728x90

'DB' 카테고리의 다른 글

[MySQL] MMM, MHA  (0) 2023.04.10
[Redis] Redis Serializer 종류 (대표 3가지)  (0) 2022.10.27
[Redis] Redis란?  (0) 2022.10.12