Velho vs Novo: Abordagens no Gerenciamento de Esquemas PostgreSQL

A compreensão dos fundamentos do gerenciamento de esquemas é crucial para construir e manter um banco de dados PostgreSQL efetivo. Neste artigo, vamos olhar para a forma tradicional de gerenciar um esquema Postgres e para uma forma mais nova e eficaz de fazê-lo visualmente, sem ter que escrever qualquer linha de código.

O que é um esquema PostgreSQL?

Primeiro, para lançar as bases para o artigo, vamos limpar alguma terminologia. Em Postgres, o esquema também é referido como um namespace. O espaço de nomes pode ser associado a um nome de família. Ele é usado para identificar e diferenciar certos objetos na base de dados (tabelas, visões, colunas, etc.). Não é permitido criar duas tabelas com o mesmo nome em um esquema, mas você pode fazer isso em dois esquemas diferentes. Por exemplo, podemos ter duas tabelas com o mesmo nome, tanto a tabela1 presente em esquemas públicos como em esquemas postgres.

Porquê usar esquemas?

Esquemas são muito úteis para organizar os objectos da base de dados em grupos lógicos e evitar a colisão de nomes. Além disso, os esquemas são frequentemente usados para permitir que diferentes usuários trabalhem com a base de dados sem interferirem uns com os outros. Um exemplo comum é quando cada usuário do banco de dados trabalha em seu próprio esquema, sem interferir com outros usuários e evitando conflitos.

A forma clássica de gerenciar esquemas PostgreSQL

Todas as consultas abaixo serão executadas de dentro da shell do PostgreSQL.

Criando um esquema

Quando você cria um novo banco de dados no Postgres, o esquema padrão é público. Um novo esquema pode ser criado através da execução da próxima consulta:

> SQL

x

1

CREATE SCHEMA schema_1;

Antes de lhe adicionar algumas tabelas, Vou explicar dois conceitos importantes: nomes qualificados e não qualificados.

  • Um nome qualificado é o nome do esquema e o nome da tabela separados por um ponto. Isto irá especificar o esquema em que queremos criar a nossa tabela:

SQL

xxxxxxxxxx
1

1

CREATE TABLE schema_name.table_name (...);

  • Um nome não qualificado consiste apenas no nome da tabela. Isto irá criar a tabela no banco de dados selecionado, que é público por padrão. Isto pode ser alterado através do search_path, mas detalharemos isso mais tarde. Um exemplo de nomenclatura não-qualificada é:

SQL

xxxxxxxxxx
1

1

CREATE TABLE table_name (...);

As colunas das tabelas serão definidas dentro dos parênteses das consultas acima (…).

Para criar uma nova tabela no nosso novo esquema, vamos executar:

SQL

xxxxxxxxxx
1

1

CREATE TABLE schema_1.persons (name text, age int);

Para abandonar o esquema, temos duas possibilidades. Se o esquema estiver vazio (não contém nenhuma tabela, vista, ou outros objetos), podemos executar:

SQL

xxxxxxxxxx
1

1

DROP SCHEMA schema_1;

Se o esquema contiver objectos de base de dados, vamos inserir o comando em cascata:

SQL

xxxxxxxxxx
1

1

DROP SCHEMA schema_1 CASCADE;

No PostgreSQL também é possível criar um esquema de propriedade de outro usuário:

> SQL

xxxxxxxxxx
1

1

CREATE SCHEMA schema_name AUTHORIZATION username;

Caminho de Pesquisa

Ao executar um comando com um nome não-qualificado, Postgres segue um caminho de pesquisa para determinar que esquemas usar. Por padrão, o caminho de pesquisa é definido para o esquema público. Para visualizá-lo, execute:

> SQL

xxxxxxxxxx
1

1

SHOW search_path;

Se nada fosse alterado na sua base de dados, esta consulta deve trazer o próximo resultado:

SQL

xxxxxxxxxx
1

1

 search_path

2

--------------

3

 "$user",public

4


O caminho_de_pesquisa pode ser modificado para que o sistema escolha automaticamente outro esquema se você usar um nome não qualificado. O primeiro esquema no caminho de pesquisa é chamado esquema atual. Por exemplo, irei definir schema_1 como o esquema atual:

> SQL

xxxxxxxxxx
1

1

SET search_path TO schema_1,public;

A próxima consulta usará um nome não qualificado para criar uma tabela. Isto irá criá-la automaticamente no schema_1:

> SQL

xxxxxxxxxx
1

1

CREATE TABLE address (city text, street text, number int); 

O Novo Caminho: Manage Without The Code!

Existe uma maneira mais simples de fazer todas as tarefas de gestão de esquemas, sem ter de escrever qualquer linha de código. Usando o DbSchema você pode executar todas as consultas acima a partir de uma GUI intuitiva com apenas alguns cliques. A conexão com o banco de dados levará apenas alguns segundos. Desde o início, você pode selecionar em que esquema trabalhar.

O esquema ou esquemas selecionados serão projetados de forma reversa pelo DbSchema e mostrados no layout.

Para criar um novo esquema, basta clicar com o botão direito do mouse na pasta de esquemas no menu esquerdo e selecionar Create Schema.

Para criar uma nova tabela no esquema clique com o botão direito do mouse sobre o layout e selecione Create Table.

O esquema pode ser descartado clicando com o botão direito do mouse sobre o seu nome no menu da esquerda.

Para adicionar outro esquema do banco de dados, escolha Atualizar do banco de dados.

Usando o DbSchema, você não precisará usar a sintaxe show_path porque você pode criar as tabelas bem no layout. Um layout pode ser comparado a uma prancheta de desenho na qual você pode adicionar as tabelas e editá-las. Cada layout tem um esquema associado a ele, portanto se o usuário estiver no layout schema_1, as tabelas serão automaticamente criadas lá.

Work Offline

DbSchema armazena uma imagem local do esquema num ficheiro de projecto local. Isto significa que o arquivo do projeto pode ser aberto sem conectividade com banco de dados (offline). Enquanto estiver offline, você pode fazer todas as ações apresentadas acima e muito mais, mas sem dados. Após reconectar-se ao banco de dados, você pode comparar o arquivo do projeto com o banco de dados e escolher quais ações devem ser mantidas ou abandonadas.

A mesma coisa pode ser feita entre duas versões diferentes do mesmo arquivo de projeto. Por exemplo, se você trabalha em equipe, pode ser que existam múltiplos esquemas (produção, testes, desenvolvimento) cada um com seu próprio arquivo de projeto. Se aparecer uma modificação no desenvolvimento e se quiser implementá-la sobre os outros dois esquemas, basta comparar e sincronizar os dois arquivos de projeto.

Conclusion

A compreensão dos conceitos listados acima irá ajudá-lo a gerir facilmente os seus esquemas do PostgreSQL. Usar um designer visual como o DbSchema tornará seu trabalho ainda mais fácil, permitindo que você faça tudo visualmente, sem ter que escrever uma única linha de código.

Deixe uma resposta

O seu endereço de email não será publicado.