Em sistemas de banco de dados, uma visão materializada como objeto de banco de dados armazena os resultados pré-computados de uma consulta como uma tabela física. Como os dados são armazenados em disco, pesquisas complicadas podem ser recuperadas mais rapidamente. Uma visão, entretanto, é uma tabela virtual que define uma consulta, mas na verdade não contém dados. Uma visualização extrai as informações mais recentes das tabelas base subjacentes sempre que você a consulta. Acesso a dados em tempo real versus resultados pré-computados são alguns dos critérios que determinam se deve ser usada uma visão materializada ou uma visão padrão.
O que é uma vista materializada?
Uma visão materializada armazena fisicamente os resultados de uma consulta SQL no banco de dados. Os dados armazenados podem ser atualizados em intervalos especificados (manualmente, periodicamente ou automaticamente) para manter a visualização ajustada com as alterações nas tabelas base subjacentes.
Como funciona a visão materializada?
Digamos que você queira executar uma consulta SQL complexa que resuma os dados de vendas por várias regiões. Em vez de executar aquela consulta complexa sempre que um relatório precisa ser gerado, você cria uma visão materializada que faz a pré-computação e o armazenamento dos resultados. Quando um usuário deseja ver o relatório, ele o recupera diretamente da visão materializada, em vez de ter que recalcular as agregações durante a execução de um programa de computador sem interromper a execução.
Casos de uso comuns de visão materializada
- Agregações de pré-computação: A visualização materializada é ótima para relatórios e análises. Ele pré-calcula e armazena dados agregados para que consultas demoradas não precisem ser executadas repetidas vezes.
- Reduzindo a carga durante junções complexas: A visualização materializada é criada para unir tabelas e armazenar o resultado durante a execução da consulta quando o banco de dados contém várias junções complexas.
- Cache de dados acessados com frequência: A visualização materializada atua como um cache que armazena os resultados, melhorando o desempenho da consulta e reduzindo a carga nas tabelas base.
O que é uma View?
Uma visualização é uma tabela virtual que não armazena dados em si. A consulta é executada várias vezes nas tabelas base sempre que a visualização é acessada para formar os resultados mais recentes.
Como funciona a visualização?
Suponha que você tenha muitas tabelas base contendo informações de clientes de diferentes regiões. Você cria uma visualização em vez de escrever uma consulta SQL complexa sempre que precisar visualizar dados consolidados do cliente. Então, quando você consulta a visualização, ela recupera e exibe dados unindo as tabelas base dinamicamente.
Casos de uso comum de visualização
- Simplificando consultas complexas: O View pode encapsular uma série complexa de junções e filtros em uma tabela virtual, permitindo acesso mais simples aos dados para os usuários finais.
- Aumentando a segurança: Ao definir uma visualização para mostrar apenas determinadas colunas ou linhas, é possível limitar o conhecimento do acesso a dados confidenciais, mantendo os dados subjacentes ocultos.
- Criando uma camada de abstração: Você pode usar a visualização para fornecer uma camada de abstração em várias tabelas, facilitando muito a compreensão e o gerenciamento dos dados sem a necessidade de interferir nas tabelas base brutas.
Vantagens e desvantagens da visão materializada versus visão
Escolher entre uma visão materializada e uma visão envolve compreender os compromissos. Abaixo estão detalhados os prós e os contras de cada abordagem.
Prós e contras da visão materializada
| Aspecto | Prós | Contras |
| Desempenho | melhora o desempenho mantendo resultados pré-computados | se não for atualizado, ficará obsoleto |
| Velocidade | reduz o tempo gasto em consultas complexas | Para preservar a visualização, é necessário mais armazenamento |
| Frescura | pode ser atualizado regularmente | A menos que sejam atualizados, os dados nem sempre estão atualizados |
| Uso de recursos | para consultas repetitivas, menos CPU e memória são usadas | requer recursos adicionais para manutenção e armazenamento |
| Flexibilidade | benéfico para casos como análises e relatórios | não é a melhor opção para aplicações em tempo real que precisam de novos dados |
| Manutenção | pode ser atualizado automaticamente (incremental ou completo) | para bancos de dados enormes, a atualização pode ser cara |
| Consultas complexas | ajuda os usuários finais a compreender consultas complexas | necessário atualizar a visualização para atualizar as tabelas subjacentes |
| Simultaneidade | ao armazenar os resultados em cache, a carga no banco de dados reduz | o desempenho do banco de dados é afetado por altas taxas de atualização |
Prós e contras da visão
| Aspecto | Prós | Contras |
| Desempenho | útil para simplificar o acesso aos dados | se a consulta envolver múltiplas junções ou agregações fica lenta |
| Velocidade | acesso a dados em tempo real com as informações mais recentes e sem atrasos | consulta mais lenta, especialmente quando a visualização é complexa |
| Frescura | sempre atualizado com as tabelas subjacentes | pode levar a um desempenho ruim com consultas complexas |
| Uso de recursos | não exigirá mais armazenamento, pois apenas mantém uma definição da consulta | Cada consulta de execução recalcula os resultados |
| Flexibilidade | pode ser tratado como uma tabela normal em consultas | não é adequado para análises de alto desempenho |
| Manutenção | nenhuma atualização é necessária, pois obtém dados em tempo real automaticamente | o desempenho pode ser prejudicado quando acessado com frequência usando grandes conjuntos de dados |
| Consultas complexas | facilita a lógica de consulta fornecendo uma abstração estruturada | resultados pré-computados não podem ser armazenados como uma visão materializada |
| Simultaneidade | sempre mostra alterações em tempo real nas tabelas subjacentes | carga pesada pode colocar peso extra no banco de dados |
Principais diferenças entre visualização e visualização materializada
Os aplicativos modernos contam com bancos de dados como espinha dorsal, e o controle dos dados é realizado por duas ferramentas principais: visão materializada e visão. Eles existem principalmente para simplificar o acesso aos dados e otimizar o desempenho das consultas, porém diferem em sua finalidade. A seguir estão alguns recursos distintivos entre uma visão materializada e uma visão.
Armazenar
- Visão materializada: Armazena dados reais no banco de dados.
- Visualizar: Não armazena dados; armazena apenas a definição da consulta.
Execução de consulta
- Visão materializada: Os dados pré-computados são buscados, melhorando assim o desempenho da consulta.
- Visualizar: A execução da consulta é iniciada com cada acesso.
Atualização de dados
- Visão materializada: Os dados podem ficar obsoletos, a menos que sejam atualizados explicitamente.
- Visualizar: Ele sempre busca os dados mais recentes das tabelas subjacentes.
Desempenho
- Visão materializada: É mais rápido porque os dados computados anteriormente foram armazenados.
- Visualizar: Se a consulta for complexa, pode ser mais lenta, pois é sob demanda.
Mecanismo de atualização
- Visão materializada: Requer uma atualização manual ou agendada para atualizar o conteúdo.
- Visualizar: Nenhuma atualização é necessária, pois os dados em tempo real são sempre buscados.
Requisito de armazenamento
- Visão materializada: Requer algum armazenamento extra para manter os resultados pré-computados.
- Visualizar: Basicamente não usa armazenamento, exceto metadados de consulta.
Casos de uso
- Visão materializada: Adequado para relatórios, análises e consultas de alto desempenho.
- Visualizar: Uma opção quando dados quase em tempo real são obrigatórios.
Complexidade
- Visão materializada: É necessário gerenciamento de manutenção e atualização.
- Visualizar: Simples de configurar e usar, mas pode consumir muitos recursos.
Quando usar visualização materializada versus visualização
Use a visualização materializada quando:
A visão materializada existe quando o desempenho das consultas deve ser melhorado a todo custo, especialmente se tal consulta envolver muitos cálculos antes de retornar resultados com agregação pesada, junções ou operações de processamento. Pode ser particularmente útil quando os resultados pré-computados fazem grandes diferenças na carga imposta ao banco de dados ou na velocidade com que as consultas retornam resultados. Embora a visão materializada precise de atualização periódica para obter os dados atualizados mais recentes, ela serve a um propósito em cenários analíticos e de relatórios onde o acesso aos dados em tempo real não é tão crítico, mas a execução em velocidade rápida ainda conta.
Use a visualização quando:
Utilize a visão onde a consulta deve sempre buscar os dados mais recentes, onde o acesso aos dados deve ser em tempo real e a complexidade da consulta pode ser gerenciada e tendo em mente que a visão não armazena dados fisicamente no banco de dados, exigindo assim menor armazenamento. No entanto, lembre-se de que para consultas muito complexas, a visualização pode tornar o sistema lento quando executada várias vezes.
Conclusão
A diferença entre a visão materializada e a visão normal é um conceito importante ao ajustar o desempenho de um banco de dados. A visualização materializada é uma visualização que armazena resultados pré-computados para acelerar a consulta para operações pesadas; no entanto, eles podem ser problemáticos na manutenção, pois podem ficar obsoletos se não forem atualizados em tempo hábil. Pelo contrário, a visualização é atualizada para alterações das tabelas base subjacentes para precisão em tempo real, embora possam custar algum desempenho.
Ao decidir entre eles, considere a carga de trabalho do seu banco de dados, a complexidade da consulta e a importância dos dados em tempo real. Para relatórios ou análises onde o desempenho é a prioridade, a visão materializada é uma forte candidata. Por outro lado, para cenários em que os dados mais recentes são importantes, é desejável uma visualização regular.
A decisão final também pode depender do sistema de banco de dados utilizado. Diferentes sistemas de banco de dados, incluindo PostgreSQL, Oráculo, e MySQL têm níveis variados de suporte e recursos de visualização materializada.