Перейти к содержимому
Последнее обновление

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

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

Перед началом работы​

Прежде чем выбирать и использовать материализованное представление, ответьте на следующие вопросы:

  • Какую задачу вы хотите решить: ускорение запросов, моделирование данных или ускорение запросов в lakehouse?
  • Насколько строги требования к актуальности данных? Нужна строгая согласованность или достаточно согласованности в конечном счёте?
  • SQL-определение представления использует одну таблицу или несколько?
  • Какое обновление вам нужно: полное, инкрементальное по разделам или в реальном времени?

В следующих разделах эти вопросы рассматриваются по порядку.

Сценарии использования материализованных представлений​

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

Ускорение запросов​

В системах поддержки принятия решений, например при работе с отчётами BI и нерегламентированными запросами, аналитические запросы обычно содержат операции агрегации и могут также включать соединения нескольких таблиц.

  • Вычисление результатов таких запросов требует значительных ресурсов, а время отклика может измеряться минутами.
  • Бизнес-сценарии часто требуют отклика за секунды.
  • Для ускорения часто выполняемых запросов можно создавать материализованные представления.

Облегчённый ETL (моделирование данных)​

При построении слоёв данных можно использовать вложенные материализованные представления для создания слоёв DWD и DWM, а обновление материализованных представлений по расписанию позволяет заменить часть задач ETL.

Lakehouse​

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

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

Классификация материализованных представлений​

Материализованные представления можно классифицировать по трём признакам: актуальности данных, шаблону SQL и способу обновления.

Классификация по актуальности данных: синхронные и асинхронные​

КатегорияСогласованность данныхТипичная актуальность данныхПоддержка прямых запросовСценарии применения
Синхронное материализованное представлениеСтрогая согласованность с базовой таблицейВ реальном времениНе поддерживаютсяСценарии с высокими требованиями к актуальности данных
Асинхронное материализованное представлениеСогласованность с базовой таблицей в конечном счётеT+1 / ежечасноПоддерживаютсяТиповые аналитические сценарии с менее строгими требованиями к актуальности данных

Рекомендации по выбору:

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

Классификация по поддерживаемым шаблонам SQL для прозрачного переписывания: одна таблица или несколько таблиц​

SQL-определение материализованного представления может быть запросом к одной таблице или к нескольким таблицам. По количеству используемых таблиц материализованные представления делятся на представления на основе одной таблицы и представления на основе нескольких таблиц:

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

Классификация по способу обновления: полное, инкрементальное по разделам и в реальном времени​

Разные категории материализованных представлений поддерживают разные способы обновления:

Тип материализованного представленияПолное обновлениеИнкрементальное обновление по разделамОбновление в реальном времени
Асинхронное материализованное представлениеПоддерживаетсяПоддерживаетсяНе поддерживается
Синхронное материализованное представление--Поддерживается

Что означает каждый способ обновления:

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