Cardinality Estimation
Cardinality Estimation(카디널리티 추정)은 데이터 집합에서 서로 다른 값(고유 원소)의 개수를 정확한 계산 없이 근사적으로 추정하는 기법이다. 대규모 데이터에서 정확한 계수가 비용이 클 때, 적은 메모리로 빠르게 근사치를 구한다.
카디널리티 추정은 데이터베이스 쿼리 최적화, 관측 시스템의 고유 지표 계산, 네트워크 트래픽 분석 등에서 널리 활용된다. HyperLogLog 같은 확률적 알고리즘이 대표적으로 사용된다.
주요 특징
- 근사 계산: 정확한 계수 대신 통계적 근사치를 산출함.
- 낮은 메모리: 적은 자원으로 대규모 데이터를 처리함.
- 확률적 알고리즘: HyperLogLog 등 확률 기반 기법을 사용함.
- 빠른 처리: 스트리밍 데이터에서도 신속히 추정함.
- 병합 가능성: 부분 결과를 합쳐 전체를 추정함.
장점
- 효율성: 적은 자원으로 대규모 계산을 수행함.
- 확장성: 데이터 규모가 커도 안정적으로 동작함.
- 실시간 분석: 스트리밍 환경에서 즉시 추정함.
- 비용 절감: 정확 계산 대비 연산·저장 비용을 줄임.
- 분산 처리: 부분 결과 병합으로 분산 계산이 용이함.
관련 용어
- HyperLogLog: 적은 메모리로 고유 개수를 추정하는 알고리즘.
- 카디널리티: 집합에 포함된 고유 값의 개수.
- 확률적 자료구조: 근사 결과를 제공하는 메모리 효율 자료구조.
- 쿼리 최적화: 실행 계획을 개선하는 데이터베이스 기법.
- 관측 가능성: 시스템 상태를 지표로 파악하는 능력.
주요 솔루션 및 사용 사례
- 주요 솔루션
- HyperLogLog: 대규모 고유 값 추정에 널리 쓰이는 알고리즘.
- DB 통계 추정: 옵티마이저가 카디널리티를 추정해 계획을 세움.
- 모니터링 지표: 고유 사용자·요청 수를 근사 계산함.
- 스트리밍 분석 엔진: 실시간 데이터의 고유 수를 추정함.
- 확률적 카운터: 적은 메모리로 개수를 추적하는 구조.
- 사용 사례
- 쿼리 성능 최적화: 추정치로 실행 계획을 개선함.
- 고유 방문자 집계: 대규모 트래픽의 순 방문자를 추정함.
- 네트워크 분석: 고유 IP·플로우 수를 근사 계산함.
- 관측 지표 계산: 고유 라벨·시계열 수를 추정함.
- 로그 분석: 대량 로그의 고유 항목을 빠르게 추정함.

