ETC/Elasticsearch

[elasticsearch] 데이터 저장

seokhyun2 2024. 10. 27. 19:26

elasticsearch는 data storage로써, 데이터를 저장하는 것이 기본이며 저장된 데이터 중에 검색을 빠르게 할 수 있는 검색엔진입니다.

오늘은 elasticsearch가 어떻게 데이터를 저장하는 지 알아보도록 하겠습니다.

 

우선 RDB를 사용하면, table과 column을 활용하여 데이터의 구조를 선언해서 사용하게 되어있습니다.

elasticsearch는 유사하게 index와 field로 구성할 수 있습니다.

각 field는 string, integer, boolean 등의 값을 저장할 수 있으며 검색 전략에 따라서 어떤 토크나이저를 사용할 지 설정할 수 있습니다.

토크나이저는 추후에 좀 더 자세하게 따로 포스팅해보도록 하겠습니다.

 

RDB와 elasticsearch를 비교해보면 아래의 표와 같이 매칭해서 이해하시면 됩니다.

한 가지 짚고 넘어갈 점은, RDB는 static한 구조로 table에 정의되어 있는 column만 사용할 수 있고 추가를 위해서는 table을 수정해야만 하는데, elasticsearch의 index는 dynamic하게 field를 추가할 수 있는 차이점이 있습니다.

RDB elasticsearch
table index
column field

 

구성이 어떻게 되는지 알아보았다면 실제로 저장이 어떻게 되는 지 좀 더 알아보겠습니다.

elasticsearch에서 저장되는 문서 하나는 document라고 하고, document는 JSON 구조로 이루어져있습니다.

index들은 document들을 논리적으로 묶어주는 단위이고 document들은 여러 개의 field로 이루어진 실제 문서라고 보시면 됩니다.

elasticsearch의 index는 기본적으로 샤드 구성을 가지고 document들을 저장하게 되는데요.

빠른 검색 속도를 위해서 병렬처리를 할 수 있도록 기본적으로 샤드로 구성을 하게 되어 있습니다.

elasticsearch는 데이터 저장에 replica도 지원을 합니다. 

replica는 기본적으로 안정성을 위하여 데이터가 날아가는 것을 방지하기 위함 뿐만 아니라, replica에서도 검색을 할 수 있도록 구성되어 있어 replica를 적절하게 설정하면 검색 속도도 빨라지는 효과를 볼 수 있습니다.

 

그래서 클러스터에서는 여러 개의 노드에 걸쳐서 shard와 replica가 나뉘어 저장되는데, shard와 replica의 갯수는 정해진 것은 전혀 없고 공식 문서에서도 테스트를 통해서 shard와 replica 갯수를 설정해야 한다고 합니다.

 

오늘은 elasticsearch에 데이터가 어떻게 저장되는지 간단하게 알아보았습니다.

다음에는 elasticsearch 클러스터 구성이 어떻게 되는지 알아보도록 하겠습니다.

'ETC > Elasticsearch' 카테고리의 다른 글

[elasticsearch] 클러스터  (0) 2024.11.10
[elasticsearch] why elasticsearch?  (0) 2024.10.13