170 похожих чатов

Всем привет проблема такая - необходимо формировать отчеты по определенным дням,

в отчете часть показателей является статическими, часть показателей динамическими
объем данных относительно большой (пара терабайт), поэтому выборка динамических показателей занимает львинную долю времени

как пример - пользователь может создавать форум, создавать обсуждения в рамках форумов, оставлять комментарии в рамках обсуждений
при выгрузке отчета есть статические показатели (ФИО пользователя, названия форума, описание обсуждения и т.д.) и есть динамические - количество форумов, количество обсуждений, количество комментариев и т.д.

есть отдельный сервис который занимается формированием отчета и он подписан на события в kafke (создание/изменение форума, обсуждения, комментария), события он записывает в базу, по которым и формирует отчет
проблема в том, что отчет формируется по дням (администратор может указать период формирования отчета) и создать какую-то мат вьюху не получится
была мысль делать агрегацию (по сути сумма всех событий за какой-то период) динамических показателей по дням и потом их просто группировать вместе за определенный срок при формировании отчета, но тут возникает такая проблема, что обновлять агрегаты этих динамических показателей по дням не так-то просто и выглядит это как велосипед

как лучше решить данную задачу? хотелось бы просто понять вектор движения

3 ответов

8 просмотров

Вы, кажется, просите OLAP-движок. Возьмите условный кликхаус и делайте свои выборки за вменяемое время.

Etki
Вы, кажется, просите OLAP-движок. Возьмите условны...

Кстати в кликхаусе materialized view обновляется автоматически, может быть удобно в вашем кейсе Materialized views in ClickHouse are implemented more like insert triggers. If there’s some aggregation in the view query, it’s applied only to the batch of freshly inserted data. Any changes to existing data of source table (like update, delete, drop partition, etc.) does not change the materialized view. https://clickhouse.com/docs/en/sql-reference/statements/create/view/

Если отчётов формируется много, то смотреть отдельную субд под олап. Если немного и перформанс олтп от них не страдает, то забить. Ну, если, конечно сам запрос уже оптимизирован :)

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Ребят в СИ можно реализовать ООП?
Николай
33
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Карта сайта