Обзор материализованных представлений
Материализованное представление — это объект, который содержит и логику вычислений, и данные. В отличие от обычного представления, которое хранит только логику вычислений без данных, материализованное представление обновляет данные периодически или в реальном времени в соответствии с заданной политикой. К нему можно обращаться с запросами напрямую, а также использовать его для прозрачного переписывания запросов.
Перед началом работы
Прежде чем выбирать и использовать материализованное представление, ответьте на следующие вопросы:
- Какую задачу вы хотите решить: ускорение запросов, моделирование данных или ускорение запросов в lakehouse?
- Насколько строги требования к актуальности данных? Нужна строгая согласованность или достаточно согласованности в конечном счёте?
- SQL-определение представления использует одну таблицу или несколько?
- Какое обновление вам нужно: полное, инкрементальное по разделам или в реальном времени?
В следующих разделах эти вопросы рассматриваются по порядку.
Сценарии использования материализованных представлений
Материализованное представление вычисляет и хранит данные на основе своего SQL-определения и обновляет их периодически или в реальном времени в соответствии с заданной политикой. К нему можно обращаться с запросами напрямую, а также использовать его для прозрачного переписывания запросов. Типичные сценарии использования:
Ускорение запросов
В системах поддержки принятия решений, например при работе с отчётами BI и нерегламентированными запросами, аналитические запросы обычно содержат операции агрегации и могут также включать соединения нескольких таблиц.
- Вычисление результатов таких запросов требует значительных ресурсов, а время отклика может измеряться минутами.
- Бизнес-сценарии часто требуют отклика за секунды.
- Для ускорения часто выполняемых запросов можно создавать материализованные представления.
Облегчённый ETL (моделирование данных)
При построении слоёв данных можно использовать вложенные материализованные представления для создания слоёв DWD и DWM, а обновление материализованных представлений по расписанию позволяет заменить часть задач ETL.
Lakehouse
Для различных внешних источников данных можно создавать материализованные представления на основе их таблиц. Это позволяет:
- Избежать затрат на импорт данных из внешних таблиц во внутренние.
- Ускорить запросы к внешним источникам данных.
Классификация материализованных представлений
Материализованные представления можно классифицировать по трём признакам: актуальности данных, шаблону SQL и способу обновления.
Классификация по актуальности данных: синхронные и асинхронные
| Категория | Согласованность данных | Типичная актуальность данных | Поддержка прямых запросов | Сценарии применения |
|---|---|---|---|---|
| Синхронное материализованное представление | Строгая согласованность с базовой таблицей | В реальном времени | Не поддерживаются | Сценарии с высокими требованиями к актуальности данных |
| Асинхронное материализованное представление | Согласованность с базовой таблицей в конечном счёте | T+1 / ежечасно | Поддерживаются | Типовые аналитические сценарии с менее строгими требованиями к актуальности данных |
Рекомендации по выбору:
- При высоких требованиях к актуальности данных выбирайте синхронные материализованные представления.
- Если требования к актуальности данных невысоки и допустима некоторая задержка, выбирайте асинхронные материализованные представления.
Классификация по поддерживаемым шаблонам SQL для прозрачного переписывания: одна таблица или несколько таблиц
SQL-определение материализованного представления может быть запросом к одной таблице или к нескольким таблицам. По количеству используемых таблиц материализованные представления делятся на представления на основе одной таблицы и представления на основе нескольких таблиц:
- Асинхронные материализованные представления: поддерживают как одну, так и несколько таблиц.
- Синхронные материализованные представления: поддерживают только одну таблицу.
Классификация по способу обновления: полное, инкрементальное по разделам и в реальном времени
Разные категории материализованных представлений поддерживают разные способы обновления:
| Тип материализованного представления | Полное обновление | Инкрементальное обновление по разделам | Обновление в реальном времени |
|---|---|---|---|
| Асинхронное материализованное представление | Поддерживается | Поддерживается | Не поддерживается |
| Синхронное материализованное представление | - | - | Поддерживается |
Что означает каждый способ обновления:
- Полное обновление (асинхронное): вычисляет все данные по SQL-определению материализованного представления.
- Инкрементальное обновление по разделам (асинхронное): при изменении данных в разделе базовой таблицы материализованного представления определяет соответствующие разделы представления, затронутые изменениями, и обновляет только их, без обновления всего материализованного представления.
- Обновление в реальном времени (синхронное): его можно понимать как обновление в реальном времени, при котором данные всегда остаются согласованными с базовой таблицей.