확률형 데이터 구조
확률형 데이터 구조 (Probabilistic)
Redis가 제공하는 데이터 타입 중에는 결과가 "정확한 값"이 아니라 *근사값(approximation)*을 주는 확률형 데이터 구조(probabilistic data structures)가 있어요. 통계(개수, 빈도, 순위)를 어림잡아 주는데, 많은 일반적인 용도에서는 근사치로도 충분하면서 계산은 훨씬 효율적이기 때문이죠. 때로는 시간, 위치 같은 민감한 데이터를 난독화(obfuscating)하는 부가적인 이점도 있습니다.
확률형 데이터 구조란 (What are probabilistic data structures)
확률형 데이터 구조는 개수(counts), 빈도(frequencies), 순위(rankings) 같은 통계를 정확한 값 대신 근사값으로 제공합니다. 근사치를 쓰는 이유는 많은 일반적인 용도에 충분히 적합하면서도 계산 비용이 훨씬 낮기 때문이에요.
Redis에서 확률형 데이터 구조는 Redis 오픈 소스(Redis Open Source)의 일부로 제공되며, Redis Software와 Redis Cloud에서도 사용할 수 있습니다. 전체 설치 방법은 Redis 오픈 소스 설치 또는 Redis Software 설치 문서를 참고하세요.
Redis의 확률형 데이터 구조 종류
Redis가 제공하는 대표적인 확률형 데이터 구조는 다음과 같아요 (각각 별도 문서로 다룹니다):
- Bloom Filter — 집합에 원소가 "있을 가능성"을 아주 적은 메모리로 빠르게 판별해요 (근사 멤버십). 더 알아보기
- Cuckoo Filter — Bloom Filter와 비슷하지만 삭제를 지원해요. 더 알아보기
- Count-Min Sketch — 빈도(frequency)를 근사 추정해요. 더 알아보기
- Top-K — 가장 빈번한 항목을 근사적으로 추적해요. 더 알아보기
- t-digest — 분위수(quantile) 같은 분포 통계를 근사 계산해요. 더 알아보기
- HyperLogLog — 집합의 카디널리티(cardinality, 고유 원소 수)를 아주 적은 메모리로 근사 계산해요. 더 알아보기
이 구조들의 공통점은 "정확하지만 비싼" 계산을 "충분히 정확하고 훨씬 싼" 계산으로 바꿔준다는 거예요. 어떤 구조를 쓸지는 정확도와 메모리/성능 사이에서 자신의 요구에 맞게 정하면 됩니다.