Введение
В базах данных, кэшированные результаты запросов.
В вычислительной технике материализованное представление — это объект базы данных, содержащий результаты запроса. Например, это может быть локальная копия данных, расположенных удалённо, или подмножество строк и/или столбцов таблицы или результат соединения, либо агрегированное представление, полученное с помощью агрегатной функции. Процесс создания материализованного представления иногда называют материализацией. Это форма кэширования результатов запроса, аналогичная мемоизации значения функции в функциональных языках программирования, и иногда описывается как форма предварительного вычисления. Как и другие формы предварительного вычисления, пользователи баз данных обычно используют материализованные представления для повышения производительности, то есть в качестве способа оптимизации. Материализованные представления, хранящие данные на основе удалённых таблиц, также ранее назывались снимками (устаревшая терминология Oracle). В любой системе управления базами данных, следующей реляционной модели, представление — это виртуальная таблица, представляющая результат запроса к базе данных. Каждый раз, когда запрос или обновление обращается к виртуальной таблице обычного представления, СУБД преобразует их в запросы или обновления к базовым таблицам. Материализованное представление использует иной подход: результат запроса кэшируется в виде конкретной ("материализованной") таблицы (а не представления как такового), которая может периодически обновляться из исходных базовых таблиц. Это обеспечивает гораздо более эффективный доступ, но требует дополнительного места для хранения и может приводить к устареванию данных. Материализованные представления особенно полезны в сценариях хранилищ данных, где частые запросы к фактическим базовым таблицам могут быть ресурсоёмкими. В материализованном представлении можно создавать индексы по любому столбцу. В отличие от этого, в обычном представлении обычно можно использовать индексы только для столбцов, которые непосредственно происходят из (или имеют соответствие) индексированным столбцам в базовых таблицах; часто такая функциональность вообще не предоставляется.
Рамки обработки потоков
Apache Kafka (с версии 0.10.2), Apache Spark (с версии 2.0), Apache Flink, Kinetica DB, Materialize и RisingWave поддерживают материализованные представления для потоков данных.
Другие
Материализованные представления также поддерживаются в Sybase SQL Anywhere. В IBM Db2 они называются "материализованными таблицами запросов". ClickHouse поддерживает материализованные представления, которые автоматически обновляются при слиянии. MySQL не поддерживает материализованные представления нативно, но можно реализовать обходные решения с использованием триггеров или хранимых процедур, либо с помощью приложения с открытым исходным кодом Flexviews. Материализованные представления могут быть реализованы в Amazon DynamoDB с использованием событий изменения данных, фиксируемых DynamoDB Streams. Google объявил 8 апреля 2020 года о доступности материализованных представлений для BigQuery в качестве бета-версии.