[ElasticSearch] 역색인(Inverted Index)

안경준·2025년 5월 9일
post-thumbnail

🎯 Goal

  • 역색인의 필요성을 이해할 수 있다.

⛳ Process

면접 과정에서 역색인이라는 단어를 접했다. 그 당시에는 정확히는 모르겠으나 인덱스의 반대 역할을 할 것이라고 예상하고 답했는데 엘라스틱서치에서 이 역색인을 활용해 검색 속도를 높인다고 한다.

보통 RDBMS에서 어떤 단어가 포함되어 있는 행들을 가져오려고 한다면 like 검색을 활용할 것이다. 이 검색은 처음 행부터 내려가면서 단어가 포함되어 있는지 확인하면서 모든 행들을 탐색할 것이고 행의 개수가 많으면 많을수록 성능이 떨어질 것이다. 이를 해결하기 위해 엘라스틱서치에서는 역색인을 활용한다.

역색인은 inverted index인만큼 인덱스의 반대 역할을 한다. 인덱스의 경우 원하는 행을 빠르게 검색하기 위해 할당하는 것이라면 역색인(역인덱스)는 텀(Term)과 문서 ID로 이루어져 있다. Term은 문서 내의 단어(형태소)들이며 해당 단어를 인덱스로 해당 단어가 포함되어 있는 문서의 ID를 저장해둔다. 이렇게 된다면 데이터가 늘어날수록 행이 늘어나는 것이 아닌 역색인이 가리키는 ID의 개수만 추가되는 것이기 때문에 큰 속도 저하 없이 빠른 속도로 검색이 가능하다.

이런 역색인을 데이터가 저장되는 과정에서 만들기 때문에 엘라스틱서치는 데이터를 입력할 때 저장이 아닌 색인을 한다고 표현한다.

📖 Learning Point

  • 데이터가 많아질수록 신경써야하는 것들이 많다는 것을 알게 되었다.
  • 이런 아이디어를 개발에 활용할 수 있어야겠다는 생각이 들었다.

Reference
6.1 역 인덱스 - Inverted Index

profile
실력있는 개발자가 되기 위해 매일매일 성장하고 있습니다!

0개의 댓글