Banco de Dados

5 dez, 2018

7 objetos do PostgreSQL que você precisa conhecer

Publicidade

No último artigo, conversamos sobre a criação de um servidor PostgreSQL no Azure, e nos conectamos a ele através do pgAdmin.

Neste artigo, gostaria de conversar sobre alguns objetos do PostgreSQL que são muito importantes para que possamos utilizá-lo corretamente.

Tablespace

Sempre associo um tablespace a um guarda-roupas, mas de forma correta, um tablespace é um nome lógico para um local no sistema de arquivos, onde os objetos de banco de dados podem ser armazenados. E sendo assim, no PostgreSQL no Azure você não precisará criar tablespaces.

Os tablespaces permitem que o DBA use o conhecimento do padrão de uso de objetos de banco de dados para otimizar o desempenho. Por exemplo, um índice muito usado pode ser colocado em um disco mais rápido e altamente disponível.

Ao mesmo tempo, uma tabela que armazena dados arquivados que raramente são usados ou que não são críticos para o desempenho, pode ser armazenada em um sistema de disco mais barato e mais lento. Simples assim! A criação correta dos tablespaces também mostra o grau de maturidade da empresa com a governança de dados.

Por exemplo, podemos ter um tablespace com os dados pessoais de cidadãos brasileiros. Ou seja, dados que devem estar de acordo com a Lei Geral de Proteção de Dados.

Voltando a criação, o local deve ser um diretório vazio, existente e que pertença ao usuário do PostgreSQL no sistema operacional.

Todos os objetos criados posteriormente no tablespace serão armazenados em arquivos dentro desse diretório. O local não deve estar removível ou temporário, pois o cluster pode falhar se o tablespace for perdido.

Uma vez criado, um tablespace pode ser usado a partir de qualquer banco de dados, desde que o usuário solicitante tenha privilégio suficiente. Isso significa que um tablespace não pode ser excluído até que todos os objetos em todos os bancos de dados que o utilizam tenham sido removidos.

Banco de Dados

Ápice! Criação do banco de dados!

Embora não seja obrigatório, sempre informe o tablespace do seu banco de dados! Sejamos organizados desde o começo.

A sintaxe do PostgreSQL para criar bancos de dados é simples, mas eu destaco aqui três opções que eu gosto!

  • TEMPLATE: é possível criar um banco de dados seguindo uma determinada estrutura
  • CONNECTION LIMIT: quantidade máxima de conexões simultâneas no banco de dados. Cuidado com este parâmetro porque ele pode ocasionar erros se você especificá-lo de forma incorreta.
  • IS_TEMPLATE: indica se o banco de dados que está sendo criado é somente um template.
    Schemas

Assim como eu sempre associo um tablespace a um guarda roupas, associo os schemas às gavetas.

Eles são containers de objetos, e sendo assim, devem ser criados de forma responsável, para permitir a melhor governança dos dados.

Um banco de dados contém um ou mais schemas nomeados , que por sua vez contêm vários objetos. O mesmo nome de objeto pode ser usado em esquemas diferentes sem conflito; por exemplo, ambos schema1 e myschema podem conter tabelas nomeadas mytable.

Ao contrário dos bancos de dados, os esquemas não são rigidamente separados: um usuário pode acessar objetos em qualquer um dos esquemas no banco de dados ao qual eles estão conectados – se eles tiverem privilégios para isso.

Existem várias razões pelas quais alguém pode querer usar esquemas:

  • Permitir que muitos usuários usem um banco de dados sem o trabalho de um interferir no do outro.
  • Organizar objetos de banco de dados em grupos lógicos para torná-los mais gerenciáveis.
  • Os aplicativos de terceiros podem ser colocados em esquemas separados para que não colidam com os nomes de outros objetos.

Tabelas e colunas

Uma tabela é um objeto composto por linhas e colunas, onde os dados são armazenados. Para manter seu BD organizado, ao criar uma tabela, defina qual o schema dela.

As colunas que existem em uma tabela são nomeadas. Podem ter um valor default, podem ser obrigatórias ou não (null ou not null) e podem ser a primary key ou parte dela, e também ter valores únicos e um tipo de dados.

Índices

Pense em um livro. O índice serve para te ajudar a localizar de forma rápida uma determinada informação. Em uma tabela, índices são estruturas que organizam referências para a localização dos dados das tabelas. No PostgreSQL, uma coisa que eu acho bem bacana (e perigosa também), é a possibilidade de escolher o algoritmo que será usado para realizar a busca dos dados.

Views

Uma view é um comando. Ou seja, a view não é materializada fisicamente. Em vez disso, a consulta é executada toda vez que a view é referenciada.

Domínios

No meu mestrado, pesquisei muito sobre qualidade de dados, e nem preciso dizer que acho os domínios legais!

Um domínio é essencialmente um data type com restrições no conjunto de valores permitidos. Os domínios são úteis para abstrair restrições, que são comuns a várias colunas em um único local para manutenção.

Por exemplo, várias tabelas podem conter colunas de endereço de e-mail – todas exigindo a mesma restrição CHECK para verificar a sintaxe do endereço. Defina um domínio em vez de configurar a restrição de cada tabela individualmente.

Demo

Para acompanhar a criação de todos estes objetos confira o vídeo no meu canal.

Conclusão

No PostgreSQL temos alguns objetos que são extremamente importantes e foram apresentados neste artigos.

Desejo a todos uma excelente semana!

Referências