Database/Elaticsearch

Lucene Segment

BUST 2018. 8. 26. 15:38

Lucene Segment

  • 루씬 세그먼트
    • Inverted Index, Doc Value, 원본 문서 등을 저장하고 있는 단위 파일
      • Inverted Index?
        • RDBMS를 데이터를 테이블형태로 저장한다
          • id: 1, value : name
        • 검색엔진에서는 inverted index라는 구조로 저장
          • token: name, doc id : 1, 2
  • Invertered Index를 하나의 거대한 파일이 아니라 여러개의 작은 파일 단위로 저장
  • 입벽 버퍼가 가득차거나, 1초마다 하나씩 생성
  • 한번 생성된 세그먼트는 변경이 되지 않는다.
  • 문서 변경/삭제 과정
    • update는 존재하지 않음, delete & insert
    • 삭제는 삭제되었다는 표시만 하고 검색에서 제외
    • 세그먼트 병합 과정에서 삭제된 문서를 빼고 나머지 문서들을 모아 새로운 새그먼트를 만든다.
    • 세그먼트 병합의 비용은 크다
      • 디스크 I/O

  • 오래된 세그먼트는 크기가 크고, 최근에 생성된 세그먼트를 상대적으로 크기가 작다.

  • 오래된 문서를 삭제하는 것은 더욱 비용이 크다

  • 날짜별로 저장 영역(인덱스)를 구분하는 것이 바람직하다.

    • 여러 인덱스를 묶어서 검색할수 있는 멀티 테넌시를 지원함.

ElasticSearch Tip

  • 로그는 가능하면 날짜별로 나눠서 저장
  • 원본 데이터는 항상 잘가지고 있어야 된다. 새롭게 인덱스를 만들어야 되는 경우가 많다.
  • 세그먼트 병합은 사용하지 않는 시간에