HyperLogLog
Penghitung nilai berbeda yang tidak menyimpan satu pun di antaranya. Ia menjawab “berapa banyak yang berbeda?” dengan ketelitian sekitar satu persen, memakai memory yang tidak ikut membesar bersama jawabannya.
Di mana ini benar-benar dipakai
Redis menyediakannya sebagai tipe bawaan, dan Google, Presto, serta Elasticsearch semuanya memakainya. Menghitung pengunjung unik dengan set exact memakan memory sebanding dengan jumlah pengunjungnya; HyperLogLog menghitungnya dalam sekitar 12 KB, entah ada sepuluh ribu atau sepuluh miliar.
Jaminannya
Standard error ≈ 1.04/√m. Nilai register tidak pernah turun.
Cara kerjanya
Ia tidak menyimpan item. Ia menyimpan runtun nol terpanjang yang terlihat di setiap register, beralasan bahwa runtun panjang itu langka, lalu menghitung nilai distinct dari situ.
Flajolet, Fusy, Gandouet & Meunier, AofA 2007
Stream
Parameter
seluruh biaya memory-nya, satu byte per register, berapa pun item yang datang
Register selalu pangkat dua, karena indeksnya diambil dari p bit teratas hash. Register empat kali lipat memangkas error menjadi separuh.