DevMedia
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
post favorito     comentários

Criando bancos de dados no PostgreSQL – Por dentro

Veja neste artigo como criar banco de dados no PostgreSQL e o que acontece "por dentro" quando criamos esse banco.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você poderia comentar o que não lhe agradou?

Confirmo meu voto negativo

 

Olá pessoal, no texto que segue vamos mostrar como criar um novo banco de dados no PostgreSQL e o que acontece "por dentro" quando criamos esse banco.

 

Só pra esclarecer, todas as referências a nome de arquivos e pastas nesse texto referem-se à versão 8.1, instalada em um ambiente Windows XP. Estou supondo que o servidor está funcionando e todas as variáveis de ambiente foram criadas corretamente.

 

Como a maioria dos softwares "livres", o PostgreSQL recebe contribuição de vários desenvolvedores ao redor do mundo. Muitas dessas contribuições são pequenos utilitários ".exe" que estão armazenados na pasta bin (pasta do PostgreSQL\8.1\bin). Um desses utilitários é o createdb. Ele é a primeira possibilidade que veremos para a criação de um novo banco no nosso servidor PostgreSQL.

 

A primeira coisa que precisamos saber sobre esse utilitário (e que também vale para a maior parte dos outros) é como acessar a ajuda. Para isso basta abrir o prompt de comando (cmd - telinha do DOS) e executar o seguinte comando: createdb –help


29-08-2007pic01.JPG 

 

A partir da execução do comando acima, será apresentada na tela (prompt) uma lista de parâmetros possíveis para a execução do comando.

 

O mais importante nesse momento (depois veremos os outros) é o parâmetro de conexão -U, que permite o acesso ao servidor de banco de dados. O "-U" nos permite informar qual é o usuário que se "logará" no servidor para a criação do novo banco, este usuário será o owner do banco.

 

Exemplo: createdb -U usuarioDoBanco nomeDoBancoNovo "Descrição do banco"

Nota: o usuário utilizado precisa ter permissão para a criação de bancos. Dependendo de como estiver configurado o seu arquivo hba.conf, pode ser necessário fornecer a senha para que o comando seja executado. Nesse caso o prompt exibirá a mensagem "senha:" ou "password:".

 

Executado o comando recebemos a mensagem de "CREATE DATABASE" como resposta

 

Quando executamos o comando acima, o que acontece na realidade é que o utilitário se conecta ao servidor, executa o comando CREATE DATABASE e depois se desconecta.

 

Bom, já que é isso que o utilitário (createdb) faz, então podemos fazer isso diretamente também, e essa é a segunda forma de criação do banco que veremos. Vamos criar um novo banco, agora utilizando o cliente psql.

 

Para nos "logarmos" no psql (aplicativo cliente para o servidor PostgreSQL - disponível na pasta "bin") executamos o comando:

 

psql -U usuarioDoBanco nomeDeUmBanco

Ex.: psql -U postgres template1

 

A nota acima relacionada à senha e o –help também valem para o psql. A ajuda dos comandos do psql pode ser obtida, após logado, através do comando “\?”.

 

Após logado no psql executamos o comando: \h create database - para obtermos a ajuda sobre o CREATE  DATABASE. Os parâmetros entre "[]" são opcionais. E o texto após "--" são os meus comentários.


29-08-2007pic02.JPG
 

CREATE DATABASE nome -- nome do banco de dados a ser criado.

    [ [ WITH ] [ OWNER [=] dono_bd ]  -- usuário do servidor que será o owner (dono) do banco, caso seja omitido será o usuário conectado.

           [ TEMPLATE [=] modelo ] -- banco de dados que será usado como modelo para a criação do novo banco

           [ ENCODING [=] codificação ] -- tipo de codificação dos dados que serão armazenados no banco

           [ TABLESPACE [=] tablespace ] ] -- tablespace onde o banco será criado fisicamente

           [ CONNECTION LIMIT [=] limite_con ] ]; -- número máximo de conexões simultâneas permitidas no banco

 

O ";" é o finalizador de comandos dentro do psql.

 

Note que os parâmetros que aparecem no comando createdb, com exceção dos de conexão, estão todos presentes no comando CREATE DATABASE.

 

A exemplo da execução do createdb, Ao executar o comando receberemos a mensagem de "CREATE DATABASE" como resposta.

 

Como as coisas funcionam por dentro:

 

A criação de um banco de dados no PostgreSQL é um pouco diferente dos outros SGBDs conhecidos. Quando criamos um novo banco o que estamos fazendo na realidade é uma cópia da estrutura de um outro banco. Isso pode ser verificado na tag template no comando acima. Na instalação do PostgreSQL ele traz dois bancos templates, template0 que é o banco "vazio", ou seja, com a estrutura mais básica e o template1 que traz consigo todas as opções que foram escolhidas no momento da instalação do PostgreSQL. Essa é uma funcionalidade bastante interessante quando temos bases de dados similares.  Por exemplo, imagine uma empresa de hospedagem, onde todos os seus clientes devem possuir uma tabela de log e algumas funções já predefinidas. Basta que seja criado (ou utilizado o template1) um banco com essa tabela e funções e que os outros bancos a serem criados tenham "template = bancoComTabelaLog", dessa forma todo banco já "nasce" tendo a estrutura da tabela log e as funções que serão comuns a todos os bancos.

 

Após criado o banco no PostgreSQL é inserida uma nova linha na tabela do sistema  pg_database com o datname = "seuBanco" e um oid associado a ele.

Veja: select datname, oid from pg_database;

Esse oid é o número de identificação do novo banco.

 

29-08-2007pic03.JPG
 

Os arquivos físicos do seu novo banco estarão armazenados em uma pasta identificada por esse numero (oid) dentro da pasta PostgreSQL\base (se você não alterou o tablespace default).


29-08-2007pic04.JPG 

 

Uma outra forma para a criação de um banco no PostgreSQL é utilizar a interface gráfica pgAdmin. Nesse caso, basta clicar no ícone de databases com o botão direito do mouse e selecionar a opção "new database" ou "novo banco de dados". Depois disso basta escolher ou preencher os campos do form e pronto...

 

Grande abraço e até a próxima, se Deus quiser.

 

A idéia principal desse artigo é mostrar como as coisas funcionam internamente na criação de um banco no PostgreSQL.

 

Grande abraço e até a próxima, se Deus quiser.

 



Hesley(hesleypy@gmail.com) é Pós-Graduado em Análise, Projeto e Gerência de Sistemas pela PUC-Rio, e atualmente está cursando o mestrado em Sistemas de Informação na Universidade Federal do Estado do Rio de Janeiro (UNIRIO). Atua [...]

O que você achou deste post?
Conhece a assinatura MVP?
Publicidade
Serviços

Mais posts