1) O documento apresenta uma agenda sobre conceitos e aplicações do PostgreSQL, incluindo sua história, pontos fortes, ferramentas, SQL, autenticação, backup e recuperação, armazenamento, administração e tuning.
2) Os tópicos abordados incluem história, pontos fortes/fracos, ferramentas, SQL, autenticação, transações, backup, armazenamento, administração, tuning, ambientes OLTP, BI e WEB, alta disponibilidade, segurança e migração.
3) O documento é uma
2. Agenda
História do PostgreSQL Tunning
Pontos Fortes Ambiente OLTP
Pontos Fracos? Ambiente BI
(algumas) Ferramentas Ambiente WEB
SQL e PL/pgSQL Alta Disponibilidade
Autenticação Segurança
Transação Migração
Backup Links
Storage
Administração
3. 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.
4. 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;
5. 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.
6. (algumas) Ferramentas
Ferramenta nativa:
• psql
Ferramentas gráficas de administração:
• pgADMIN III
• PHPpgADMIN
• TORA
• pgACCESS
Ferramentas de modelagem:
• Data Architect
• Erwin
• Case Studio
7. 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
8. Autenticação
Tipos 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
9. 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.
10. Backup
Dump
• 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.
11. Backup
Có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.
12. 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.
13. 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
14. Administração
Monitoramento
• 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
15. 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.
16. 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.
17. 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)
18. Ambiente WEB
• Pool de conexões com PGPool;
• XML;
• Suporte a localização e internacionalização;
• Suporte nativo a SSL;
• Full Text Search
19. Alta Disponibilidade
• Point In Time Recovery;
• Warm Stand By (Hot Stand By previsto para 8.5);
• Hot Backup;
• Slony, PGPool, PGCluster, etc;
20. 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;
21. 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.
22. 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
23. Bem é isso pessoal!
Dúvidas, sugestões, correções são bem
vindas!
Leonardo Medeiros Martins
www.dbtn.com.br
leonardo@dbtn.com.br