-
elasticsearch sprase docvalueelasticsearch 2021. 4. 13. 20:22반응형
docvalue에 대한 기본 개념은 아래 링크를 참고하자
조금 더 왜 사용하는지 알고 싶다면 아래 링크까지 참고하자
sprase docvalue
sprase라는 단어는 뿌리다라는 뜻을 가지고 있으며 docvalue는 컬럼지향 저장소이다
우리가 실제로 데이터를 저장할 때 필수 값인 것들을 제외하고 모든 값을 다 넣지는 않는다
아래의 그림을 보자
효율성
위의 이미지에서 middle과 city, state와 같은 컬럼은 빈 값으로 되어 있다 이런 값에 대한 공간 낭비는 적합하지 않고
docvalue의 값을 읽을 때도 빈 값은 읽을 필요가 없기 때문에 사라진다면 더 빨리 읽을 수 있게 된다
그리고 같은 타입의 데이터이기 때문에 데이터 압축도 더 할수 있게 된다
재색인 후 데이터 크기를 확인 했을 때 elasticsearch 5버전과 6버전 차이다
Lucene 7의 DocValues 7 : linkedList
Lucene 7은 DocValues 용 API를 임의 액세스에서 순차적으로 변경했다. 이것은 더 작은 저장소 공간과 더 깨끗한 코드를 의미했지만 최악의 경우 세그먼트의 마지막 문서에서 DocValued 필드 값을 가져 오려면 다른 모든 값 블록을 접근해야 했다.
선형 액세스 시간은 어쨌든 대부분의 블록을 접근해야하는 많은 문서에 대한 작은 인덱스 또는 값 요청의 경우 문제가되지 않았다. 따라서 변경의 단점은 거의 눈에 띄지 않거나 적어도 눈에 띄지 않았다. 더 큰 인덱스가있는 일부 설정의 경우 매우 눈에 띄었고 일부에서도 눈에 띄었다. 즉 문서가 많은 인덱스에는 자주 문제가 되었다
최적화 : 점프 테이블
Lucene 7 DocValues 구조 는 순차적으로 빌드되고 빌드가 완료된 후 업데이트되지 않는다는 전문화와 함께 데이터 노드 의 linkedlist 으로 작동 한다. 이렇게하면 빌드 중에 기본 인덱스 데이터에서 노드 오프셋을 수집하고 인덱스 데이터와 함께 이러한 오프셋의 배열을 저장할 수 있다.
노드 오프셋에 빠르게 액세스 할 수 있으므로 DocValue 항목에 대한 최악의 액세스 시간은 문서 수와 무관하다.
참조
https://www.elastic.co/kr/blog/minimize-index-storage-size-elasticsearch-6-0
https://speakerdeck.com/elastic/get-the-lay-of-the-lucene-land-1?slide=22
https://www.elastic.co/kr/blog/minimize-index-storage-size-elasticsearch-6-0
http://www.nosqlnotes.com/technotes/searchengine/lucene-8-docvalues/
반응형'elasticsearch' 카테고리의 다른 글
elasticsearch index sorting으로 퍼포먼스 향상 (0) 2021.04.21 elasticsearch는 어떤 segment 부터 읽을까? (0) 2021.04.16 elasticsearch segments 2부 (0) 2021.03.27 elasticsearch search type query then fetch and dfs (0) 2021.03.25 elasticsearch close api (0) 2021.03.24