Inverted Index

역 인덱스.

출처 : 참조블로그

일반적으로 오라클이나 RDBMS 같은 관계형 DB 에서는 데이터를 테이블 구조로 저장하게 되는데, 테이블에서 특정컬럼에 fox 라는 단어가 포함된 행들을 가져온다고 하면 컬럼을 한 줄 씩 찾아 내려가면서 fox 가 있으면 가져오고 없으면 넘어가는식으로 가져오게 된다.

es

  • DB
    • like 검색을 사용하기 때문에 데이터가 늘어날수록 검색해야 할 대상이 늘어남
    • 시간이 오래 걸린다.
    • row 안에 내용을 모두 읽어야 하기 때문에, 기본적으로 속도가 느리다.
  • ES
    • 데이터를 저장할 때 역 인덱스(inverted index) 구조를 만들어 저장



역인덱스 저장 방식

img

  • 역 인덱스는 책의 맨 뒤에 있는 주요 키워드에 대한 내용이 몇 페이지에 있는지 볼 수 있는 찾아보기 페이지에 비유할 수 있다.
  • ES 에서 추출된 각 키워드를 텀(Term) 이라고 부른다.
  • 역 인덱스가 있으면 fox 를 포함하고 있는 도큐먼트들의 id를 바로 얻어올 수 있다.

img

  • ES 는 데이터가 늘어나도 찾아가야 할 행이 늘어나는것이 아니라, 역 인덱스가 가리키는 id의 배열값이 추가되는 것 뿐
  • 큰 속도 저하 없이 빠른 속도로 검색이 가능하다

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

댓글남기기