HyperLogLog: как найти уникальные значения в терабайте данных, не храня их

Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю. Первым решением может показаться завести HashSet и кидать туда ключи, а в конце посмотреть размер. Решение неплохое, но когда речь заходит о миллиардах записей — память будет слабым местом. Один IP-адрес (4 байта) как ключ в HashSet потянет за собой накладные расходы на ноды, указатели и хеши. На практике один элемент сжирает не меньше 50–100 байт. Поток в миллиард уникальных записей потребует под сотню гигабайт оперативной памяти. Это дорого, а если инстансов десять — то просто нереально. Но существует алгоритм, который способен решить эту задачу примерно в 1.5 килобайта памяти с погрешностью около 2%? Без хранения самих данных и гигантских кластеров. Достаточно одного прохода по потоку и пары битовых трюков — именно так и работает HyperLogLog, алгоритм родом из математической статистики, который перевернул подход к подсчёту уникальности в Big Data. HyperLogLog используют в Redis, BigQuery, ClickHouse, Presto. В этой статье мы разберем и реализуем этот алгоритм на C, а также узнаем его предысторию.

https://habr.com/ru/companies/timeweb/articles/1046345/

#c #hyperloglog #loglog #оптимизация #алгоритмы #ненормальное_программирование #программирование #timeweb_статьи

HyperLogLog: как найти уникальные значения в терабайте данных, не храня их

Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю. Первым...

Хабр

HyperLogLog: как найти уникальные значения в терабайте данных, не храня их

Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю. Первым решением может показаться завести HashSet и кидать туда ключи, а в конце посмотреть размер. Решение неплохое, но когда речь заходит о миллиардах записей — память будет слабым местом. Один IP-адрес (4 байта) как ключ в HashSet потянет за собой накладные расходы на ноды, указатели и хеши. На практике один элемент сжирает не меньше 50–100 байт. Поток в миллиард уникальных записей потребует под сотню гигабайт оперативной памяти. Это дорого, а если инстансов десять — то просто нереально. Но существует алгоритм, который способен решить эту задачу примерно в 1.5 килобайта памяти с погрешностью около 2%? Без хранения самих данных и гигантских кластеров. Достаточно одного прохода по потоку и пары битовых трюков — именно так и работает HyperLogLog, алгоритм родом из математической статистики, который перевернул подход к подсчёту уникальности в Big Data. HyperLogLog используют в Redis, BigQuery, ClickHouse, Presto. В этой статье мы разберем и реализуем этот алгоритм на C, а также узнаем его предысторию.

https://habr.com/ru/companies/timeweb/articles/1046345/

#c #hyperloglog #loglog #оптимизация #алгоритмы #ненормальное_программирование #программирование #timeweb_статьи

HyperLogLog: как найти уникальные значения в терабайте данных, не храня их

Представим задачу: хайлоад-сервис гонит поток данных — логи, IP-адреса, ID пользователей, миллиарды записей в сутки. Ваша задача — посчитать количество уникальных посетителей за неделю. Первым...

Хабр

HyperLogLog을 이용한 대규모 데이터의 고유 값 개수 산출

HyperLogLog은 정확도를 일부 희생하는 대신 고정된 메모리(약 12KB)로 수십억 개의 고유 값 개수를 1% 미만의 오차로 추정한다.

🔗 원문 보기

HyperLogLog을 이용한 대규모 데이터의 고유 값 개수 산출

HyperLogLog은 정확도를 일부 희생하는 대신 약 12KB의 고정 메모리로 수십억 개의 고유 값 개수를 1% 미만 오차로 추정한다.

Ruby-News

PWLSF - 03/2015 - Armon Dadgar on Bloom Filters and HyperLogLog (2015)

https://www.youtube.com/watch?v=T3Bt9Tn6P5c

#HyperLogLog

PWLSF - 03/2015 - Armon Dadgar on Bloom Filters and HyperLogLog

YouTube

RE: https://wisskomm.social/@ioer/115899330915763542

I really took a deep dive into #datashader with this map: Locals & Tourists in Germany, as derived from 67 Million Geo-Social Media Posts (2007-2022) in Germany. The data includes public shared posts from Instagram, Flickr, Twitter and iNaturalist.

I always wanted to create such a map, following the footsteps of Eric Fisher's Locals & Tourists dataset from 2011 [1].

I shared the code for producing this map here [2]. The repository is available here [3]. This includes some neat methods for various #geospatial processing tasks in #Python, such as exporting a datashader map to a #GeoTiff [4] with the help of #Xarray and #Rasterio.

Finally, all of this was created in a privacy-preserving way using #HyperLogLog, which allowed me to share the code and abstracted data publicly for full reproducibility and transparency. [6] #FAIR

Below you'll find the link to the (quite succinct) publication in Natur und Landschaft in Karten (#NuL).

[1]: https://www.flickr.com/photos/walkingsf/albums/72157624209158632
[2]: https://code.ad.ioer.info/wip/digital_traces_map/html/03_visualization.html
[3]: https://gitlab.hrz.tu-chemnitz.de/ad/digital_traces_map/
[4]: https://gitlab.hrz.tu-chemnitz.de/s7398234--tu-dresden.de/base_modules/-/blob/main/raster.py?ref_type=heads#L78
[5]: https://www.nul-online.de/article-7301410-1111/landschaft-und-natur-in-karten-.html
[6]: https://doi.org/10.71830/VDMUWW

#FOSS breaks down barriers and makes innovation more accessible to everyone, worldwide. Roberto Luna Rojas from #Valkey shares why #opensource matters to him.

Learn more about #vectors, #hyperloglog, #Redis, and how to improve your observability with key-value datastores: https://t.ly/ZnTNX

#Linux #observability #kubernetes #softwarelibre #freesoftware

Counting Millions of Things with Kilobytes
A Hands-On Quarkus Tutorial for Scalable Unique Counting with HyperLogLog
https://myfear.substack.com/p/quarkus-hyperloglog-unique-counting-java
#Java #Quarkus #GitHub #HyperLogLog
Ever wonder what a HyperLogLog data structure is? (Who hasn’t!?) In our latest video, learn how Dragonfly implements this memory-efficient counter to track millions of unique users with just 1.5KB of memory. https://youtu.be/EIJbC9lxzts #DragonflyDB #HyperLogLog
https://youtu.be/EIJbC9lxzts
Scalable Real-Time Statistics with Dragonfly

YouTube

@bkastl Hm, feel you!

Arbeite durchaus in dem Bereich und war bisher immer ein großer Freund des Ethikrates.

Evtl. sollte sie eine Befürworterin des #HyperLogLog werden.

https://media.ccc.de/v/38c3-privacy-preserving-health-data-processing-is-possible

#38c3 #Patientenakte

Privacy-preserving (health) data processing is possible!

media.ccc.de

Completed the First Assignment of #645 @CMUDB , Hyperloglog was an interesting data structure to learn about.

#hyperloglog #presto