Чем больше данных обрабатывают ИИ-системы, тем острее встаёт вопрос: как работать с информацией, которая постоянно меняется? Если каждый раз пересчитывать всё с нуля, процесс становится медленным и дорогим. Если же игнорировать обновления – результаты быстро устаревают.
Исследователи из команды AnalyticDB for PostgreSQL предложили решение этой проблемы и описали его в статье для конференции VLDB. Речь идёт о технологии StreamingView – встроенном движке инкрементальных вычислений, который позволяет обновлять аналитические результаты постепенно, по мере поступления новых данных, а не перестраивать их целиком.
Представьте, что вы ведёте таблицу с продажами интернет-магазина. Каждую минуту в неё добавляются новые заказы. Вам нужно видеть актуальную статистику: сколько товаров продано за день, какова выручка по категориям и какие регионы лидируют.
Классический подход – каждый раз пересчитывать всю таблицу заново. Но если в ней миллионы строк, это занимает много времени и требует значительных вычислительных ресурсов. Инкрементальный подход работает иначе: система запоминает предыдущий результат и обновляет только ту его часть, которая изменилась. Пришёл новый заказ – он добавился к итогу. Один заказ отменили – сумма уменьшилась.
Звучит логично, но реализовать это на практике – особенно для сложных запросов с фильтрами, группировками и объединениями таблиц – непросто.
Материализованные представления: когда скорость важнее свежести
В базах данных есть понятие материализованного представления. Это заранее вычисленный результат запроса, который хранится как отдельная таблица. Вместо того чтобы каждый раз выполнять сложный запрос, система просто возвращает готовый ответ – это происходит мгновенно.
Проблема в том, что если исходные данные изменились, материализованное представление нужно обновить. И здесь начинаются сложности. Традиционные системы либо обновляют такие представления по расписанию (например, раз в час), либо пересчитывают их полностью при каждом изменении. Первый вариант выдаёт устаревшие данные, второй – слишком медленный и ресурсоёмкий.
StreamingView предлагает третий путь: обновлять материализованные представления инкрементально и делать это в режиме реального времени.
Как это работает внутри AnalyticDB
StreamingView встроен напрямую в AnalyticDB for PostgreSQL. Это означает, что он работает с данными там же, где они хранятся, без необходимости переносить их в отдельную систему обработки. Это критически важно, так как перемещение больших объёмов информации между системами – одна из главных причин задержек в аналитике.
Движок отслеживает изменения в исходных таблицах и постепенно применяет их к материализованным представлениям. Если добавилась новая строка – она учитывается в итоговом результате. Если строка удалена или изменена – корректировка происходит без полного пересчёта.
При этом система умеет работать со сложными SQL-запросами, включающими несколько таблиц, агрегации и фильтры. То есть инкрементальность применяется не только к простым суммам, но и к запросам, которые в обычных условиях требуют тяжеловесных вычислений.
Зачем это нужно в эпоху ИИ
ИИ-системы оперируют огромными массивами данных, которые постоянно пополняются. Логи пользователей, события в приложениях, данные с датчиков, обновления каталогов – всё это требует быстрого и актуального анализа.
Классическая аналитика строилась на предположении, что данные относительно статичны: загрузили, обработали, получили отчёт. Но современные приложения генерируют информацию непрерывно. И если каждый раз заново пересчитывать аналитические дашборды или обучающие датасеты для моделей, система просто не будет успевать за потоком.
Инкрементальные вычисления решают эту проблему: они позволяют поддерживать актуальность результатов без лишних затрат ресурсов. В контексте ИИ это особенно важно, поскольку модели часто требуют свежих данных для переобучения или валидации, а задержки в их получении могут снижать точность прогнозов.
Что дальше
StreamingView – не единственная попытка внедрить инкрементальные вычисления, но она интересна тем, что технология работает внутри самой базы данных, а не требует отдельной инфраструктуры. Это упрощает архитектуру и снижает накладные расходы на передачу данных.
Публикация на VLDB – это академическое признание подхода, однако востребованность решения на практике покажет время. Инкрементальные вычисления – это всегда компромисс между точностью, скоростью и сложностью реализации. Они эффективны там, где данные меняются часто, но предсказуемо. Если же изменения хаотичны или затрагивают большую часть данных, выигрыш может быть не столь заметным.
Тем не менее направление активно развивается. И чем больше данных будет обрабатывать ИИ, тем актуальнее будет становиться вопрос: как делать это не просто быстро, но и максимально эффективно.