Aprenda PostgreSQL

  • Página Inicial
  • Contato!
  • Tudo sobre PostgreSQL Parte 1!
  • Tudo sobre PostgreSQL Parte 2!
  • Tudo sobre PostgreSQL Parte 3!
  • Tudo sobre PostgreSQL Parte 4!
  • Tudo sobre PostgreSQL Parte 4

    Como Criar e Usar Materialized Views no PostgreSQL

    Como sabemos, uma view é uma tabela virtual (lógica) cujo conteúdo é baseado no retorno de uma consulta pré-definida, realizada em uma ou mais tabelas (ou outras views), mas que não contém os dados em si.

    Materialized view é um objeto de banco de dados que armazena o resultado de uma consulta de forma persistente. É uma tabela auxiliar que permite maior performance no acesso aos dados.

    Veja essa consulta com inner join, por exemplo:

    
    select cl.nome, pr.nome, pe.qtd_vendida from pedidos pe inner join clientes cl
    on pe.cod_cliente = cl.codigo
    inner join produtos pr
    on pe.cod_produto = pr.codigo
    order by cl.nome;
    
    

    Para criar uma materializade view, fazemos assim:

    
    create materialized view view_compras as
    select cl.nome as nome_cliente, pr.nome as nome_produto, pe.qtd_vendida from pedidos pe inner join clientes cl
    on pe.cod_cliente = cl.codigo
    inner join produtos pr
    on pe.cod_produto = pr.codigo
    order by cl.nome
    with no data; -- Not data cria a view vazia.
    
    

    Aí, podemos fazer uma consulta nessa view assim:

    
    select * from view_compras;
    
    

    Só que ele dará erro por não ter sido recarregada, por isso devemos recarregar ela, assim:

    
    refresh materialized view view_compras;
    
    select * from view_compras;
    
    

    PS: Ao alterar algo na tabela, devemos atualizar a materialized view também.

    Para alterar uma view, fazemos assim:

    
    alter materialized view view_compras
    rename column nome_produto to produto;
    
    select * from view_compras;
    
    

    Para excluir ela, fazemos assim:

    
    drop materialized view view_compras;
    
    

    Backup e Restauração de Banco de Dados PostgreSQL com pg_dump

    Para fazer o backup de um banco de dados, como o da biblioteca exemplificado anteriormente, podemos usar a forma gráfica, clicando no botão direito no banco. Mas nesse exemplo usaremos o terminal.

    PS: Você precisa ter permissão para manipular o banco de dados. Acesse o PSQL com o usuário do Postgres com permissões.

    Abra o PG_Dump na pasta desejada com esse comando:

    
    pg_dump -U postgres biblioteca > biblioteca_back.bkp
    
    

    PS: Dependendo do tamanho do banco, pode demorar um pouco.

    Vamos excluir o banco para podermos restaurar ele, digitando no PSQL esse comando:

    
    drop database biblioteca;
    
    

    Ele dará erro por ele está sendo acessado por outros usuários, então vamos desconectar esse banco para podermos excluir ele, além de revogar a conexão, assim:

    
    revoke connect on database biblioteca from public;
    
    select pg_terminate_backend(pg_stat_activity.pid) from pg_stat_activity
    where pg_stat_activity.datname = 'biblioteca';
    
    drop database biblioteca;
    
    

    PS: Dentro do PSQL, use o comando \l para visualizar os bancos.

    Para restaurar o backup, no PSQL crie um novo banco manualmente com o mesmo nome:

    
    create database biblioteca template template0;
    
    

    E depois restaurar assim, na linha de comando:

    
    psql -U postgres biblioteca < biblioteca_back.bkp;