В вычислении , А материализованное представление является базой данных объекта , который содержит результаты запроса . Например, это может быть локальная копия данных, расположенных удаленно, или может быть подмножество строк и / или столбцов таблицы или результата объединения , или может быть сводка с использованием агрегатной функции .
Процесс настройки материализованного представления иногда называют материализацией . [1] Это форма кэширования результатов запроса, аналогичная запоминанию значения функции в функциональных языках, и иногда ее описывают как форму предварительного вычисления . [2] [3] Как и в случае с другими формами предварительных вычислений, пользователи баз данных обычно используют материализованные представления по соображениям производительности, т. Е. В качестве формы оптимизации. [4]
Материализованные представления, в которых хранятся данные на основе удаленных таблиц, также известны как моментальные снимки [5] (устаревшая терминология Oracle).
В любой системе управления базами данных, соответствующей реляционной модели , представление - это виртуальная таблица, представляющая результат запроса к базе данных . Каждый раз, когда запрос или обновление обращается к виртуальной таблице обычного представления, СУБД преобразует их в запросы или обновления для базовых таблиц, лежащих в основе. Материализованное представление использует другой подход: результат запроса кэшируется как конкретная («материализованная») таблица (а не представление как таковое), которое может время от времени обновляться из исходных базовых таблиц. Это обеспечивает гораздо более эффективный доступ за счет дополнительного хранилища и потенциально устаревших данных. Материализованные представления находят применение особенно в сценариях хранилищ данных , где частые запросы фактических базовых таблиц могут быть дорогостоящими.
В материализованном представлении индексы могут быть построены для любого столбца. Напротив, в обычном представлении обычно можно использовать индексы только для столбцов, которые поступают непосредственно из (или имеют сопоставление) индексированных столбцов в базовых таблицах; часто эта функция вообще не предлагается.
Реализации
Oracle
Материализованные представления были впервые реализованы в Oracle Database : функция перезаписи запросов была добавлена с версии 8i. [6]
Пример синтаксиса для создания материализованного представления в Oracle:
СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД MV_MY_VIEW REFRESH FAST START WITH SYSDATE NEXT SYSDATE + 1 AS SELECT * FROM < table_name > ;
PostgreSQL
В PostgreSQL версии 9.3 и новее изначально поддерживаются материализованные представления. [7] В версии 9.3 материализованное представление не обновляется автоматически и заполняется только во время создания (если WITH NO DATA
оно не используется). Позже его можно обновить вручную, используя REFRESH MATERIALIZED VIEW
. [8] В версии 9.4 обновление может происходить одновременно с выбором в материализованном представлении, если CONCURRENTLY
оно используется. [9]
Пример синтаксиса для создания материализованного представления в PostgreSQL:
СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД MV_MY_VIEW [ С ( параметр_хранилища [ = значение ] [, ... ]) ] [ TABLESPACE имя_табличного пространства ] КАК ВЫБРАТЬ * FROM < имя_таблицы > ;
SQL Server
Microsoft SQL Server отличается от других СУБД тем, что реализует материализованное представление с помощью концепции, известной как «индексированные представления». Основное отличие состоит в том, что такие представления не требуют обновления, поскольку они фактически всегда синхронизируются с исходными данными таблиц, составляющих представление. Для этого необходимо, чтобы линии отправления и назначения были «детерминированными» в их отображении, что ограничивает типы возможных запросов для этого. Этот механизм реализован начиная с версии SQL Server 2000 года.
Пример синтаксиса для создания материализованного представления в SQL Server:
СОЗДАТЬ ВИД MV_MY_VIEW С РАЗРАБОТКОЙ КАК ВЫБРАТЬ COL1 , СУММА ( COL2 ) КАК ОБЩИЙ ОТ < table_name > ГРУППА ПО COL1 ; ИДТИСОЗДАТЬ УНИКАЛЬНЫЙ КЛАСТЕРИРОВАННЫЙ ИНДЕКС XV НА MV_MY_VIEW ( COL1 );
Фреймворки потоковой обработки
Apache Kafka (начиная с v0.10.2), Apache Spark (начиная с v2.0) и Materialize [10] поддерживают материализованные представления потоков данных.
Другие
Материализованные представления также поддерживаются в Sybase SQL Anywhere . [11] В IBM DB2 они называются «материализованными таблицами запросов». [12] ClickHouse поддерживает материализованные представления, которые автоматически обновляются при слиянии. [13] MySQL изначально не поддерживает материализованные представления, но обходные пути могут быть реализованы с помощью триггеров или хранимых процедур [14] или с помощью приложения с открытым исходным кодом Flexviews . [15] Материализованные представления могут быть реализованы в Amazon DynamoDB с использованием событий изменения данных, захваченных DynamoDB Streams. 8 апреля 2020 года [16] Google объявил о доступности материализованных представлений для BigQuery [17] в качестве бета-версии.
Рекомендации
- ↑ Сравните: CJ Date (28 августа 2006 г.). Словарь реляционных баз данных: всесторонний глоссарий реляционных терминов и понятий с иллюстративными примерами . «О'Рейли Медиа, Инк.». п. 59. ISBN 978-1-4493-9115-7. Проверено 26 октября 2016 .
материализация [:] Несколько несложный метод реализации операций над представлениями, согласно которому (а) реляционное выражение, определяющее представление, оценивается во время вызова операции, (б) таким образом представление материализуется и (в) Затем рассматриваемая операция выполняется в отношении материализованного таким образом отношения.
- ^ Карен Мортон; Керри Осборн; Робин Сэндс; Риядж Шамсудин; Джаред Стилл (28 октября 2013 г.). Профессиональный Oracle SQL . Апресс. п. 48. ISBN 978-1-4302-6220-6.
- ^ Мари-Од Ауфор; Эстебан Зимани (16 января 2012 г.). Бизнес-аналитика: Первая европейская летняя школа, EBISS 2011, Париж, Франция, 3-8 июля 2011 г., обучающие лекции . Springer Science & Business Media. п. 43. ISBN 978-3-642-27357-5.
- ^ Майкл Л. Гонсалес (25 февраля 2003 г.). IBM Data Warehousing: с помощью IBM Business Intelligence Tools . Джон Вили и сыновья. п. 214. ISBN 978-0-471-45736-7.
- ^ CJ Date (28 августа 2006 г.). Словарь реляционных баз данных: всесторонний глоссарий реляционных терминов и понятий с иллюстративными примерами . «О'Рейли Медиа, Инк.». п. 59. ISBN 978-1-4493-9115-7. Проверено 26 октября 2016 .
материализованное представление [:] Устаревший термин для снимка. [...] Проблема в том, [...] что (как указывает определение) снимки стали известны, по крайней мере в некоторых кругах, вовсе не как снимки, а как материализованные представления. Но снимки - это не представления; представления являются виртуальными, а снимки - нет, и «материализованное представление» является терминологическим противоречием (по крайней мере, в том, что касается модели). Что еще хуже, неквалифицированный термин представление часто используется для обозначения конкретно материализованного представления, и, таким образом, мы рискуем потерять хороший термин для представления в исходном смысле.
- ^ Oracle8i Tuning Release 8.1.5 . Ecst.csuchico.edu. Проверено 9 февраля 2012.
- ^ PostgreSQL: Материализованные представления . Wiki.postgresql.org (07.05.2010). Проверено 25 сентября 2013.
- ^ PostgreSQL: Документация: 9.3: СОЗДАТЬ МАТЕРИАЛИЗИРОВАННЫЙ ВИД . PostgreSQL.com. Проверено 25 января 2014.
- ^ PostgreSQL: Документация: 9.4: ОБНОВЛЕННЫЙ МАТЕРИАЛИЗОВАННЫЙ ПРОСМОТР . PostgreSQL.com. Проверено 23 января 2015.
- ^ «Обсуждение CMU DB: Строительный материал» . Проверено 26 июня 2020 .
- ^ Материализованные представления - Sybase SQL Anywhere, архивировано 14 декабря 2009 г. на Wayback Machine . Ianywhere.com. Проверено 9 февраля 2012.
- ^ Повышение производительности с помощью индексированных представлений SQL Server 2005 . Microsoft.com. Проверено 9 февраля 2012.
- ^ Документация ClickHouse MaterializedView . Clickhouse.yandex. Проверено 5 сентября 2019.
- ^ Реализация материализованных представлений в MySQL . Shinguz.ch (06.11.2006). Проверено 9 февраля 2012.
- ^ Flexviews для MySQL - постепенно обновляемые материализованные представления с MySQL . Flexviews.sourceforge.net. Проверено 9 февраля 2012.
- ^ 8 апреля 2020 г. Пресс-релиз Google.com Проверено 20 мая 2020 г.
- ^ Документация по материализованным представлениям Google BigQuery Google.com Проверено 20 мая 2020 г.
Внешние ссылки
- Концепции и архитектура материализованного представления - Oracle
- Фрагменты SQL: Руководства по функциям SQL - Материализованные представления - Oracle
- Справочник по API Oracle9i Replication Management, выпуск 2 (9.2)
- Материализованные представления в Oracle 11.2
- Материализованные таблицы запросов в DB2
- Создание материализованных представлений в MySQL