TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
#HEX • IT

17 Aug, 14:47

Открыть в Telegram Поделиться Пожаловаться

Count-Min Sketch: как посчитать частоту миллиарда событий в 10 килобайт


Самый наивный подход к подсчёту частот — завести хеш-таблицу: ключ — элемент, значение — счётчик. Пришёл запрос — инкрементировали. В конце работы выгрузили топ. Это работает ровно до тех пор, пока множество уникальных ключей умещается в оперативной памяти.

Как только мы выходим за пределы сотен мегабайт или говорим о потоке, который идёт бесконечно, хеш-таблица перестаёт быть решением, ибо в ней надо хранить сами ключи. Каждый уникальный IP (4 байта) превращается в 50–100 байт из-за оверхеда структур данных и выравнивания. Если ключ — это URL длиной 100 байт, и таких URL миллионы, — память улетает в гигабайты.

В офлайне вы можете запустить MapReduce, распараллелить, подождать немного и получить точный результат. Но, увы, в реальном времени это не работает. Никто не будет ждать час, чтобы узнать, какие сейчас самые активные пользователи.

Предыдущие статьи этой серии решали похожие проблемы — для проверки наличия элемента и для подсчёта уникальности. HyperLogLog отвечает на вопрос «сколько уникальных элементов мы видели?» и не говорит ничего про частоты. Фильтр Блума говорит «есть / нет», но не умеет считать.

Сегодня мы добавим в этот набор ещё один инструмент, который делает ровно то, что нужно для потоковых частот: фиксированная память, константное время на операцию и строгая вероятностная гарантия — Count-Min Sketch.


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

232 0 4 1 7
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot