HyperLogLog 특징

  1. HyperLogLog란 하나의 set에서 cardinality(the number of unique data, 유니크한 데이터의 수)를 추정하기 위한 데이터 구조입니다.

    즉, 유니크 데이터 수를 구하는 전용 자료구조 입니다.

    그래서 원본 데이터가 뭔지는 제공해줄 수 없습니다. 넣을 때 카운트를 계산할 수 있게 넣어 놓지만 원본 데이터를 유지하지는 않습니다.

    HyperLogLog를 이용하면 작은 데이터 공간을 이용해서 많은 수의 데이터의 cardinality를 추정치로 계산할 수 있습니다.

    Redis에서는 HyperLogLog를 지원하는 커맨드들이 있습니다.

<aside> ❗

HyperLogLog가 어떻게 작은 사이즈의 데이터구조를 가지고 많은 수의 데이터의 unique count(cardinality)를 계산할 수 있는 지에 대한 수학적인 설명은 다음 글을 참고


  1. Redis의 HyperLogLog는 최대 12 KB 의 공간으로 0.81% 의 표준 오차율로 cardinality를 계산할 수 있습니다.
  2. 하나의 Key에 대해서는 O(1)를 보장하지만, 여러 개의 key를 한 commands에서 이용하는 경우 주의가 필요합니다.

Commands

PF로 시작하는 것이 특징입니다.

<aside> ❗

HyperLogLog의 모든 commands: Link

</aside>

1. PFADD

2. PFCOUNT