Материализованное представление - Materialized view - Wikipedia

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

Процесс настройки материализованного представления иногда называют материализация.[1] Это форма кеширование результаты запроса, похожие на мемоизация значения функции в функциональных языках, и это иногда описывается как форма предварительный расчет.[2][3] Как и в случае с другими формами предварительных вычислений, пользователи баз данных обычно используют материализованные представления по соображениям производительности, то есть в качестве формы оптимизации.[4]

Материализованные представления, в которых хранятся данные на основе удаленных таблиц, также известны как снимки,[5] (устаревшая терминология Oracle).

В любом система управления базами данных после реляционная модель, а Посмотреть это виртуальный стол представляющий результат база данных запрос. Каждый раз, когда запрос или обновление обращается к виртуальной таблице обычного представления, СУБД преобразует их в запросы или обновления базовых таблиц. Материализованное представление использует другой подход: результат запроса кешированный в виде конкретной («материализованной») таблицы (а не представления как такового), которое может время от времени обновляться из исходных базовых таблиц. Это обеспечивает гораздо более эффективный доступ за счет дополнительного хранилища и того, что некоторые данные могут оказаться устаревшими. Материализованные представления находят применение особенно в хранилище данных сценарии, в которых частые запросы фактических базовых таблиц могут быть дорогостоящими.

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

Реализации

Oracle

Материализованные представления были реализованы сначала База данных Oracle: функция перезаписи запросов была добавлена ​​с версии 8i.[6]

Пример синтаксиса для создания материализованного представления в Oracle:

 СОЗДАЙТЕ МАТЕРИАЛИЗИРОВАННЫЙ ПОСМОТРЕТЬ MV_MY_VIEWОБНОВИТЬ БЫСТРЫЙ НАЧНИТЕ С SYSDATE   СЛЕДУЮЩИЙ SYSDATE + 1     В КАЧЕСТВЕ ВЫБРАТЬ * ИЗ <table_name>;

PostgreSQL

В PostgreSQL, версия 9.3 и новее изначально поддерживают материализованные представления.[7] В версии 9.3 материализованное представление не обновляется автоматически и заполняется только во время создания (если только БЕЗ ДАННЫХ используется). Позже его можно обновить вручную, используя ОБНОВИТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД.[8] В версии 9.4 обновление может происходить одновременно с выбором в материализованном представлении, если ОДНОВРЕМЕННО используется.[9]

Пример синтаксиса для создания материализованного представления в PostgreSQL:

 СОЗДАЙТЕ МАТЕРИАЛИЗИРОВАННЫЙ ПОСМОТРЕТЬ MV_MY_VIEW [ С (storage_parameter [= ценить] [, ... ]) ]    [ ТАБЛИЦА tablespace_name ]     В КАЧЕСТВЕ ВЫБРАТЬ * ИЗ <table_name>;

SQL Server

Microsoft SQL Server отличается от других СУБД тем, что реализует материализованное представление с помощью концепции, известной как «индексированные представления». Основное отличие состоит в том, что такие представления не требуют обновления, поскольку они фактически всегда синхронизируются с исходными данными таблиц, составляющих представление. Для этого необходимо, чтобы линии отправления и назначения были «детерминированными» в их отображении, что ограничивает типы возможных запросов для этого. Этот механизм реализован начиная с версии SQL Server 2000 года.

Пример синтаксиса для создания материализованного представления в SQL Server:

СОЗДАЙТЕПОСМОТРЕТЬMV_MY_VIEWСРАЗРАБОТКАВ КАЧЕСТВЕВЫБРАТЬCOL1,СУММ(COL2)В КАЧЕСТВЕОБЩИЙИЗ<table_name>ГРУППАКCOL1;ИДТИСОЗДАЙТЕУНИКАЛЬНЫЙКЛАСТЕРИРОВАННЫЕИНДЕКСXVНАMV_MY_VIEW(COL1);

Фреймворки потоковой обработки

Апач Кафка (начиная с v0.10.2), Apache Spark (начиная с версии 2.0) и Materialize.io[10] все поддерживают материализованные представления потоков данных.

Другие

Материализованные представления также поддерживаются в Sybase SQL Anywhere.[11] В IBM DB2, они называются «материализованными таблицами запросов».[12] ClickHouse поддерживает материализованные представления, которые автоматически обновляются при слияниях. [13] MySQL не поддерживает материализованные представления изначально, но обходные пути могут быть реализованы с помощью триггеров или хранимых процедур [14] или с помощью приложения с открытым исходным кодом Flexviews.[15] Материализованные представления могут быть реализованы в Amazon DynamoDB с использованием событий изменения данных, зафиксированных DynamoDB Streams.Google, объявленных 8 апреля 2020 г.[16] наличие материализованных представлений для BigQuery[17] как бета-версия.

Рекомендации

  1. ^ Сравнивать: Си Джей Дэйт (28 августа 2006 г.). Словарь реляционных баз данных: полный глоссарий реляционных терминов и понятий с иллюстративными примерами. "O'Reilly Media, Inc.". п. 59. ISBN  978-1-4493-9115-7. Получено 2016-10-26. материализация [:] Несколько несложный метод реализации операций над представлениями, согласно которому (а) реляционное выражение, определяющее представление, оценивается во время вызова операции, (б) таким образом представление материализуется, и (в) Затем рассматриваемая операция выполняется в отношении материализованного таким образом отношения.
  2. ^ Карен Мортон; Керри Осборн; Робин Сэндс; Риядж Шамсудин; Джаред Стилл (28 октября 2013 г.). Профессиональный Oracle SQL. Апресс. п. 48. ISBN  978-1-4302-6220-6.
  3. ^ Мари-Од Ауфор; Эстебан Зимани (16 января 2012 г.). Business Intelligence: Первая европейская летняя школа, EBISS 2011, Париж, Франция, 3-8 июля 2011 г., обучающие лекции. Springer Science & Business Media. п. 43. ISBN  978-3-642-27357-5.
  4. ^ Майкл Л. Гонсалес (25 февраля 2003 г.). IBM Data Warehousing: с помощью IBM Business Intelligence Tools. Джон Вили и сыновья. п. 214. ISBN  978-0-471-45736-7.
  5. ^ Си Джей Дэйт (28 августа 2006 г.). Словарь реляционных баз данных: полный глоссарий реляционных терминов и понятий с иллюстративными примерами. "O'Reilly Media, Inc.". п. 59. ISBN  978-1-4493-9115-7. Получено 2016-10-26. материализованное представление [:] Устаревший термин для снимка. [...] Проблема в том, [...] что (как указывает определение) снимки стали известны, по крайней мере в некоторых кругах, вовсе не как снимки, а как материализованные представления. Но снимки - это не представления; представления являются виртуальными, а снимки - нет, и «материализованное представление» является терминологическим противоречием (по крайней мере, в том, что касается модели). Еще хуже то, что безоговорочный термин Посмотреть часто используется для обозначения конкретно материализованного представления, и поэтому мы рискуем потерять хороший термин для представления в исходном смысле.
  6. ^ Версия 8.1.5 настройки Oracle8i. Ecst.csuchico.edu. Проверено 9 февраля 2012.
  7. ^ PostgreSQL: материализованные представления. Wiki.postgresql.org (07.05.2010). Проверено 25 сентября 2013.
  8. ^ PostgreSQL: Документация: 9.3: СОЗДАТЬ МАТЕРИАЛИЗОВАННЫЙ ВИД. PostgreSQL.com. Проверено 25 января 2014.
  9. ^ PostgreSQL: Документация: 9.4: ОБНОВЛЕННЫЙ МАТЕРИАЛИЗОВАННЫЙ ПРОСМОТР. PostgreSQL.com. Проверено 23 января 2015.
  10. ^ «Обсуждение CMU DB: Строительный материал». Получено 26 июн 2020.
  11. ^ Материализованные представления - Sybase SQL Anywhere В архиве 2009-12-14 на Wayback Machine. Ianywhere.com. Проверено 9 февраля 2012.
  12. ^ Повышение производительности с помощью индексированных представлений SQL Server 2005. Microsoft.com. Проверено 9 февраля 2012.
  13. ^ Документация ClickHouse MaterializedView. Clickhouse.yandex. Проверено 5 сентября 2019.
  14. ^ Реализация материализованных представлений в MySQL. Shinguz.ch (06.11.2006). Проверено 9 февраля 2012.
  15. ^ Flexviews для MySQL - постепенно обновляемые материализованные представления с MySQL. Flexviews.sourceforge.net. Проверено 9 февраля 2012.
  16. ^ Пресс-релиз от 8 апреля 2020 г. Google.com, проверено 20 мая 2020.
  17. ^ Документация по материализованным представлениям Google BigQuery Google.com, проверено 20 мая 2020.

внешняя ссылка