카디날리티 집계(Cardinality Aggregation)?

엘라스틱서치 에서 제공하는 approximation aggregation으로 필드에서 고유한 값의 대략적인 개수를 계산한다.

 

HyperLogLog++(HLL) algorithm (확률적 자료구조 기반 알고리즘)

엘라스텍서치의 cardinality 는 HLL 알고리즘을 기반한다.

(wiki : https://en.wikipedia.org/wiki/HyperLogLog)


HLL 알고리즘의 특징 : 

  • 정확도(precision) 설정 가능
    단, 정확도를 올릴 수록, 메모리 사용량이 증가
  • cardinality가 낮은 집합일 수록 정확도가 높아진다.
  • 메모리 사용량이 고정적
  • 메모리 사용량은 정확도에 비례

정확도 설정

  • precision_threshold (0 ~ 40,000)
  • 일반적으로 cardinality가 precision 보다 적다면 거의 항상 100% 정확
  • 메모시 사용률 =  precision_threshold * 8 bytes

 그래프.1 threshold 에 따른 에러율 


 

성능 향상을 위한 방안

  • cardinality 대상 필드를 hash 로 정의한다.
  • 단 cardinality 가 크거나 string 인 경우만 효과적이다.

좀 더 자세히 


'생활데이타 > ElasticSearch' 카테고리의 다른 글

[logstash] JDBC input plugin  (0) 2017.03.31
[ElasticSearch] 검색/집계 (Aggregation)  (0) 2016.06.05

+ Recent posts