Для таких объёмов среднее обычно считают по предварительным агрегатам: храните сумму и количество по временным корзинам и нужным измерениям. Итоговое среднее — общая сумма, делённая на общее количество.
Как эффективно реализовать отчёт со средним значением за период, если в таблицу ежедневно поступает около миллиарда записей, а всего записей сотни миллиардов?
Для таких объёмов среднее обычно считают по предварительным агрегатам: храните сумму и количество по временным корзинам и нужным измерениям. Итоговое среднее — общая сумма, делённая на общее количество.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Для таких объёмов среднее обычно считают по предварительным агрегатам: храните сумму и количество по временным корзинам и нужным измерениям. Итоговое среднее — общая сумма, делённая на общее количество.
Нельзя просто усреднять средние корзин с разным числом событий. Для границ произвольного периода можно объединять полные агрегированные интервалы с сырыми пограничными данными.
Нужны правила поздних событий, повторов, часовых поясов, retention и обновления агрегатов. Партиции и колоночное хранение помогают чтению, но схему выбирают по запросам; один индекс не делает дешёвым полный обход сотен миллиардов строк.