카디날리티 집계(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 |