Материализованный вид
В вычислительной технике материализованное представление — это объект базы данных , содержащий результаты запроса . Например, это может быть локальная копия данных, расположенная удаленно, или это может быть подмножество строк и/или столбцов таблицы или результата соединения , или это может быть сводка с использованием агрегатной функции .
Процесс создания материализованного представления иногда называют материализацией . [1] Это форма кэширования результатов запроса, похожая на запоминание значения функции в функциональных языках, и иногда ее называют формой предварительного вычисления . [2] [3] Как и в случае с другими формами предварительных вычислений, пользователи баз данных обычно используют материализованные представления из соображений производительности, то есть как форму оптимизации. [4]
Материализованные представления, в которых хранятся данные на основе удаленных таблиц, также известны как снимки. [5] (устаревшая терминология Oracle ).
В любой системе управления базами данных , использующей реляционную модель , представление представляет собой виртуальную таблицу , представляющую результат к базе данных запроса . Всякий раз, когда запрос или обновление обращается к виртуальной таблице обычного представления, СУБД преобразует их в запросы или обновления к базовым таблицам. Материализованное представление использует другой подход: результат запроса кэшируется как конкретная («материализованная») таблица (а не представление как таковое), которое может время от времени обновляться из исходных базовых таблиц. Это обеспечивает гораздо более эффективный доступ за счет дополнительного хранилища и потенциально устаревших данных. Материализованные представления находят применение особенно в сценариях хранения данных , где частые запросы к реальным базовым таблицам могут быть дорогостоящими. [ нужна ссылка ]
В материализованном представлении индексы могут быть построены по любому столбцу. Напротив, в обычном представлении обычно возможно использовать индексы только для столбцов, которые поступают непосредственно из индексированных столбцов (или имеют сопоставление с ними) в базовых таблицах; часто эта функциональность вообще не предлагается.
Реализации [ править ]
Оракул [ править ]
Материализованные представления были впервые реализованы в базе данных Oracle : функция перезаписи запросов была добавлена с версии 8i. [6]
Пример синтаксиса для создания материализованного представления в Oracle:
CREATE MATERIALIZED VIEW 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:
CREATE MATERIALIZED VIEW MV_MY_VIEW
[ WITH (storage_parameter [= value] [, ... ]) ]
[ TABLESPACE tablespace_name ]
AS SELECT * FROM <table_name>;
SQL-сервер [ править ]
Microsoft SQL Server отличается от других СУБД способом реализации материализованного представления с помощью концепции, известной как «Индексированные представления». Основное отличие состоит в том, что такие представления не требуют обновления, поскольку фактически они всегда синхронизируются с исходными данными таблиц, составляющих представление. Для достижения этого необходимо, чтобы линии происхождения и назначения были «детерминированными» в своем сопоставлении, что ограничивает типы возможных запросов для этого. Этот механизм реализован начиная с версии SQL Server 2000 года.
Пример синтаксиса для создания материализованного представления в SQL Server:
CREATE VIEW MV_MY_VIEW
WITH SCHEMABINDING
AS
SELECT COL1, SUM(COL2) AS TOTAL
FROM <table_name>
GROUP BY COL1;
GO
CREATE UNIQUE CLUSTERED INDEX XV
ON MV_MY_VIEW (COL1);
Фреймворки потоковой обработки [ править ]
Apache Kafka (начиная с версии 0.10.2), Apache Spark (начиная с версии 2.0), Apache Flink, Kinetica DB , [10] Материализоваться, [11] и RisingWave [12] все поддерживают материализованные представления потоков данных.
Другие [ править ]
Материализованные представления также поддерживаются в Sybase SQL Anywhere . [13] В IBM Db2 они называются «материализованными таблицами запросов». [14] ClickHouse поддерживает материализованные представления, которые автоматически обновляются при слиянии. [15] MySQL изначально не поддерживает материализованные представления, но можно реализовать обходные пути с помощью триггеров или хранимых процедур. [16] с открытым исходным кодом или с помощью приложения Flexviews . [17] Материализованные представления можно реализовать в Amazon DynamoDB с использованием событий изменения данных, фиксируемых DynamoDB Streams. Google объявил 8 апреля 2020 г. [18] наличие материализованных представлений для BigQuery [19] как бета-версия.
Ссылки [ править ]
- ^ Сравните: CJ Date (28 августа 2006 г.). Словарь реляционных баз данных: подробный глоссарий реляционных терминов и понятий с наглядными примерами . «О'Рейли Медиа, Инк.». п. 59. ИСБН 978-1-4493-9115-7 . Проверено 26 октября 2016 г.
материализация[:] Несколько простой метод реализации операций над представлениями, согласно которому (а) реляционное выражение, определяющее представление, оценивается в момент вызова операции, (б) тем самым представление материализуется и (в) рассматриваемая операция затем выполняется в отношении материализованного таким образом отношения.
- ^ Карен Мортон; Керри Осборн; Робин Сэндс; Риядж Шамсудин; Джаред Стилл (28 октября 2013 г.). Про Oracle SQL . Апресс. п. 48. ИСБН 978-1-4302-6220-6 .
- ^ Мари-Од Офор; Эстебан Зиманьи (16 января 2012 г.). Бизнес-аналитика: Первая европейская летняя школа, EBISS 2011, Париж, Франция, 3-8 июля 2011 г., Учебные лекции . Springer Science & Business Media. п. 43. ИСБН 978-3-642-27357-5 .
- ^ Майкл Л. Гонсалес (25 февраля 2003 г.). Хранилище данных IBM: с инструментами IBM Business Intelligence . Джон Уайли и сыновья. п. 214. ИСБН 978-0-471-45736-7 .
- ^ CJ Date (28 августа 2006 г.). Словарь реляционных баз данных: подробный глоссарий реляционных терминов и понятий с наглядными примерами . «О'Рейли Медиа, Инк.». п. 59. ИСБН 978-1-4493-9115-7 . Проверено 26 октября 2016 г.
материализованное представление[:] Устаревший термин для обозначения моментального снимка. [...] Проблема в том, [...] что (как указывает определение) снимки стали известны, по крайней мере, в некоторых кругах, вообще не как снимки, а как материализованные представления. Но снимки — это не представления; представления являются виртуальными, а снимки — нет, а «материализованное представление» является противоречием в терминах (по крайней мере, в том, что касается модели). Хуже того, неквалифицированный термин «представление» часто воспринимается как конкретно означающий материализованное представление, и, таким образом, мы рискуем остаться без подходящего термина для представления в первоначальном смысле.
- ^ Настройка Oracle8i, выпуск 8.1.5 . Ecst.csuchico.edu. Проверено 9 февраля 2012 г.
- ^ «Материализованные представления — PostgreSQL wiki» . wiki.postgresql.org . Проверено 29 ноября 2022 г.
- ^ «СОЗДАТЬ МАТЕРИАЛИЗОВАННОЕ ВИДЕНИЕ» . Документация PostgreSQL . 10 ноября 2022 г. Проверено 29 ноября 2022 г.
- ^ «ОБНОВИТЬ МАТЕРИАЛИЗОВАННОЕ ПРОСМОТР» . Документация PostgreSQL . 13 февраля 2020 г. Проверено 29 ноября 2022 г.
- ^ «Материализованные представления» . Проверено 28 декабря 2022 г.
- ^ «Разговор CMU DB: Материализация строительства» . Проверено 30 марта 2022 г.
- ^ «Является ли RisingWave следующим Apache Flink?» . www.singularity-data.com . 28 апреля 2022 г. Проверено 30 июня 2022 г.
- ^ Материализованные представления — Sybase SQL Anywhere. Архивировано 14 декабря 2009 г. на Wayback Machine . Ianywhere.com. Проверено 9 февраля 2012 г.
- ^ Повышение производительности с помощью индексированных представлений SQL Server 2005 . Microsoft.com. Проверено 9 февраля 2012 г.
- ^ Документация ClickHouse MaterializedView . Clickhouse.yandex. Проверено 05 сентября 2019 г.
- ^ Реализация материализованных представлений в MySQL . Шингуз.ч (06.11.2006). Проверено 9 февраля 2012 г.
- ^ Flexviews для MySQL — материализованные представления с возможностью постепенного обновления с помощью MySQL . Flexviews.sourceforge.net. Проверено 9 февраля 2012 г.
- ^ «Примечания к выпуску» . Google.com. 8 апреля 2020 г. Проверено 21 июля 2021 г.
- ^ Документация по материализованным представлениям Google BigQuery Google.com Проверено 20 мая 2020 г.
Внешние ссылки [ править ]
- Концепции и архитектура материализованного представления – Oracle
- Фрагменты SQL: Учебные пособия по функциям SQL – Материализованные представления – Oracle
- Справочник по API управления репликацией Oracle9i, выпуск 2 (9.2)
- Материализованные представления в Oracle 11.2
- Материализованные таблицы запросов в Db2
- Создание материализованных представлений в MySQL