Instalação do PostgreSQL no Windows

O PostgreSQL é um gerenciador de banco de dados muito poderoso que está sendo cada vez mais usado em aplicações de negócios reais. Desde a versão 8, possui um porte nativo para Windows mantida com o MinGW. Talvez você queira instalar uma aplicação que dependa do PostgreSQL, ou queira desenvolver essas aplicações. Esse guia ajudará você a começar.

O software é distribuido como um arquivo zip que contém dois pacotes MSI. Você precisa extrai-los para um diretório de sua escolha e depois clicar duas vezes no arquivo postgresql-8.2-int.msi.

Notas especificas para Windows:

O PostgreSQL usa uma arquitetura orientada a processo similar ao Apache 1.3, onde cada requisição é manipulada por um processo independente. O porte nativo para Windows não usa a arquitetura orientada a thread preferencial. Por essa razão, pode-se esperar que a performance no Windows seja mais lenta, especialmente onde um grande número de pequenas consultas são executadas.

Além disso, nem todos os módulos disponibilizados pela comunidade podem estar incluidos. Criar uma solução personalizada mais complexa como vários add-ons pode ser bem dificil no Windows nesse momento.

Instalação

A instalação do software é bem direta. Alguns poucos passos de instalação merecem alguma discussão adicional, porém. Passadas algumas poucas telas da instalação é encontrada a seguinte tela que trata das opções da instalação:

Os componenetes que podem ser incluidos no servidor de banco de dados são:

  • Data Directory configura o diretório de dados de forma que esteja pronto para armazenar as informações
  • National Language fornece mensagens de erro e status em vários idiomas.
  • PostGIS Spacial Extensions fornece extensões especiais usadas para dados geográficos.
  • PL/Java é um manipulador que permite o servidor executar funções armazenadas escritas em Java. Requer uma JRE.
  • Slony-I é um sistema de replicação assincrona mestre-escravo.

Existem também várias interfaces administrativas e opções de desenvolvimento. Para o próposito desse artigo, deixaremos todos os valores no padrão. A próxima tela de interesse é chamada “Service configuration”:

Toda informação sobre contas referece as contas do sistema onde o servidor de banco de dados irá ser executado. Até a versão 8.2, o PostgreSQL não rodava com privilégios administrativos como uma precaução de segurança criada para limitar os danos causados por um incidente de segurança envolvendo o software. Apesar da execução com uma conta de provilégios elevados seja possivel hoje, é recomendavel executar o software com uma conta de usuário comum por isso ter sido melhor testado. Se a conta especificada não existe, o instalador se oferecerá para cria-la para você. A próxima tela é chamada “Initialize database cluster”:

É geralmente recomendado que você altere a codificação para UTF-8 a menos que tenha fortes razões para não fazê-lo. Essa mudança é altamente necessária se quiser armazenar dados em múltiplos conjuntos de caracteres em um servidor de banco de dados a qualquer momento. Porém, pode causar problemas se o cliente da aplicação não suportar Unicode. A última tela importante é a tela “Contrib Modules”:

Ela contém um grande número de extensões que podem ser instaladas nesse momento. Esses módulos são auxiliares e fogem do escopo desse artigo.

Notas para o Vista:

A instalação no Vista é similar ao processo acima, mas para instalar no Vista, você precisa desligar o Controle de contas de usuário primeiro.

Configuração

O PostgreSQL é originalmente uma aplicação UNIX e dessa forma o sistema de configuração é inteiramente baseado em arquivos de texto. Esses arquivos podem ser acessados pelo menu Iniciar -> Todos os Programas -> PostgreSQL 8.2 -> Configuration files.

Entendendo o arquivo postgresql.conf

O arquivo postgresql.conf contém os parâmetros de configuração principais do servidor. O arquivo é bem comentado e muitas diretivas devem deixadas de lado a menos que você saiba que precisa altera-las. Se um uso pesado for experado, deve ser ajustado os valores de max_connections e shared_buffers para níveis adequados. Porém, algumas configurações em geral merecem ser discutidas.

FSYNC

A diretiva fsync deve ser deixada de lado com exceção de algumas circunstâncias exóticas. Essa opção diz ao servidor para salvar o log de escrita (WAL – write-ahead log) no disco depois de cada transação. A idéia é que uma vez que os dados estiverem no disco, se o sistema travar ou a energia cair, os dados das tabelas podem ser recriadas a partir das entradas do log. Você deve ter em mente, porém, que muitos discos rígidos possuem caches que podem permitir a escrita de segmentos parciais do WAL no caso de um evento de falha. O desativamento do cache de escrita do drive dependerá de qual versão do Windows está sendo usada mas  geralmente pode ser feita na seção de propriedades do disco do gerenciados de dispositivos.

Autovacuum

O instalador do PostgreSQL ativa um recursos chamado “Autovacuum” que ajuda a preservar a performance quando os dados são atualizados. Esse recurso é necessário por que o PostgreSQL usa um sistema de concorrÊncia chamado MVCC (Multi Version Concurrency Control). No sistema, campos antigos são mantidos em caso de uma transação ser refeita (rolled back). Isso permite acelerar o processo de refatoramento, mas todos os dados  ficarão armazenados no banco de dados (visiveis ou não) até serem removidos por uma rotina “vacuum”. Esse processo varre a tabela, ajusta id´s de transações em dados visiveis do passado, e ajusta o mapeamento do espaço livre que não é mais válido e pode ser sobrescrito. A opção autovacuum permite deixar ao PostgreSQL o gerenciamento desse processo de forma que o administrador não tenha que fazer isso manualmente.

Entendendo o arquivo pg_hba.conf

O PostgreSQL tem a habilidade de usar fontes externas de autenticação como Kerberos e LDAP. A fonte de autenticação é determinada pelo sub-sistema de autenticação baseado no host e é configurado nesse arquivo. O arquivo é bem comentado e as opções relacionadas a autenticação externa estão além do escopo desse artigo. OS tipos de autenticação internas são:

  • “trust” permite que o usuário seja autenticado sem que as credenciais sejam checadas. Isso pode ser útil se a senha do super-usuário foi perdida, mas não recomendavel em um ambiente de produção.
  • “reject” rejeita o pedido do usuário sem checar qualquer informação de credenciais.
  • “password” pedi uma senha em texto aberto. Não é recomendavel para um ambiente de produção exceto onde as bibliotecas do cliente não suportem autenticação.
  • “crypt” usa a função crypt() para codiicar a senha. Não é recomendavel em ambiente de produção porque é incompativel com a maneira que as senhas são codificadas no servidor (obrigando assim o uso de texto aberto para armazena-las).
  • “md5” é o método de autenticação interna preferivel para o PostgreSQL. Também é o método padrão.

Cada entrada consiste de uma linha começando com “local,” “host,” “hostssl,” ou “hostnossl”. Essas palavras-chave descrevem o tipo de conexão. Conexões locais correspondem aos sockets UNIX e não são suportadas no Windows. As opções baseadas em um host referencem-se a conexões TCP/IP (com ou sem SSL). A primeira entrada relevante que coincida com a requisição de conexão determina qual método é usado para autenticar o usuário.

Finalmente, o arquivo pg_hba.conf padrão só permite conexões a partir do localhost, mesmo se o sistema estiver em um endereço externo. Se você quiser tornar seu banco de dados acessível a aplicações que rodam em outros sistemas, precisa adicionar um entrada baseada em host nesse arquivo com o endereço CIDR apropriado.

Conectando-se com o PgAdmin III

P PGAdmin III é uma interface gráfica para administração de base de dados PostgreSQL. Mesmo sendo um projeto separado, ele vem embutido com o pacote de instalação de PostgreSQL. Após iniciar a aplicação, você pode clicar duas vezes no servidor que deseja conectar-se. Será pedido uma senha se isso for necessário para o servidor. Depois de conectar-se, a tela deve ser parecida como a imagem abaixo:

A partir daqui existem dois caminhos para criar um banco de dados. O primeiro método é clicar com o botão diretio do mouse em “Database” e selecione “New Database”. A outra maneira é dar um clique único em “Database”. Depois, pode selecionar a opção “Create” no menu “Edit”.
A instalação padrão do PostgreSQL instala o Pl/Pgsql como uma das linguagens de desenvolvimento para as funções internas (stored procedures – SQL e C são as outras linguagens embutidas). Se, porém, você quiser instalar a linguagem em alguns banco de dados, pode pular essa opção durante o processo de instalação e criar a linguagem no banco de dados. Para fazer isso, primeiro expanda a lista de banco de dados clicando duas vezes nela. Depois clique no banco de desejado para expandi-lo. Em seguida clique com o botão direito do mouse em “Languages” e selecione “New Language”.

No campo “Name”, selecione “plpgsql”. O resto dos campos serão ativados. Clique em OK. Note que outras linguagens podem ser instaladas também mas normalmente elas necessitam de dependências externas.

Conclusões

Esse artigo fornece uma introdução ao uso do PostgreSQL no Windows. Mesmo não cobrindo muitos tópicos avançados relacionados a administração e uso do software, as informações apresentadas devem ser suficientes para colocar o software pra funcionar, assim como evitar alguns dos problemas mais comuns do desenvolvimento.

Traduzido de