segment
-
elasticsearch segments 2부elasticsearch 2021. 3. 27. 11:58
색인 작업 시 세그먼트의 기본 동작 방식 루씬 인덱스는 내부적으로 다수의 세그먼트로 구성되어 있다 루씬은 검색 요청을 받으면 다수의 세그먼트 조각들이 각각 검색 결과를 만들어 내고 이를 통합해서 하나의 결과로 합쳐서 응답하도록 설계되어 있다 이러한 검색 방식을 세그먼트 단위 검색(Per-Segment Search)라고한다 루씬은 위의 이미지와 같이 세그먼트들을 관리하기 위한 용도로 커밋 포인트(Commit Point)라는 자료구조를 제공한다 커밋 포인트는 여러 세그먼트의 목록 정보를 가지고 이고 검색시 이를 적극적으로 활용한다 루씬의 IndexSearcher는 검색 요청시 커밋 포인트를 이용해 가장 오래된 세그먼트부터 차례대로 검색한 후 각 결과를 하나로 합쳐서 제공한다 색인 요청이 루씬에 들어오면 In..
-
세그먼트의 불변성 - 장점elasticsearch 2021. 2. 12. 12:55
세그먼트의 불변성으로 인해 많은 장점을 가져갈 수 있다 1. 불변이기 때문에 동시성을 신경 쓸 필요가 없다 스레드가 데이터를 점유한 상황일 때를 신경 쓸 필요가 없는 것이다 수정이 가능하다면 수정하는 동안 다른 스레드는 접근 불가능하게 한다거나 해서 퍼포먼스가 떨어질 수 있다 2. 엘라스틱 서치는 하나의 필드에 또 여러 개의 필드를 만들어서 사용한다 그런데 수정이 가능하다면 그 수많은 필드의 수많은 Terms를 찾아서 수정해줘야 한다 그리고 그걸 수정하는 동안 해당 데이터가 검색이 안될 수 있다 그래서 불변으로 해서 새로운 세그먼트를 추가해서 기존 데이터는 삭제 비트에 마크만 해주고 나중에 병합으로 백그라운드 스레드에서 처리해서 *리소스도 절감하고 검색도 빠르게 제공할 수 있다 3. 시스템 캐시를 적극 ..