코딩관계론

엘라스틱 서치 본문

개발/Hot-Stock

엘라스틱 서치

개발자_티모 2025. 3. 6. 01:43
반응형

기존에는 뉴스 문서의 빠른 검색과 다양한 기능 제공을 위해 데이터베이스(DB)를 사용했으나, 성능과 확장성 측면에서 한계를 느껴 엘라스틱서치(Elasticsearch)를 도입하기로 했습니다.

기본적으로 텍스트 검색은 대부분의 DB가 지원하며, 개발자가 직접 구현할 수도 있지만, 효율적이고 빠른 검색을 위해 전문 검색 엔진을 사용하는 것이 더 효과적입니다.

1. 엘라스틱서치(Elasticsearch)란?

엘라스틱서치는 검색과 분석을 위해 설계된 분산형 RESTful 검색 엔진입니다.

  • Lucene 기반: 내부적으로 Apache Lucene 라이브러리를 사용해 텍스트를 색인하고 검색합니다. 강력한 전문 검색 기능을 제공합니다.
  • 분산 처리: 대규모 데이터를 효율적으로 처리하기 위해 여러 노드에 데이터를 샤딩(sharding)하여 저장하고 관리합니다.
  • RESTful API 제공: JSON 형식의 HTTP 요청을 통해 데이터를 손쉽게 추가, 조회, 삭제, 집계할 수 있습니다.

2. 엘라스틱서치(Elasticsearch) 구조

2-1. 인덱스(Index)

  • 정의: 데이터를 논리적으로 저장하는 공간으로, 관계형 데이터베이스의 데이터베이스(DB)와 비슷한 개념입니다.
  • RDB의 테이블 개념과 유사하지만, 데이터 구조에 엄격한 제약이 없습니다.

2-2. 문서(Document)

  • 정의: 인덱스 내에서 실제로 저장되는 개별 데이터 단위입니다.
  • 특징: 관계형 DB의 행(Row)과 비슷하지만, 엘라스틱서치에서는 엄격한 스키마(schema)를 강제하지 않아 더 유연하게 데이터를 다룰 수 있습니다.

3.  샤드 와 레플리카

3-1. 샤드(Shard)

  • 정의: 인덱스를 물리적으로 나눈 데이터 조각으로, 분산 환경에서 데이터를 효율적으로 관리하기 위한 단위입니다.
  • 목적: 데이터가 증가할 때 샤드를 통해 분산 저장하여 성능과 확장성을 높입니다.
  • 프라이머리 샤드(primary shard): 원본 데이터를 저장하며, 데이터 처리의 중심입니다.
  • 샤드 수 설정: 인덱스 생성 시 설정하며 변경이 어렵기 때문에 초기 설계 단계에서 신중히 결정해야 합니다.

3-2. 레플리카(Replica)

  • 정의: 데이터 복제본으로, 프라이머리 샤드의 데이터를 복제하여 저장합니다.
  • 목적: 데이터 유실을 방지하고, 노드 장애 시 서비스 가용성을 보장합니다.
  • 제약 조건: 프라이머리 샤드와 동일한 노드에 위치할 수 없으며, 자동으로 다른 노드에 배치됩니다.
반응형