728x90

Elastic Search는 검색 엔진.

관계형 DB(RDBMS)와의 관계

관계형 데이터베이스에 대응되는 Elastic Search의 개념들

데이터 접근 방식

Elastic Search는 Rest API를 통한 데이터 조작이 가능하다.

Inverted Index

Elastic Search의 가장 큰 특징이라고 하면 inverted index이다.
일반적인 index는 문서를 빠르게 찾기 위해서 문서의 위치를 가르키지만

inverted index는 단어들에 대해서 어떤 단어가 어느 문서에 포함되어있는지를 기록합니다.

가령, 아래와 같은 데이터베이스가 있다고 합시다.

ID Name
1 Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
2 Retrieval-Augmented Generation for Large Language Models: A Survey
3 A Survey on Retrieval-Augmented Text Generation
4 Benchmarking Large Language Models in Retrieval-Augmented Generation
5 Generation-Augmented Retrieval for Open-domain Question Answering
6 MEASURING MASSIVE MULTITASK LANGUAGE UNDERSTANDING

위 테이블에서 Retrieval 이라는 단어가 포함된 행을 가져오려면 ID = 1 부터 테이블의 끝까지 반복적으로 검색을 해야합니다.

따라서, 데이터의 개수가 많아질수록 검색할 대상이 늘어나고 row 안의 내용을 모두 읽어야하므로 검색 속도가 매우 느립니다.

반면에 아래와 같이 inverted index를 적용한 테이블을 구성하는 경우를 생각해 볼 수 있습니다.

Term ID
Retrieval 1,2,3,4,5
Augmented 1,2,3,4,5
Generation 1,2,3,4,5
MEASURING 6
Language 1,2,3,4,5,6
for 1,2,5
Open 5

Elastic Search에서는 위와 같은 inverted index를 구성해서 데이터가 늘어나더라도 큰 속도 저하 없이 빠르게 검색이 가능합니다.

Elastic Search에서는 추출된 각 키워드를 Term이라고 부릅니다.

Elastic Search의 특징

  • Elastic Search는 분산 처리를 통해 빠른 검색이 가능하고 대량의 비정형 데이터 검색이 가능하다.
  • 전문 검색과 구조 검색 모두를 지원한다.
  • 검색 엔진이지만 대용량 스토리지로 활용이 가능하다.

Elastic Search의 장점

  • 오픈소스
  • 전문 검색
    • 내용 전체를 indexing해서 특정 단어가 포함된 단어를 검색할 수 있다.
  • RESTful API
    • RestAPI 형식으로 요청하고 json format을 사용하기 때문에 개발 환경에 독립적으로 사용 가능하다.
  • Schemaless
    • 비정형 데이터에 대해서도 indexing과 검색이 가능
  • Inverted Index
    • 앞서 설명한대로 데이터의 양이 증가해도 검색 속도에 큰 영향이 없다.
  • Shard
    • 분산 구성이 가능해서 확장성이 높다.Elastic Search의 단점
  • Transaction Rollback 지원 X
    • 성능을 위해서 Rollback, Transaction을 지원하지 않는다..(??)
  • 데이터의 업데이트를 제공하지 않는다
    • 업데이터를 하는 경우 기존 문서를 제거하고 새로운 문서를 생성한다.

용어 설명

1. Indexing

  • 데이터를 검색 가능한 구조로 바꾸는 과정
  • 원본 문서를 검색어 토큰으로 변환 후 저장

2. Document

  • 단일 데이터 단위
  • RDBMS의 Row라고 생각하면 된다

3. Index

  • Document를 모아놓은 집합
  • Indexing이 완료된 데이터가 저장되는 공간
  • 문서들의 논리적인 집합 단위

4. Shard

  • index가 분리되는 단위
  • 각 노드에 분산되어 저장
  • 단일 검색 인스턴스
  • 클러스터에 노드를 추가하면 샤드들이 각 노드들로 분산되고 디폴트로 1개의 복제본을 생성
  • 처음 생성된 샤드를 primary shard라 하고, 이후에 생성된 샤드를 replica하 함
  • 노드가 1개인 경우 primary shard만 존재
  • primary shard와 replica는 필연적으로 동일한 데이터를 저장하고 데이터베이스 안전성을 위해 서로 다른 노드에 저장됩니다.

5. Master Node

  • 인덱스의 메타 데이터, 클러스터 상태 정보를 관리하는 노드.
  • 클러스터당 1개의 마스터 노드가 존재
  • 마스터 후보 노드가 존재하며 마스터 노드가 모종의 이유로 다운되면 후보 노드중 하나가 마스터 노드의 역할을 수행

6. Data Node

  • 실제 indexing된 데이터가 저장된 노드

Reference

  1. https://www.elastic.co/guide/en/elasticsearch/reference/current/elasticsearch-intro.html
  2. https://esbook.kimjmin.net/
  3. https://jaemunbro.medium.com/elastic-search-%EA%B8%B0%EC%B4%88-%EC%8A%A4%ED%84%B0%EB%94%94-ff01870094f0

+ Recent posts