ustify>

Capa SQl 33

Clique aqui para ler todos os artigos desta edição

PostgreSQL 8.2

O elefante em evolução

O ano de 2006 foi um ano atípico para o PostgreSQL: além de ele ter feito 10 anos de desenvolvimento (veja o quadro História do Elefante – Nota 1), ainda houve o lançamento da versão 8.2 com diversas melhorias de performance e facilidades para desenvolvedores e administradores de banco de dados. Da versão anterior para a atual, não existem grandes mudanças como da versão 7.4 para 8.0 ou 8.0 para 8.1, mas podemos afirmar que o conjunto dessas pequenas mudanças é a marca do 8.2. Dentre elas, podemos destacar:

-         O aumento de contribuições de empresas como a EnterpriseDB, empregando um dos líderes do projeto (Bruce Mojiam), além de manter uma versão modificada do PostgreSQL que promete compatibilidade com o banco de dados Oracle;

-         Índices Invertidos Genéricos (GIN) são usados geralmente para indexar dados semi-estruturados e documentos. No PostgreSQL, esse recurso pode usado em conjunto com o módulo Tsearh2 para buscas em texto (full text search);

-         Criação de índices online: agora é possível criar índices sem precisar travar a tabela para modo leitura, permitindo que ocorram transações na tabela de forma concorrente com a criação do índice;

-         Dtrace é ferramenta do sistema operacional Solaris usada para depurar códigos;

-         O PostgreSQL adicionou diversas sintaxes para recursos introduzidos na especificação do ANSI SQL 2003, incluindo: funções de agregações estatísticas, cláusula VALUE com múltiplas linhas, UPDATE RETURNING e agregação com múltiplas colunas.

 

No lançamento da 8.1, descrito na edição 29 da SQL Magazine, Diogo de Oliveira Biazus relata sobre os papéis, autovacuum integrado, mudanças no PL/PgPSQL, PgAdmin3 e Commit em duas fases. Essas foram as principais novidades do 8.1.

Neste artigo, serão apresentadas algumas das novas funcionalidades da versão 8.2 que poderão ajudar muito desenvolvedores e administradores de banco de dados. Veremos algumas delas, como: o postgresql.conf, autenticação LDAP, psql, TRUNCATE, to_char(), COPY TO, criação de índices online. Cada uma dessas novidades será descrita com maiores detalhes. Caso queira saber mais sobre a lista oficial de mudanças, acesse o endereço http://www.postgresql.org/about/press/presskit82.html.br onde encontrará uma tradução das notas de lançamento para o português.

 

Nota 1. História do Elefante

Em 1986, o Professor Michael Stonebraker liderou o projeto Postgres contando com patrocínio da DARPA (Defense Advanced Research Projects Agency), ARO (Army Research Office) e NSF (National Science Foundation). Até 1993, o Postgres estava com desenvolvimento na tutela da Universidade de Berkeley, sendo que 1994 Andrew Yu e Jolly Chen acrescentam o dialeto SQL ao Postgres, rebatizando essa versão de Postgres95.

Em 1996, já com o seu desenvolvimento nas mãos de voluntários no mundo, o Postgres95 muda o nome para PostgreSQL para refletir o relacionamento com o Postgres original mais o suporte ao SQL, também retomam a numeração original abandonando o 95. Em 1996 é lançada a versão 6 do PostgreSQL.

 

Banco de dados de exemplo

Para os testes das funções e novidades presentes no PostgreSQL, usaremos um pequeno banco de dados com duas tabelas (cadastro e cidades), contendo uma chave estrangeira e alguns dados. O script para geração do nosso exemplo está descrito na Listagem 1. Todos os exemplos foram executados com o psql (cliente em modo texto do PostgreSQL) e o banco de dados de exemplo chamado sqlmagazine. Este script pode ser usado em qualquer outro banco sem afetar a execução dos testes.

 

Listagem 1. Base de dados para o artigo.

-- Criando a tabela CIDADES

 

CREATE TABLE cidades                                                     

(

  cidade varchar NOT NULL,

  estado char(2) NOT NULL,

  CONSTRAINT cidades_pkey PRIMARY KEY (cidade, estado)    

);

 

-- Inserção de dados na tabela CIDADES

 

INSERT INTO cidades VALUES ('Salvador', 'BA');

INSERT INTO cidades VALUES ('Embu', 'SP');

INSERT INTO cidades VALUES ('Sao Paulo', 'SP');

INSERT INTO cidades VALUES ('Macae', 'RJ');

INSERT INTO cidades VALUES ('Recife', 'PE');

INSERT INTO cidades VALUES ('Camacari', 'BA');

INSERT INTO cidades VALUES ('Olinda', 'PE');

INSERT INTO cidades VALUES ('Curitiba', 'PR');

INSERT INTO cidades VALUES ('Vitoria da Conquista', 'BA');

 

-- Criando a tabela CADASTRO

 

CREATE TABLE cadastro                                                    

(

  id serial NOT NULL,

  nome varchar,

  email varchar,

  cidade varchar,

  estado char(2),

  CONSTRAINT cadastro_pkey PRIMARY KEY (id),

  CONSTRAINT cadastro_cidade_fkey FOREIGN KEY (cidade, estado)

      REFERENCES cidades (cidade, estado) MATCH SIMPLE

      ON UPDATE NO ACTION ON DELETE NO ACTION,

...
Quer ler esse conteúdo completo? Tenha acesso completo