Что такое материализованное представление?

Материализованное представление – это дублированная таблица данных, созданная путем объединения данных из нескольких существующих таблиц для ускорения извлечения данных. Например, рассмотрим приложение для розничной торговли с двумя базовыми таблицами для данных о клиентах и продуктах. Таблица клиентов содержит такую информацию, как имя и контактные данные клиента, а таблица продуктов содержит информацию о продукте и его стоимости. В таблице клиентов хранятся только идентификаторы товаров, приобретенных отдельным клиентом. Для получения сведений о товарах, приобретенных конкретными клиентами, необходимо использовать перекрестные ссылки на обе таблицы. Вместо этого можно создать материализованное представление, в котором имена клиентов и сведения о их приобретенных продуктах хранятся в одной временной таблице. На материализованном представлении можно создавать структуры индексов для повышения скорости чтения данных.

Каковы преимущества материализованных представлений?

Материализованные представления – это быстрый и эффективный способ доступа к релевантным данным. Они помогают оптимизировать запросы в приложениях с интенсивным использованием данных. Далее мы рассмотрим некоторые основные преимущества.

Скорость

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

Простота хранения данных

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

Согласованность

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

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

Усовершенствованный контроль доступа

Материализованное представление можно использовать для управления правами доступа к определенным данным. Фильтровать информацию для пользователей можно, не предоставляя им доступа к исходным таблицам. Этот подход эффективен для управления правами доступа к данным и объемами данных, доступных для просмотра и взаимодействия.

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

Материализованные представления можно использовать в самых разных сценариях. 

Распространение отфильтрованных данных

Материализованными представлениями можно воспользоваться для распространения последних данных по многим местоположениям, например, среди удаленных сотрудников. С помощью материализованных представлений пользователь копирует и распространяет данные среди множества объектов. Пользователи, которым необходим доступ к данным, используют ближайшее реплицированное хранилище данных.

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

Анализ данных временных рядов

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

Удаленное взаимодействие с данными

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

Например, при получении данных из внешней базы данных или через API материализованное представление консолидируется и помогает обрабатывать их. 

Периодическая пакетная обработка

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

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

Принцип работы материализованных представлений основан на предварительном вычислении и сохранении результатов определенного запроса в виде физической таблицы в базе данных. База данных выполняет предварительные вычисления с определенными интервалами. Пользователи также могут запускать вычисления в соответствии с событиями. Администраторы контролируют эффективность и использование ресурсов материализованных представлений для соответствия поставленной цели.

Это общее описание принципа работы материализованных представлений.

Создание материализованного представления

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

Первоначально база данных заполняет материализованное представление, выполняя определенный запрос к исходным данным. Результат запроса сохраняется в виде физической таблицы в базе данных. Эта таблица представляет собой материализованное представление.

Обновление материализованного представления

Данные в материализованном представлении необходимо периодически обновлять, чтобы отразить изменения базовых данных в исходных таблицах. Частота обновления данных зависит от варианта использования и требований.

Далее мы расскажем о нескольких распространенных подходах к обновлению данных.

Полное обновление

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

Инкрементное обновление

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

Обновление по запросу

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

Технические различия систем

Каждая система управления базами данных предусматривает различные способы создания материализованного представления.

Система управления базами данных

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

PostgreSQL

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

MySQL

MySQL не поддерживает материализованные представления.

Oracle

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

SQL Server

SQL Server использует термин «индексированные представления», поскольку материализация является этапом создания индекса стандартного представления. Можно выполнять только базовые SQL-запросы с их индексированными представлениями. Они автоматически обновляются для пользователя.

MongoDB

MongoDB использует функции агрегирования для обеспечения возможностей, аналогичных материализованным представлениям, но для среды NoSQL. 

В чем разница между представлениями и материализованными представлениями?

В реляционных базах данных представление является временной таблицей, созданной путем преобразования и объединения данных в нескольких базовых таблицах. Это виртуальная таблица, которая сама по себе не хранит никаких данных. Все определяет запрос к одной или нескольким исходным таблицам.

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

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

Однако данные в материализованных представлениях не всегда актуальны. Чтобы сбалансировать новизну данных и производительность запросов, необходимо настроить частоту обновлений.

Какие проблемы связаны с материализованными представлениями?

Поскольку материализованные представления – это еще один компонент базы данных, который следует учитывать, с точки зрения обслуживания добавляется еще один уровень сложности. Необходимо сбалансировать преимущества запросов и эффективности с потенциальными затратами на хранение и проблемами, связанными с согласованностью данных.

Чтобы сохранить эффективность материализованных представлений, требуются действенные правила запуска обновлений. Регулярное обновление материализованных представлений может повлиять на производительность системы, особенно в период максимальной нагрузки. Кроме того, материализованные представления также занимают значительную часть пространства при копировании данных. При наличии большой базы данных, которая постоянно обновляется, требования к хранилищу материализованных представлений, вероятно, будут высоки. 

Перед использованием материализованного представления необходимо установить четкие правила и планы обновления. Кроме того, следует изучить меры реагирования на несогласованность данных, сбои обновления и дополнительную нагрузку на хранилище.

Как AWS может поддержать ваши требования к материализованным представлениям?

Материализованные представления – мощный инструмент для повышения скорости выполнения запросов в Amazon Redshift.

Amazon Redshift постоянно отслеживает рабочую нагрузку с помощью машинного обучения и создает новые материализованные представления, когда они могут принести пользу. Функция Автоматического материализованного представления (AutoMV) в Redshift обеспечивает те же преимущества производительности, что и материализованные представления, созданные пользователями.

Функция AutoMV предоставляет целый ряд преимуществ, которые описаны ниже.

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

Кроме того, разработчикам не нужно пересматривать запросы для использования AutoMV. Функция автоматической перезаписи запросов определяет запросы, которые могут извлечь выгоду из автоматических материализованных представлений, созданных системой. Для использования AutoMV она автоматически переписывает эти запросы, повышая при этом их эффективность. 

Создайте аккаунт AWS и начните работу с материализованными представлениями уже сегодня.

AWS: дальнейшие шаги

Зарегистрировать бесплатный аккаунт

Получите мгновенный доступ к уровню бесплатного пользования AWS.

Регистрация 
Начать разработку в консоли

Начните разработку в Консоли управления AWS.

Вход