Агрегат — это функция, а не сумма

An Aggregate Is a Function, Not a Sum

В системе продаж чеки приходят через Kafka в ClickHouse, и агрегаты для отчётов пытались построить четырьмя способами: суммирование при вставке, пересчёт из широкой таблицы, запоминание ключей и вычисление на лету. Каждый раз ломалось своё — дубли, объём чтения, память. Решение: считать агрегат функцией от документов, а не накопленной суммой. Ключ ячейки вычисляется из полей документа, дубли схлопываются по ключу, а опоздавшие чеки помечают ячейку грязной для пересчёта.

В дизайне, который мы оставили, агрегат — это не накопленная сумма того, что было вставлено, а функция от его документов.

Ещё за этот день

2026-11-10