O que é uma visão materializada?
Uma visão materializada corresponde a uma tabela de dados duplicada criada pela combinação de dados de várias tabelas existentes para uma recuperação mais rápida dos dados. Por exemplo, considere uma aplicação de varejo com duas tabelas base para dados de clientes e de produtos. A tabela de clientes contém informações como nomes e detalhes de contato dos clientes, enquanto a tabela de produtos contém informações sobre detalhes e custos dos produtos. A tabela de clientes armazena somente as identificações de produtos dos itens que um cliente individual adquire. É necessário realizar a referência cruzada entre as duas tabelas para obter detalhes dos produtos para os itens adquiridos por clientes específicos. Em vez disso, é possível criar uma visão materializada que armazena os nomes dos clientes e os detalhes dos produtos associados em uma única tabela temporária. Você pode desenvolver estruturas de índice na visão materializada para aprimorar a performance de leitura de dados.
Quais são os benefícios das visões materializadas?
As visões materializadas são um método rápido e eficiente de acessar dados relevantes. Eles ajudam na otimização de consultas em aplicativos com uso intenso de dados. A seguir, analisaremos alguns dos principais benefícios.
Velocidade
As consultas de leitura percorrem diferentes tabelas e linhas de dados para reunir as informações necessárias. Com visões materializadas, você pode consultar dados diretamente de sua nova visualização, em vez de precisar computar novas informações todas as vezes. Quanto mais complexa for sua consulta, mais tempo você economizará usando uma visão materializada.
Simplicidade de armazenamento de dados
As visões materializadas permitem consolidar uma lógica de consulta complexa em uma tabela. Isso facilita a transformação de dados e a manutenção do código para os desenvolvedores. Também pode ajudar a tornar as consultas complexas mais gerenciáveis. Você também pode usar o subconjunto de dados para diminuir a quantidade de dados que você precisa replicar na exibição.
Consistência
As visões materializadas fornecem uma visão consistente dos dados capturados em um momento específico. Você pode configurar a consistência de leitura em visões materializadas e tornar os dados acessíveis mesmo em ambientes multiusuários em que o controle de simultaneidade é essencial.
As visões materializadas também fornecem acesso aos dados mesmo que os dados de origem sejam alterados ou excluídos. Com o tempo, isso significa que você pode usar visões materializadas para gerar relatórios sobre instantâneos de dados baseados em tempo. O nível de isolamento das tabelas de origem garante que você tenha um maior grau de consistência em seus dados.
Controle de acesso aprimorado
Você pode usar uma visão materializada para controlar quem tem acesso a dados específicos. Você pode filtrar as informações dos usuários sem dar a eles acesso às tabelas de origem. Essa abordagem é prática se você quiser controlar quem tem acesso a quais dados e com que quantidade deles eles podem ver e interagir.
Quais são os casos de uso das visões materializadas?
Você pode se beneficiar de visões materializadas em muitos cenários diferentes.
Distribuir dados filtrados
Se você precisar distribuir dados recentes em vários locais, como para uma força de trabalho remota, as visões materializadas ajudam. Você replica e distribui dados para vários sites usando visões materializadas. As pessoas que precisam acessar os dados interagem geograficamente com o armazenamento de dados replicado mais próximo delas.
Esse sistema permite a simultaneidade e diminui a carga da rede. É uma abordagem eficaz com bancos de dados somente para leitura.
Analise dados de séries temporais
As visões materializadas fornecem instantâneos de conjuntos de dados com data e hora, para que você possa modelar as alterações nas informações ao longo do tempo. Você pode armazenar agregações pré-computadas de dados, como resumos mensais ou semanais. Esses usos são úteis para plataformas de inteligência de negócios e relatórios.
Interação remota de dados
Em sistemas de banco de dados distribuídos, você pode usar visões materializadas para otimizar consultas envolvendo dados de servidores remotos. Em vez de buscar dados repetidamente de uma fonte remota, você pode buscar e armazenar dados em uma visão materializada local. Isso reduz a necessidade de comunicação de rede e melhora o desempenho.
Por exemplo, se você receber dados de um banco de dados externo ou por meio de uma API, uma visão materializada consolida e ajuda a processá-los.
Processamento periódico em lote
As visões materializadas são úteis para situações em que o processamento periódico em lote é necessário. Por exemplo, uma instituição financeira pode usar visões materializadas para armazenar saldos de fim de dia e cálculos de juros. Ou podem armazenar resumos de desempenho do portfólio, que podem ser atualizados no final de cada dia útil.
Como funcionam as visões materializadas?
As visões materializadas funcionam pré-computando e armazenando os resultados de uma consulta específica como uma tabela física no banco de dados. O banco de dados executa a pré-computação em intervalos regulares, ou os usuários podem acioná-la por meio de eventos específicos. Os administradores monitoram o desempenho e a utilização dos recursos das visões materializadas para garantir que elas continuem cumprindo a finalidade pretendida.
Aqui está uma visão geral de como as visões materializadas funcionam.
Criar visão materializada
Você define uma consulta que recupera os dados desejados de uma ou mais tabelas de origem para criar visões materializadas. Essa consulta pode incluir filtragem, agregações, junções e outras operações, conforme necessário.
O banco de dados preenche inicialmente a visão materializada executando a consulta definida nos dados de origem. O resultado da consulta é armazenado como uma tabela física no banco de dados, e essa tabela representa a visão materializada.
Atualizar visão materializada
Os dados em uma visão materializada precisam ser atualizados periodicamente para refletir as mudanças nos dados subjacentes nas tabelas de origem. A frequência de atualização de dados depende do caso de uso e dos requisitos.
A seguir, explicamos algumas abordagens comuns para atualização de dados.
Atualização completa
A visão materializada é completamente recalculada e substituída pelos resultados mais recentes da consulta. É a abordagem mais simples, mas pode consumir muitos recursos, especialmente para grandes visões materializadas.
Atualização incremental
Somente as alterações nos dados subjacentes são aplicadas à visão materializada. Pode ser mais eficiente do que uma atualização completa ao lidar com grandes conjuntos de dados e atualizações frequentes.
Atualização sob demanda
Alguns sistemas permitem que as visões materializadas sejam atualizadas sob demanda, acionadas por eventos específicos ou solicitações de usuários. Isso dá mais controle sobre quando os dados são atualizados, mas exige um gerenciamento cuidadoso para garantir que a visão materializada permaneça atualizada.
Variações técnicas em diferentes sistemas
Cada sistema de gerenciamento de banco de dados tem métodos distintos para criar uma visão materializada.
Sistema de gerenciamento de banco de dados |
Como funcionam as visões materializadas |
PostgreSQL |
Com o PostgreSQL, você precisa atualizar manualmente a visão materializada, recalculando a visão inteira. Você preenche a visão materializada com dados no momento exato em que a cria. |
MySQL |
O MySQL não oferece suporte a visões materializadas. |
Oracle |
O Oracle atualiza automaticamente as visões materializadas, mas você também tem a opção de atualizar sob demanda. Você também pode escrever uma instrução SQL que solicite que as exibições sejam atualizadas antes de fornecer resultados. |
SQL Server |
O SQL Server usa o nome “exibições indexadas”, pois a materialização é uma etapa da criação de um índice de uma exibição regular. Você só pode realizar consultas SQL básicas com suas visualizações indexadas. São atualizados automaticamente para o usuário. |
MongoDB |
O MongoDB usa funções de agregação para fornecer uma funcionalidade semelhante a visões materializadas, mas em um ambiente NoSQL. |
Qual é a diferença entre visões e visões materializadas?
Em bancos de dados relacionais, uma visão é uma tabela temporária criada pela transformação e combinação dos dados em várias tabelas base. É uma tabela virtual que não armazena dados. Em vez disso, é definido por uma consulta em uma ou mais tabelas de origem.
Sempre que um usuário consulta a exibição, o mecanismo de banco de dados computa dinamicamente os resultados executando a consulta subjacente nas tabelas de origem. Os dados em uma exibição estão sempre atualizados porque são derivados diretamente das tabelas de origem sempre que são acessados.
Uma visão materializada, por outro lado, armazena os resultados de uma consulta específica como uma tabela física no banco de dados. Os dados na visão materializada são pré-computados e armazenados, o que significa que os resultados já estão disponíveis sem a necessidade de recalcular a consulta toda vez que a visualização é acessada.
No entanto, os dados nas visões materializadas nem sempre estão atualizados. Você precisa configurar a frequência de atualização para equilibrar a atualização dos dados e o desempenho da consulta.
Quais são os desafios das visões materializadas?
Como as visões materializadas são outro componente do banco de dados a ser considerado, você adiciona outra camada de complexidade em termos de manutenção. Você deve equilibrar os benefícios de consulta e eficiência com possíveis custos de armazenamento e problemas de consistência de dados.
Você precisa criar regras eficazes que acionem atualizações para garantir que suas visões materializadas permaneçam benéficas. A atualização frequente de suas visões materializadas pode afetar o desempenho do sistema, especialmente se você já estiver em um período de pico. Além disso, as visões materializadas também ocupam uma quantidade significativa de espaço à medida que replicam dados. Se você tiver um grande banco de dados que se atualiza constantemente, as demandas de armazenamento das visões materializadas provavelmente serão significativas.
Se você for usar uma visões materializada, precisará definir regras e cronogramas de atualização claros. Você também deve entender como lidar com inconsistências de dados, falhas de atualização e a sobrecarga adicional de armazenamento.
Como a AWS pode ajudar com seus requisitos de visão materializada?
As visões materializadas são uma ferramenta avançada para aprimorar a performance de consultas no Amazon Redshift.
O Amazon Redshift monitora continuamente a workload usando machine learning e cria novas visões materializadas, quando forem vantajosas. Esse recurso de Visões Materializadas Automatizadas (AutoMVs) no Redshift oferece benefícios de performance semelhantes aos das visões materializadas criadas pelo usuário.
O recurso de AutoMV pode ajudar você de várias maneiras:
- Equilíbrio dos custos de criação e manutenção de visões materializadas atualizadas em relação aos benefícios esperados para a latência de consultas.
- Monitoramento de AutoMVs criadas anteriormente e descarte quando não forem mais vantajosas.
- Atualização automática e de forma incremental, usando os mesmos critérios e restrições das visões materializadas criadas pelo usuário.
Além disso, os desenvolvedores não precisam revisar as consultas para aproveitar a AutoMV. A Regravação automática de consultas para usar visões materializadas identifica consultas que podem se beneficiar de AutoMVs criadas pelo sistema. Ela reescreve automaticamente essas consultas para usar as AutoMVs, aprimorando a eficiência da consulta.
Comece a usar as visão materializadas na AWS criando uma conta hoje mesmo.
Próximas etapas na AWS
Obtenha acesso instantâneo ao nível gratuito da AWS.