Моделирование данных с материализованными представлениями
Эта тема описывает, как выполнять моделирование данных с помощью асинхронных материализованных представлений Selena. Таким образом, вы можете значительно упрос тить ETL-конвейер ваших хранилищ данных и существенно улучшить качество данных и производительность запросов.
Обзор
Моделирование данных — это процесс очистки, наслоения, агрегации и ассоциации данных с использованием рациональных методологий. Оно может создать понятное представление необработанных данных, которые слишком грубы, слишком сложны или слишком дороги для прямого анализа, и предоставить практические выводы из данных.
Однако общая проблема в реальном моделировании данных заключается в том, что процесс моделирования с трудом поспевает за темпом развития бизнеса, и трудно измерить возврат инвестиций от усилий по моделированию данных. Несмотря на то, что методологии моделирования просты, бизнес-эксперты должны иметь солидную подготовку в организации и управлении данными, что является сложным процессом. На ранних стадиях бизнеса лица, принимающие решения, редко выделяют достаточные ресурсы для моделирования данных, и сложно увидеть ценность, которую может принести моделирование данных. Более того, бизнес-модели могут быстро изменяться, и сами методологии моделирования нуждаются в итерации и эволюции. Поэтому многие аналитики данных склонны избегать моделирования и использовать необработанные данные напрямую, что неизбежно приводит к проблемам качества данных и производительности запросов. Когда возникает потребность в моделировании, становится сложно реструктурировать уже установленные шаблоны аналитики данных, чтобы они соответствовали моделям данных.
Использование материализованных представлений для моделирования данных может эффективно решить эти проблемы. Асинхронные материализованные представления Selena могут:
- Упростить архитектуру хранилища данных: Поскольку Selena может предоставить универсальный опыт управления данными, вам не нужно поддерживать другие системы обработки данных, экономя человеческие и системные ресурсы, потраченные на них.
- Облегчить опыт моделирования данных: Любой аналитик данных с базовыми знаниями SQL способен выполнять моделирование данных с Selena. Моделирование данных больше не является исключительной областью опытных инженеров данных.
- Снизить сложность обслуживания: Асинхронные материализованные представления Selena могут автоматически управлять отношениями происхождения и зависимостями между слоями данных, устраняя необходимость в целой платформе данных для выполнения этой задачи.

В реальных ситуациях вы можете выполнять моделирование данных, комбинируя исполь зование представлений Selena (логических представлений) и асинхронных материализованных представлений следующим образом:
- Используйте представления для ассоциации данных реального времени с данными измерений, и используйте материализованные представления для ассоциации исторических данных из озера данных с данными измерений. Выполните необходимую очистку данных и семантическое сопоставление для получения детальных данных для промежуточного слоя, который отражает семантику, требуемую в ваших бизнес-сценариях.
- В слое приложений выполните соединение данных, агрегацию, объединение и оконные вычисления, адаптированные к различным бизнес-сценариям. Это даст представления для конвейеров реального времени и материализованные представления для конвейеров почти реального времени.
- На стороне приложения выберите подходящее аналитическое хранилище данных (ADS) для анализа запросов на основе ваших требований к своевременности и производительности. Эти ADS могут обслуживать панели мониторинга реального времени, BI почти реального времени, специальные запросы и запланированные отчеты.
В ходе этого процесса вы будете использовать несколько встроенных возможностей Selena, которые будут подробно рассмотрены в следующем разделе.
Возможности асинхронных материализованных представлений
Асинхронные материализованные представления Selena обладают следующими атомарными функциями, которые могут помочь в моделировании данных:
- Автоматическое обновление: После загрузки данных в базовые таблицы материализованные представления могут автоматически обновляться. Вам не нужно поддерживать задачу планирования извне.
- Секционированное обновление: Вычисления почти реального времени могут быть достигнуты через секционированное обновление материализованных представлений, построенных на таблицах с временными рядами.
- Синергия с представлениями: Вы можете достичь многоуровневого моделирования, используя материализованные представления и логические представления, тем самым обеспечивая повторное использование промежуточного слоя и упрощение моделей данных.
- Изменение схемы: Вы можете изменить результаты вычислений с помощью простых SQL-операторов, без необходимости изменения сложных конвейеров данных.
С этими функциями вы можете проектировать комплексные и адаптируемые модели данных для удовлетворения различных бизнес-потребностей и сценариев.
Автоматическое обновление
При создании асинхронного материализованного представления вы можете указать стратегию обновления, используя предложение REFRESH. В настоящее время Selena поддерживает следующие стратегии обновления асинхронных материализованных представлений:
- Автоматическое обновление (
REFRESH ASYNC): Задачи обновления запускаются каждый раз при изменении данных в базовых таблицах. Зависимости данных автоматически управляются материализованным представлением. - Запланированное обновление (
REFRESH ASYNC EVERY (INTERVAL <refresh_interval>)): Задачи обновления запускаются через регулярные интервалы, например, каждую минуту, день или месяц. Если в базовых таблицах нет изменений данных, задача обновления не будет запущена. - Ручное обновление (
REFRESH MANUAL): Задачи обновления запускаются только при выполнении REFRESH MATERIALIZED VIEW вручную. Эта стратегия обновления может использоваться, когда вы поддерживаете внешний фреймворк планирования для запуска задач обновления.
Синтаксис:
CREATE MATERIALIZED VIEW <name>
REFRESH
[ ASYNC |
ASYNC [START <time>] EVERY(<interval>) |
MANUAL
]
AS <query>
Секционированное обновление
При создании асинхронного материализованного представления вы можете указать предложение PARTITION BY для ассоциации секций базовой таблицы с секциями материализованного представления, тем самым достигая обновления на уровне секций.
PARTITION BY <column>: Вы можете ссылаться на тот же столбец секционирования для базовой таблицы и материализованного представления. В результате базовая таблица и материализованное представление секционируются с одинаковой детализацией.PARTITION BY date_trunc(<column>): Вы можете использовать функцию date_trunc для назначения другой стратегии секционирования (на уровне детализации) для материализованного представления путем усечения единицы времени.PARTITION BY { time_slice | date_slice }(<column>): По сравнению с date_trunc, time_slice и date_slice предлагают более гибкие настройки временной детализаци и, позволяя более точно контролировать секционирование на основе времени.
Синтаксис:
CREATE MATERIALIZED VIEW <name>
REFRESH ASYNC
PARTITION BY
[
<base_table_column> |
date_trunc(<granularity>, <base_table_column>) |
time_slice(<base_table_column>, <granularity>) |
date_slice(<base_table_column>, <granularity>)
]
AS <query>
Синергия с представлениями
- Материализованные представления могут быть созданы на основе представлений. В этом случае, когда базовые таблицы, на которые ссылается представление, претерпевают изменения данных, материализованное представление может автоматически обновляться.
- Вы также можете создавать материализованные представления на основе других материализованных представлений, обеспечивая многоуровневые каскадные механизмы обновления.
- Представления могут быть созданы на основе материализованных представлений, которые эквивалентны обычным таблицам.
Изменение схемы
- Вы можете выполнить атомарный обмен между двумя асинхронными материализованными представлениями, используя оператор ALTER MATERIALIZED VIEW SWAP. Это позволяет создать новое материализованное представление с добавленными столбцами или измененными типами столбцов, а затем заменить старое новым.
- Определение представлений может быть напрямую изменено с помощью оператора ALTER VIEW.
- Обычные таблицы в Selena могут быть изменены с помощью операций SWAP или ALTER.
- Кроме того, когда есть изменения в базовых таблицах (которые могут быть материализованными представлениями, представлениями или обычными таблицами), это запускает каскадные изменения в соответствующих материализованных представлениях.