Представления VS Материализованные представления

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

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

Спасибо

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
3
1
4 044
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Основная причина не использовать материализованное представление — стоимость. Они занимают место на диске. Их также необходимо поддерживать. По умолчанию материализованные представления являются статическими, что означает, что их данные постепенно устаревают с течением времени. Обновление материализованного представления может быть обременительным (в зависимости от базового запроса). В то время как запрос представления всегда дает нам самое актуальное представление данных.

Нижеследующее является только рекомендациями, а не полными или отдельными

Когда использовать представление

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

Когда использовать материализованное представление

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

Ответы на ваши вопросы в документация(*). У меня нет намерения переписывать это прекрасное руководство, но я отвечу на ваши вопросы, потому что, начав, я обречен продолжать.

  1. Материализованное представление — это копия данных из одной или нескольких таблиц, возможно, в других схемах или даже в других базах данных.
  2. Как я уже сказал, копирование данных сопряжено с накладными расходами. Место для хранения и работа с устаревшими данными — это большие затраты.
  3. Представление — это просто запрос, буквально нечего индексировать.
  4. select * from user_extents where segment_name = 'name of mview'
  5. Обновление при фиксации не бесплатно. Выполнение требует системных ресурсов (транзакции над исходной таблицей занимают больше времени). Кроме того, многие материализованные представления могут поддерживать только полное обновление по требованию.

(*) Это документация Oracle, потому что это то, что предлагает ваш профиль, но другие платформы RDBMS имеют аналогичные документы.

@apc ...... 1) Вы хотите сказать, что и представление, и материализованное представление являются удобным способом сохранить запрос и логику, но материализованное представление использует дисковое пространство для репликации данных, которых нет в обычном представлении, верно? 2) Тем не менее есть небольшая путаница, если оба являются удобным способом сохранить запрос и логику, тогда единственная причина, по которой мы не используем материализованное представление, только потому, что они занимают место на диске? 3) Мы можем применять индексы в материализованном представлении, которые мы не можем применить в представлении?

Jaspreet Singh 23.05.2019 17:53

@apc...... 4) Как мы можем проверить, что материализованное представление использует дисковое пространство для репликации данных? 5) Как вы сказали, обновление материализованного представления может быть обременительным, но при создании материализованного представления у нас есть возможность выбрать, хотим ли мы обновить материализованное представление при фиксации или по требованию, и если мы выберем Обновить при фиксации, то когда пользователь вставит данные и сделать фиксацию, тогда материализованное представление автоматически получит ссылку?

Jaspreet Singh 23.05.2019 17:54

Другие вопросы по теме