#tdigest — Public Fediverse posts
Live and recent posts from across the Fediverse tagged #tdigest, aggregated by home.social.
-
99-й перцентиль за 20 мс: T-Digest и магия сжатых распределений
Представим, что вы имеете сервер, который обрабатывает и анализирует 100.000 RPS. Вам нужно высчитать и показать на дашборде 99-й перцентиль задержки — значение, выше которого только 1% самых медленных запросов. Если вы сохраните все 100 000 чисел за секунду, через час это 360 миллионов чисел. Через день — 8.6 миллиардов. Каждый раз хранить, сортировать и высчитывать? Нереально долго и ресурсозатратно. Но для этой задачи существует алгоритм T-Digest. Вместо того, чтобы хранить все числа, он группирует их в кластеры — центроиды. А все дело в том, что кластеры на краях распределения (там, где наши хвосты) он делает маленькими и точными, а в центре — большими и «приблизительными». В результате для 100 000 точек нам нужно всего ~100 центроидов вместо 100 000 чисел. Это в сотни раз меньше памяти. И притом что ошибка при вычислении 95-го перцентиля в среднем составляет всего 0.001–0.06% (в зависимости от параметра сжатия). В этой статье я разберу математику алгоритма, почему алгоритм такой быстрый и малозатратный, разберём графики и бенчмарки, а также покажу реализацию алгоритма на C.
https://habr.com/ru/companies/timeweb/articles/1065882/
#tdigest #структуры_данных #computer_science #перцентили #квантили #p99 #p90 #p50 #c #timeweb_статьи
-
#tdigest is a t-digest structure for #PostgreSQL.
t-digest is an implementation of a t-digest structure, which can efficiently calculate quantiles (percentiles, quartiles) with live updated data. t-digest is an approximate data structure, which enables the time-space efficiency, but the accuracy can be changed as required. t-digest can be used with pre-aggregated data.
Website 🔗️: https://github.com/tvondra/tdigest