Как стать автором
Поиск
Написать публикацию
Обновить

Переосмысление материализованных представлений: высокопроизводительный инструмент для единого lakehouse

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров159
Автор оригинала: StarRocks

Примечание (Latest‑3.5): Текст основан на возможностях StarRocks 3.0. За актуальными возможностями материализованных представлений (MV) в StarRocks 3.5 и практиками ускорения запросов к data lake см. документацию: Latest‑3.5 MV — Data Lake Query Acceleration with Materialized Views: https://docs.mirrorship.cn/docs/using_starrocks/async_mv/use_cases/data_lake_query_acceleration_with_materialized_views/

Сегодня компании при анализе данных сталкиваются с множеством проблем и вызовов, и обработка данных как неотъемлемая часть этого процесса имеет особое значение.

Первый ключевой вызов — сложность обработки данных. От момента появления данных до получения ценности цепочка остается сложной, включает множество этапов и технических решений, что повышает технологическую сложность и, как следствие, усложняет трудозатраты. Эта сложность мешает конечным пользователям достичь цели «сделать данные доступными» (Make Data Accessible) и ограничивает дальнейшие инвестиции в инфраструктуру данных.

Второй вызов — производительность, актуальность и стоимость. Пользователи ожидают высокопроизводительную платформу с данными в реальном времени и одновременно — низкую стоимость. Между этими требованиями есть техническое противоречие: невозможно на 100% удовлетворить их все одновременно. Однако по мере эволюции технологий этот компромисс удаётся всё лучше балансировать, а на разных этапах приходится решать разные задачи.

Чтобы закрыть неудовлетворённые потребности, StarRocks 3.0 предложил новую архитектуру единого lakehouse, призванную лучше помогать управлять крупномасштабными корпоративными данными. В этом подходе материализованные представления играют ключевую роль: они снижают сложность обработки данных, повышают производительность запросов и улучшают актуальность данных, позволяя вместе с апгрейдом архитектуры получить и апгрейд пользовательского опыта.

В этой статье мы рассмотрим:

  • почему вам нужен новый lakehouse‑подход StarRocks;

  • базовые возможности материализованных представлений StarRocks;

  • три типовых сценария применения MV;

  • эволюцию MV в StarRocks.


Новая lakehouse‑парадигма StarRock

StarRocks 3.0 Overview
StarRocks 3.0 Overview

StarRocks 3.0 предлагает новую lakehouse‑парадигму, чтобы снизить сложность «цепочки» дата‑инжиниринга и улучшить производительность. Суть lakehouse — в объединении преимуществ озера данных и хранилища данных:

  • Преимущества хранилища: качество данных, производительность запросов, аналитика в реальном времени, управление данными. Цель — за счёт тщательного моделирования и обработки обеспечить высокое качество данных.

  • Преимущества озера: открытая экосистема, гибкая унификация, масштабируемость, выгодная стоимость. Цель — за счёт инклюзивного хранения уместить больше данных.

На основе этой идеи проявляются важные практические принципы:

  • Единое хранение и единые запросы: детальные, архивные и полуструктурированные данные хранятся в озере, а детально обработанные — в хранилище. Используется единый вычислительный движок для запросов и аналитики.

  • Снижение сложности обработки: большую часть вычислительных нагрузок можно исполнять внутри lakehouse без отдельных систем обработки (например, Hive или Spark).

  • Более доступный по стоимости конвейер данных (data pipeline): цепочка от генерации и сбора до обработки и монетизации данных становится сквозной в рамках lakehouse‑«конвейера», что снижает стоимость и повышает актуальность.

  • Лучший баланс производительности, стоимости и свежести данных: объединение real‑time запросов, инкрементальных вычислений и batch‑обработки в одном конвейере избавляет от выбора между разрозненными системами и сводит задачу к настройке параметров.

Роль MV (материализованных представлений) в этом подходе:

  • MV для моделирования данных: декларативное моделирование без необходимости поддерживать ETL‑конвейер ради самого моделирования — это повышает качество данных и производительность запросов.

  • MV для прозрачного ускорения: по требованию можно ускорять запросы без предварительного управления данными (data governance) и моделирования данных, сокращая время и стоимость подготовки.

  • MV для инкрементальных вычислений: инкрементальный конвейер повышает актуальность и снижает сквозную задержку.

Примечание (Latest‑3.5): Единый паттерн «lake + warehouse» эволюционирует. Рекомендации по созданию MV для ускорения запросов к данным из data lake (Hive/Iceberg/Hudi) в StarRocks 3.5 см. в руководстве.

Далее — базовые возможности MV, решаемые ими задачи и практические сценарии.


Базовые возможности материализованных представлений

Рассмотрим базовую функциональность на примере ключевых возможностей:

  • Materialized (материализация): результат вычислений сохраняется в таблицу StarRocks; структура хранения не отличается от обычной таблицы.

  • Partition by: партиционирование MV (например, по дням) позволяет обновлять, обслуживать и применять TTL (Time to Live) на уровне партиции. Партиции MV можно сопоставлять с партициями внешних таблиц Hive/Iceberg, автоматически «подписываясь» на их обновления.

  • Обновление (REFRESH): пересчёт и материализация результата запроса. Поддерживаются автообновление, обновление по расписанию, ручной запуск и инкрементальное обновление в ряде сценариев. Например, можно триггерить обновление при загрузке данных, настраивать ежечасное расписание или запускать из внешней системы оркестрации.

  • Resource Group: типичная боль — изоляция ресурсов между фронтовыми запросами и обслуживанием MV. В StarRocks это решается через Resource Group с эластичной изоляцией и планированием, чтобы обслуживание MV не влияло на производительность пользовательских запросов.

  • Запросы и источники: MV поддерживают агрегирование, JOIN, оконные функции (WINDOW) и т. п., материализуя результаты для широкого круга сценариев. Источники данных — JDBC‑внешние таблицы (например, MySQL, PostgreSQL), lake‑внешние таблицы (Hive, Iceberg), а также собственные таблицы StarRocks.

На поверхности MV — это предвычисление результатов по заданной пользователем политике REFRESH, чтобы избегать повторных вычислений. Ключевые способности: планирование, предвычисления и инкрементальные вычисления.

Важнейшая возможность скрыта за лаконичным синтаксисом — переписывание запросов: оптимизатор автоматически сопоставляет ускоряемые SQL‑запросы и переписывает их так, чтобы использовать предвычисленные результаты, резко снижая затраты. Это открывает новое: пользователь может тюнить производительность без изменения SQL, гибко балансируя стоимость и производительность.

Комбинируя эти атомарные возможности, MV закрывают два ключевых класса проблем.

  • Сложность обработки данных:

    • MV описывают обработку декларативно: пользователю достаточно понимать итог, не детализируя сложные процессы.

    • REFRESH абстрагирует поток данных; нет нужды управлять зависимостями между системами и решать сложные задачи качества данных.

    • Изоляция ресурсов упрощается благодаря вертикальной интеграции — для простых вычислений не нужно выделять дополнительные мощности.

    • «Прозрачное ускорение» избавляет от предварительного моделирования: модель и ускорение добавляются по мере эволюции бизнеса, существенно снижая трудозатраты на управление данными.

  • Производительность, актуальность и стоимость:

    • Больше не нужно выбирать между потоковой и пакетной системами: стабильной и дешёвой batch или более дорогой, но актуальной stream. Разные режимы REFRESH сводят задачу к выбору параметров под нужный сценарий.

Далее — практические сценарии, где MV наиболее полезны.


Сценарии применения MV

01. Моделирование данных

Моделирование данных
Моделирование данных

Моделирование данных — это очистка, многослойная организация, агрегация и связывание данных для получения удобных к использованию результатов. Зачем это нужно?

  • исходные данные часто страдают от проблем качества и плохо подходят для прямой аналитики;

  • «сырые» данные слишком сложны, содержат множество нерелевантных бизнесу показателей и трудны для понимания;

  • без агрегирования запросы медленны, не удовлетворяют требованиям производительности и потребляют много ресурсов.

Типичное противоречие — моделирование не поспевает за бизнесом, сложно оценить его окупаемость. На ранних этапах ресурсы ограничены и ценность моделирования неочевидна; бизнес‑модель быстро меняется, требуя итераций. Поэтому часто данные используют «как есть», что ведёт к проблемам качества и производительности; когда же потребность в моделировании становится явной, сложившиеся практики использования мешают рефакторингу.

Материализованные представления снимают эти противоречия:

  • Упрощение архитектуры: не нужно поддерживать отдельный зоопарк компонентов для обработки, оркестрации и мониторинга.

  • Упрощение использования: достаточно базового SQL — задачи решают аналитики, а не только узкие дата‑инженеры.

  • Упрощение сопровождения: MV поддерживают линейдж данных (data lineage), автоматически управляют зависимостями — не нужна целая платформа для этого.

Рассмотрим два базовых подхода — моделирование по слоям и по партициям.

Моделирование по слоям

В реальных ландшафтах источники включают потоковые детальные данные, данные измерений (справочники), архив из озера данных; на стороне бизнеса требуются разные способы аналитики: real‑time дашборды, BI‑запросы почти в реальном времени, ad hoc‑запросы аналитиков, периодические отчёты и т. п. Требования различаются: гибкость, производительность, стоимость.

Единого средства недостаточно, поэтому StarRocks совместно использует логическое представление (View) и материализованное представление (Materialized View, MV):

  • View — логическое: каждый запрос повторно парсит и выполняет его определение. Хорош для выражения бизнес‑семантики и упрощения SQL, но не снижает стоимость выполнения.

  • MV — предвычисляет результат, избегая повторных затрат и ускоряя выполнение; хорошо подходит для упрощения ETL‑конвейера.

Как это ложится на слои:

  • View для конечных пользователей: гибко меняется и предоставляет чистую бизнес‑семантику.

  • View для real‑time: связывает потоковые детальные данные и данные измерений, отдавая максимально актуальный результат.

  • MV для ускорения «почти real‑time»: когда вычисления сложны, часть их предвычисляется для ускорения конечных запросов.

  • MV для физического моделирования: помимо логики, моделирование требует физической подготовки данных.

Итог: в зависимости от требований к актуальности и производительности бизнес гибко выбирает комбинации View и MV для послойного моделирования. Кроме того, StarRocks позволяет гибко менять как верхние, так и нижние View/MV — в отличие от классического ETL‑конвейера, где малое изменение затрагивает всё, здесь изменения делаются простым SQL.

Моделирование по партициям

Помимо слоёв, моделирование часто требует связывать данные по бизнес‑семантике и задавать TTL в зависимости от требований к свежести — это и есть моделирование по партициям.

Разные способы связывания формируют схему «звезда» и «снежинка»; базовые сущности — факт‑таблица и таблицы измерений. Где‑то есть несколько очень больших факт‑таблиц; где‑то — сложные таблицы измерений и связи. MV StarRocks поддерживают партиционное согласование с факт‑таблицей: факт партиционируется, и результат JOIN в MV партиционируется аналогично.

Это открывает несколько полезных сценариев:

  • Обновления факта: при мелкозернистом партиционировании (день/час) MV автоматически обновляет соответствующие партиции после обновления факта.

  • Обновления измерений: изменение измерений часто требует пересчёта всех связанных результатов — это дорого; можно игнорировать обновления некоторых измерений или пересчитывать только недавний период.

  • Автообновление внешних таблиц: системы вроде Hive/Iceberg меняют данные на уровне партиций; MV «подписываются» на такие изменения и обновляются при изменении партиции.

  • TTL: при партиционировании MV можно задавать TTL и хранить только результаты за недавний период — полезно, когда нужны, например, только данные за последнюю неделю.

Итоги (возможности MV для моделирования данных):

  • Много источников: MV создаются поверх внутренних таблиц, lake‑внешних и JDBC‑внешних таблиц (MySQL, PostgreSQL), а также источников Hive/Iceberg; зависимости данных управляются автоматически.

  • Сопоставление партиций: поддерживается соответствие партиций между внутренними и внешними таблицами, обновления MV на уровне партиций.

  • Автообновление: MV могут автоматически обновляться при изменениях источников.

  • Многослойное моделирование: поддержка многоуровневых MV по слоям ODS, DWD, DWS, ADS; гибкое сочетание View и MV.

  • Оркестрация задач: поддержка триггерного, DAG‑ориентированного и периодического расписания под разные бизнес‑семантики.

02. Прозрачное ускорение

Моделирование сложно «подружить» с гибкостью бизнеса: на ранних этапах объёмы малы и неопределённость высока — данные используют «грубо»; позже растут требования к производительности и масштабы, возникает потребность в моделировании, но платформы уже сформированы, и рефакторинг дорог.

StarRocks решает это с помощью прозрачного ускорения на базе MV:

  • Прозрачное ускорение: оптимизатор автоматически переписывает SQL и подбирает подходящее MV — без изменения исходного SQL пользователем.

  • Создание по требованию: не нужно заранее планировать все сценарии и запросы — при обнаружении узких мест создаётся MV для оптимизации.

  • Отложенное моделирование: MV по сути — предвычисление и моделирование ради ускорения, но отложив этот шаг, легче удовлетворить разные потребности на разных этапах, избегая избыточных затрат.

Пример: создадим MV с группировкой по lo_orderdate и c_city и расчётом count — и прозрачно ускорим три класса запросов:

  • Пример 1 — роллап‑агрегирование (roll‑up): требуется агрегирование по lo_orderdate. На базе MV выполняется дополнительный роллап; так как MV уже резко сократило объём данных, вторичный роллап лёгкий.

  • Пример 2 — роллап с фильтрацией: отбор части периодов и агрегирование по c_city; выполняется поверх MV — фильтрация, затем вторичный роллап.

  • Пример 3 — фильтрация: отбор части периодов и агрегирование; поскольку MV уже сгруппировано по lo_orderdate, можно напрямую отфильтровать результат.

Все эти фильтрации и роллапы выполняются оптимизатором StarRocks автоматически, без сложной переписки SQL и без необходимости глубоко разбираться в семантике запросов. Помимо агрегирующих переписываний, поддерживаются и другие: автоматическое переписывание JOIN для «широких» таблиц и переписывание UNION для временных рядов. Об этом — в отдельных материалах.

Итог: с прозрачным ускорением MV задача моделирования во многом превращается в задачу оптимизации производительности. Когда возникает потребность, анализируются сценарии и запросы, создаётся подходящее MV — оценка ценности моделирования становится проще, а избыточное планирование и дизайн — не нужны.

03. Единый lakehouse

Наконец, как MV помогают по‑настоящему объединить озеро и хранилище:

  • Единое хранение и запросы: детальные, архивные и полуструктурированные данные — в озере; детально обработанные — в хранилище. Используется единый вычислительный движок, а MV соединяют слои.

  • Гибкое моделирование через MV: повышение качества данных в озере и производительности запросов.

  • Прозрачное ускорение по требованию через MV: меньше предварительного управления и моделирования, ниже стоимость и время подготовки.


Эволюция MV в StarRocks

Функция MV появилась в StarRocks 2.4 и прошла ряд итераций:

  • V2.4 — базовые возможности, поддержка партиционного согласования.

  • V2.5 — переписывание запросов, поддержка множества источников (JDBC/Hive), поддержка CTE/WINDOW/UNION и др. конструкций SQL.

  • V3.0 — поддержка сценариев многослойного моделирования, подписка на обновления Hive, улучшенные удобство и наблюдаемость.

Примечание (Latest‑3.5): Актуальные изменения и расширения MV в StarRocks 3.5 (режимы REFRESH, правила переписывания, поддержка источников data lake) смотрите в документации.

Дальнейшие направления развития:

  • Удобство: «готово из коробки» и комплексные решения «всё‑в‑одном» под конкретные сценарии.

  • Переписывание запросов: больше поддерживаемых случаев и автоматические рекомендации.

  • Интеграция с озером: автообновление для Iceberg/Hudi и др. источников — более оперативные REFRESH.

  • Инкрементальные вычисления: больше сценариев, ещё выше актуальность данных в реальном времени.


Итоги

StarRocks стремится, с одной стороны, помочь пользователям обновить архитектуру за счёт единого lakehouse, а с другой — с помощью материализованных представлений упростить работу с данными, повысить эффективность затрат и раскрыть большую ценность данных.

Мы выпустим серию материалов о MV с подробными примерами функций и применения. Присоединяйтесь к сообществу и подписывайтесь на наш официальный канал, чтобы получать новости первыми!

Теги:
Хабы:
0
Комментарии0

Публикации

Ближайшие события