писать поток событий и сразу кверить результат, чтобы посчитать аггрегат и разослать его в качестве уведомления (пишем кусками раз в четверть секунды)
Структура: Buffer -> MT, MV прикручивали поверх Buffer.
Сейчас у нас запрос с подзапросом (last point problem), встряли с тем что при добавлении MV страдает скорость вставки/чтения (запросы напрямую >100ms до 5М записей, запросы через MV начинают линейно замедляться с ростом количества записей).
Вопрос: правильно ли в нашем случае использовать MV или всё-таки лучше остановиться на подзапросе?
что такое "подзапрос"? в каком месте он возникает? что такое "напрямую"? SELECT FROM buffer_table ? и что значит "last point problem" ? куда вставляет MV? в AggregatingMergeTree? отдельная таблица или Inner?
Подзапрос - FROM (SELECT) Используем его в запросе которым считаем аггрегат по последним состояниям сущностей "Напрямую" - делаем запрос к таблице, при условии отсутствия MV. "last point problem" - нам надо сначала выдрать последние состояния сущностей (сливаем всю цепочку состояний в CH) - потом посчитать результат. MV основан на AggregatingMT (планировали переехать на CollapsingMT), inner таблица
Обсуждают сегодня