index
문서에서 키워드를 찾아보기 쉽도록 정렬 및 나열한 목록이다.
인덱스(= 책갈피)는 테이블을 빨리 조회하기 위해 테이블 데이터에 포인터를 주는 검색 방법이다.
인덱스는 책의 목차와도 같아서 특정 컬럼에 인덱스를 지정해 주면 테이블 조회 시 인덱스를 이용해 빠르게 조회할 수 있게 된다.
DB 관점으로 보면 목차의 제목은 PK와 같은 레코드를 대표하는 값을 의미하고 몇 번 페이지를 나타내는 것은 실제 데이터 레코드가 존재하는 물리적 주소로 이해하면 된다. 레코드에서 대표하는 값을 뽑기 때문에 문서에서 키워드를 뽑는 index라고 명명하는 것이다.
inverted index
키워드를 통해 문서를 찾아내는 방식이다. 책에서 맨 뒤에 나와 있는 찾아보기와 같다. 검색 성능이 매우 빠르다.
index를 사용한 검색
'철수'라는 키워드로 검색을 하면 일반적으로 테이블 데이터에서 한 줄씩 like '%철수' 검색을 통해 데이터를 검색한다. 단순히 컬럼을 읽는 느낌이 아니라 텍스트 하나하나를 읽어야 한다. 만약 데이터가 1000 page가 넘게 DB에 저장돼 있다면 검색을 위해 엄청난 양의 데이터를 읽어야 한다.
inverted index를 사용한 검색
inverted index를 사용하면 검색 엔진에서는 추출된 각 키워드를 term이라고 부른다. 이렇게 inverted index가 있으면 '철수'를 포함하고 있는 문서의 id를 얻어올 수 있다. inverted index를 사용하면 데이터가 늘어나도 찾아가야 할 행이 늘어나는 것이 아니라 inverted index가 가리키는 id의 배열값이 추가되는 것이므로 속도의 저하 없이 빠른 속도로 검색이 가능하다.