As visualizações materializadas permitem armazenar fisicamente os resultados de consultas complexas e atualizá-los periodicamente. Portanto, eles são úteis nos casos em que você precisa de acesso rápido a dados para relatórios e inteligência de negócios. Veja como criar uma visualização materializada no PostgreSQL.
Visualização PostgreSQL vs Visualização Materializada
As visualizações materializadas são semelhantes às visualizações do PostgreSQL, que permitem armazenar consultas SQL para chamá-las posteriormente. No entanto, a visualização do PostgreSQL permite armazenar apenas a consulta SQL e não seu resultado. As visualizações materializadas permitem armazenar fisicamente o resultado da consulta e atualizá-los periodicamente. Como resultado, as visualizações materializadas são mais rápidas do que as visualizações do PostgreSQL.
Bônus de leitura:Como obter a última linha por grupo no PostgreSQL
Como criar uma visualização materializada no PostgreSQL
Você pode criar uma visão materializada no PostgreSQL usando a instrução CREATE MATERIALIZED VIEW conforme mostrado abaixo.
CREATE MATERIALIZED VIEW view_name AS query WITH [NO] DATA;
Na declaração acima, você precisa mencionar view_name bem como a consulta cujo resultado você deseja armazenar na visualização materializada.
Por fim, você também pode especificar a opção WITH DATA se desejar carregar dados na visualização no momento de sua criação. Se você mencionar WITH NO DATA, a exibição será sinalizada como ilegível e você não poderá consultar dados da exibição até carregar dados nela.
Bônus de leitura:Função de criação do PostgreSQL
Atualização da visualização materializada do PostgreSQL
Você pode carregar dados na visualização materializada usando a instrução REFRESH MATERIALIZED VIEW conforme mostrado
REFRESH MATERIALIZED VIEW view_name
Você também pode usar a instrução acima para atualizar a visualização materializada.
Observe que a instrução REFRESH MATERIALIZED VIEW bloqueia os dados da consulta para que você não possa executar consultas neles. Você pode evitá-lo usando a opção CONCORRENTEMENTE
REFRESH MATERIALIZED VIEW CONCURRENTLY view_name
Nesse caso, o PostgreSQL cria uma visão temporária, compara-a com a original e faz as inserções, atualizações e exclusões necessárias. Como resultado, a opção CONCURRENTLY está disponível apenas para visualizações materializadas que possuem um índice exclusivo.
Para atualizar automaticamente a visualização materializada periodicamente, você pode executar REFRESH MATERIALIZED VIEW por meio de um script automatizado.
Bônus de leitura:PostgreSQL Criar Esquema
Remover visualizações materializadas
Você pode excluir visualizações materializadas usando a instrução DROP MATERIALIZED VIEW.
DROP MATERIALIZED VIEW view_name
Exemplos de visualização materializada
Vejamos alguns exemplos de visualizações materializadas.
Aqui está a consulta para criar uma visualização materializada chamada sample_view
postgres=# create materialized view sample_view as select * from sales with no data;
Na consulta acima, mencionamos a opção WITH NO DATA para que a visualização não tenha nenhum dado e dê um erro quando tentarmos consultá-la.
postgres=# select * from sample_view; ERROR: materialized view "sample_view" has not been populated HINT: Use the REFRESH MATERIALIZED VIEW command.
Agora, atualizaremos a visualização para carregar dados nela e, em seguida, executaremos a consulta acima em nossa visualização.
postgres=# refresh materialized view sample_view; REFRESH MATERIALIZED VIEW postgres=# select * from sample_view; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 250 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Como você pode ver acima, quando executamos nossa consulta novamente, obtemos o resultado.
Espero que agora você possa criar facilmente uma visão materializada para seu banco de dados.
A Ubiq facilita a visualização de dados em minutos e o monitoramento em painéis em tempo real. Experimente hoje!