반응형
Redis의 HyperLogLog(HLL)는 대규모 데이터 집합에서 고유한 원소의 개수(Unique Count, Cardinality) 를 효율적으로 추정하기 위한 확률적 자료구조입니다.
왜 HyperLogLog를 쓰는가?
- 메모리 절약
- 수십억 개의 데이터를 추적해도 약 12KB 메모리만 사용합니다.
- 일반적으로 모든 데이터를 저장해 중복 제거하는 방식보다 훨씬 효율적입니다.
- 빠른 고유 수 계산
- PFADD, PFCOUNT 명령으로 즉시 결과를 얻을 수 있습니다.
- 데이터 스트림(로그 수집, 방문자 수 집계 등)에서 유용합니다.
- 오차 범위
- 완벽한 정확도 대신 약 0.81%의 오차율을 허용합니다.
- 정확도보다 속도와 메모리 절약이 중요한 경우 적합합니다.
동작 원리 (Logs의 의미)
HyperLogLog에서 "logs"라는 말은 로그 파일이 아니라,
데이터를 추정할 때 사용하는 로그 함수(logarithm) 개념을 의미합니다.
- 입력 데이터를 해시로 변환
- 해시 값의 이진 표현에서 앞부분의 0의 개수(leading zeros) 를 찾음
- 이 값을 로그 스케일로 변환하여 분포를 추정
- 여러 샘플을 합산하여 전체 고유 원소 개수를 근사치로 계산
즉, "logs"는 수학적으로 로그 기반 추정법을 의미합니다.
Redis HyperLogLog 관련 명령어
- PFADD key element [element ...] → HyperLogLog에 원소 추가
- PFCOUNT key [key ...] → 고유 원소 개수 추정
- PFMERGE destkey sourcekey [sourcekey ...] → 여러 HyperLogLog를 하나로 병합
활용 사례
- 웹사이트 순 방문자 수(Unique Visitors) 집계
- 이벤트 스트림에서 고유 ID 개수 추정
- 광고 노출 집계, 로그 분석, IoT 센서 데이터 중복 제거
👉 정리하면, Redis HyperLogLog logs는 일반적인 로그 파일이 아니라, 로그(logarithm) 기반 수학 원리로 고유 원소 개수를 근사 추정하는 Redis 기능을 뜻합니다.
반응형