@makar_crypt
Делаю стартапы

Архитектура статистики с группировкой по диапазонам?

Привет. Нужно сделать на подобие такой штуки с группировкой по h , d, w, y:
(только не проценты , а значения)
rV1Ne.png
Имеется кафка куда складываются сообщения

Куда должны прийти это структура такого вида. Это как суммарно агрегационная результирующая сущность. Замечу что в одной сущности могут быть несколько полей (Likes\View допустим) диапазонов.
{
    ItemId: 1,
    Likes: {
         current: 3,
         prevHour: 4,
         prevWeek: 5,
    },
    Views: {
         current: 33,
         prevHour: 44,
         prevWeek: 55,
    }
}


Что я пытался

1) Использовать KSQLDB ,
сделал агрегации вида:
stats_likes_h
stats_likes_w
stats_views_h
stats_views_w

Потом эти stream join в один, но оказывается что на текущий момент в KSQLDB никак нельзя взять со смещением офсет. Т.к. нужно не последние "корзинки" брать , а последние значение предыдущего часа\месяца\недели\года.

2) хотел сделать MongoDB + свой сервис который разгребает очередь KAFKA , но тут возникла проблема , если 1 сообщения = 1 update в базу, нагрузка очень высока. Если пытаться в коде делать Kafka batching то возникают проблемы с commit таймаутами , идемпотентностью и т.д. т.к. для этого кафка не предназначена.

3) дошли руки до TimescaleDB
Тут есть материализованные представления с просчетом, соответственно и функция LAG\LEAD которые смогли сделать то что нужно
select lag(value, 1) over (order by bucket), lag(value, 1*24) over (order by bucket), lag(value, 1*24*7) over (order by bucket)  from stats_likes_h  order by bucket desc limit 1

Так же и для view, а потом при выборки join. Но если у тебя много сущностей, а не только Likes | Views , то колво join так же увеличатся, а материализованное просчитанное представление НЕЛЬЗЯ сделать поверх другого просчитанного представления.

Я не чувствую что вариант с timescaleDB очень оптимальный. Вопрос куда смотреть ? Что еще можно пощупать? В Apache там хрен ногу сведет , штук 20 похожих проектов, возможно не от апача...
В общем думаю ктото делал подобные вещи, жду рекомендаций.
  • Вопрос задан
  • 215 просмотров
Пригласить эксперта
Ответы на вопрос 1
@makar_crypt Автор вопроса
Делаю стартапы
ап )
мб что не ясно?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы