Conceitoseaplicaes

23
PostgreSQL Conceitos e Aplicações

Transcript of Conceitoseaplicaes

PostgreSQLConceitos e Aplicações

Agenda

História do PostgreSQL

Pontos Fortes

Pontos Fracos?

(algumas) Ferramentas

SQL e PL/pgSQL

Autenticação

Transação

Backup

Storage

Administração

Tunning

Ambiente OLTP

Ambiente BI

Ambiente WEB

Alta Disponibilidade

Segurança

Migração

Links

História do PostgreSQL• 1980 início do Ingres pela Berkeley e Computer Associates

• 1986 início do Postgres pela Berkeley

• 1987 primeira versão do Postgres

• 1989 liberação para usuários restritos da versão 1

• 1991 versão 3 com as principais funcionalidades atuais.

• 1993 versão 4.2, última lançada pela Berkeley

• 1994 Andrew Yu e Jolly Chen criaram a versão conhecida como

Postgre95 (versão 5) com interpretador para a linguagem SQL.

• 1997 nome do projeto muda para PostgreSQL, a versão 6 é lançada

• 2000 versão 7 lançada com suporte a Foreign Key

• 2005 versão 8 lançada com versão nativa (sem uso do CYGWIN) para

Windows, TABLESPACES, SAVEPOINTS, POINT-IN-TIME-RECOVERY.

etc.

Pontos Fortes

• Suporte não é exclusivo do fornecedor;

• Desenvolvimento ativo;

• Bugs são realmente conhecidos;

• Boa documentação;

• Bom suporte da comunidade;

• Conformidade total com ACID;

• Conformidade com SQL;

• Extensível ;

• Multi-plataforma;

Pontos Fracos?

• Não existe suporte corporativo oficial;

• Não existe certificação;

• Não existem boas ferramentas gráficas;

• Não é estável;

• Instável em Windows;

• Baixa performance (lento);

• Não tem uma campanha de marketing agressiva.

(algumas) Ferramentas

Ferramenta nativa:

• psql

Ferramentas gráficas de administração:

• pgADMIN III

• PHPpgADMIN

• TORA

• pgACCESS

Ferramentas de modelagem:

• Data Architect

• Erwin

• Case Studio

SQL e Pl/pgSQL

• Índices: btree, hash, rtree e gist, bitmap (8.2)‏

• Sequência

• Views (podem receber UPDATE, INSERT e UPDATE através de RULES)‏

• Domínios

• Esquemas (podem estar atrelados ou não aos usuários)‏

• Tipos de dados

• Funções

• Funções de agragação

• Funções de operadores

• Funções de conversão de caracteres

• Funções de conversão de tipo de dados

• Funções de utilização de índices

• Trigger, Constraint Trigger

AutenticaçãoTipos de autenticação:• local (usando socket UNIX)‏

• host (TCP/IP com ou sem SSL)‏

• hostssl (TCP/IP com SSL)‏

• hostnossl (TCP/IP sem SSL)‏

Métodos de autenticação:

• TRUST (aceita incondicionalmente)‏

• REJECT (rejeita incondicionalmente)‏

• md5

• crypt

• password (texto puro)‏

• Kerberos v4 e v5

• ident

• PAM

Transação• Possibilidade de usar modo auto-commited

• Uso de controle de multiversão (MMVC) permite acesso simultâneo de

leitura e escrita utilizando um snapshot separado

• Uso de isolamento Read Commited ou Serializable

• Possibilidade de utilizar Lock explícito do tipo Acces Share, Row Share,

Row Exclusive, Share Update Exclusive, Share, Share Row Exclusive,

Exclusive e Access Exclusive.

• Facilita a manutenção do sistema pois quando um domínio é alterado,

todos campos baseados nele são alterados automaticamente.

• Transação pode utilizar SAVEPOINT para retornar a transação até pontos

específicos.

BackupDump• Realiza dump consistente com o banco de dados on-line sem bloquear

usuários

• pg_dump gera dump em modo texto (em formato SQL), binário e

compactado por GZIP.

• Podem ser selecionados parte dos objetos na exportação ou importação

como permissões, dados, esquemas, etc.

• Um dump pode ser exportado ou compactado diretamente para outro

banco utilizando pipe!

• Objetos binários só podem ser exportados no modo binário.

BackupCópia do datafile• Só pode ser realizado com o banco off-line ou com snapshot (através do

SO) de todos tablespaces e log (WAL) simultaneamente.

Cópia do datafile + cópia de log (WAL)‏

• Permite a cópia dos datafiles com o banco de dados on-line sem o uso de

snapshot.

• Permite a recuperação uma data e hora específica ou até o a realização

de determinada transação.

• Permite o controle de históricos paralelos de recuperações até um ponto

específico.

• Necessita de espaço para arquivamento do WAL a partir da

realização da última cópia dos datafiles.

• Permite a criação de um Stand By em outro servidor.

Storage

• Uso de Table Spaces para tabelas e índices

• Cada Table Space define um diretório vazio onde o PostgreSQL cria

arquivos automaticamente. Estes diretórios são ligados por links simbólicos

• Área para catálogo do sistema e armazenamento temporário é definido

na criação do Cluster e não pode ser modificado

• Mecanismo TOAST gerencia o armazenamento de tabelas com mais de

1GB e colunas de comprimento variável.

• Colunas de tamanho variável podem ser comprimidas ou não e

armazenadas em arquivo separado da tabela ou não.

Administração

Vacuum• Recupera espaço em disco utilizado pelo MMVC

• Atualiza estatísticas utilizadas pelo planejador

• Estatísticas podem ser diferenciadas para colunas específicas de tabelas

• Previne reinicio no id de transações

• Pode ser executado com o Banco de Dados on-line com ajustes no

impacto de desempenho.

• Pode ser automatizado

AdministraçãoMonitoramento• Estatísticas e bloqueios no servidor são visíveis em tabelas do catálogo

ou através de funções.

• Quantidade de estatísticas coletadas pode ser alterada para todo o

servidor ou para seções específicas.

• Espaço em disco ocupado por tabelas e índices podem ser monitorados

através de tabelas do catálogo ou através da ferramenta oid2toname

Tunning

• Acesso ao código fonte permite otimização para casos especiais

• Compilação permite habilitar ou não características que afetam o

desempenho

• postgresql.conf possui vários parâmetros que controlam:• o uso de memória

• uso de recursos do sistema

• localização de arquivos

• conexão e autenticação

• uso do VACUUM

• escrita em segundo plano

• WAL e pontos de controle

• local, quantidade de informações e formato de log

• uso de índices, controle de custo, e otimizador genético

controle de coleta de estatísticas do servidor

• Parâmetros de postgresql.conf podem ser alterados reiniciando o servidor, ou podem ser

personalizados para um Banco de Dados, secção ou usuário específico.

Ambiente OLTP• MVCC;

• Tablespaces;

• Particionamento de tabelas (melhorias previstas para 8.5);

• Common Tables Expressions e recursividade;

• PL/Proxy (Cluster Shared Nothing)‏

• Gatilhos;

• PL/pgSQL, PL/Python, PL/Perl, PL/Tcl, ...

• Sequências;

• Suporte a Kerberos, LDAP, etc.

Ambiente BI• Índices parciais e com expressões (bitmap previsto para 8.5);

• Visões;

• Copy com suporte a CSV;

• Subconsultas;

• Windowing Functions;

• PGPool II;

• Visões Materializadas (previsto para 8.5)‏

Ambiente WEB• Pool de conexões com PGPool;

• XML;

• Suporte a localização e internacionalização;

• Suporte nativo a SSL;

• Full Text Search

Alta Disponibilidade• Point In Time Recovery;

• Warm Stand By (Hot Stand By previsto para 8.5);

• Hot Backup;

• Slony, PGPool, PGCluster, etc;

Segurança• pg_hba.conf;

• Configurações padrões são seguras;

• Dollar Quoting;

• MD5, SHA1;

• Várias opções para criar o usuário;

• Uso de visões, gatilhos e funções para limitar acesso a dados;

• SE PostgreSQL;

• Várias opções de logs;

Migração• Aderência ao padrão SQL;

• Existência de funções com sintaxe compatíveis;

• DBI-Link;

• Information Schema;

• ora2pg, my2pg, dbf2pg, etc.

Links•Site oficial: http://www.postgresql.org.br

• Documentação de todas versões

• Notícias de lançamentos

• Download do código fonte

• Listas de discussão

• Projetos relacionados: http://gborg.postgresql.org

• Outros projetos: http://pgfoundry.org/

• Diretório Contrib no código-fonte

Bem é isso pessoal!

Dúvidas, sugestões, correções são bem

vindas!

Leonardo Medeiros Martins

www.dbtn.com.br

[email protected]