PostgreSQL Conceitos e aplicações - FSA

2,426 views

Published on

Palestra realizada em outubro de 2006 na Fundação Santo André sobre conceitos básicos de PostgreSQL

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,426
On SlideShare
0
From Embeds
0
Number of Embeds
22
Actions
Shares
0
Downloads
123
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

PostgreSQL Conceitos e aplicações - FSA

  1. 1. Fernando Ike Fábio Telles PostgreSQL Conceitos e aplicações
  2. 2. Agenda <ul><li>Conceitos e Aplicações </li></ul><ul><li>Histórico - Características - Ferramentas - Instalação - Objetos </li></ul><ul><li>Autenticação </li></ul><ul><li>Localização </li></ul><ul><li>Transações </li></ul><ul><li>Backup </li></ul><ul><li>Storage </li></ul><ul><li>Administração </li></ul><ul><li>Tunning </li></ul><ul><li>Comunidade </li></ul>
  3. 3. Histórico <ul><li>1980 inicio do Ingres pela Berkeley e Computer Associates </li></ul><ul><li>1986 inicio do Postgres pela Berkeley </li></ul><ul><li>1987 primeira versão do Postgres </li></ul><ul><li>1989 liberação para usuários restritos da versão 1 </li></ul><ul><li>1991 versão 3 com as principais funcionalidades atuais. </li></ul><ul><li>1993 versão 4.2, última lançada pela Berkeley </li></ul><ul><li>1994 Andrew Yu e Jolly Chen criaram a versão conhecida como Postgre95 (versão 5) com interpretador para a linguagem SQL. </li></ul><ul><li>1997 nome do projeto muda para PostgreSQL, a versão 6 é lançada </li></ul><ul><li>2000 versão 7 lançada com suporte a Foreign Key </li></ul><ul><li>2005 versão 8 lançada com versão nativa (sem uso do CYGWIN) para Windows, TABLESPACES, SAVEPOINTS, POINT-IN-TIME-RECOVERY. etc. </li></ul><ul><li>2005 em versão 8.1 – Commit Two Phases, Autovacuum, Roles </li></ul><ul><li>2006 em versão 8.2 – Novembro lançamento </li></ul>
  4. 4. Características <ul><li>Melhor suporte: independente do fornecedor </li></ul><ul><li>Baixo custo de manutenção e tunning </li></ul><ul><li>Alta estabilidade </li></ul><ul><li>Extensibilidade: pode ser customisado com funções, tipos ou através acesso ao código fonte. Extensões na pasta /contrib </li></ul><ul><li>Flexibilidade: roda em várias plataformas (inclusive BSD) </li></ul><ul><li>Robusto: criado para suportar grande volume de dados e transações concorrentes. </li></ul><ul><li>Controle de transações utilizando MVCC ou Locks explícitos </li></ul><ul><li>Compatível com ANSI SQL </li></ul><ul><li>Funções em SQL, C, C ++ , PLpg/SQL, PL/Perl, PL/Python, PL/TCL suportadas nativamente além de PL/Java, PL/PHP, PL/R, PL/Ruby, PL/sh, PL/Mono. </li></ul>
  5. 5. (algumas) Ferramentas <ul><li>Ferramenta nativa: </li></ul><ul><li>psql </li></ul><ul><li>Ferramentas gráficas de administração: </li></ul><ul><li>pgADMIN III </li></ul><ul><li>PHPpgADMIN </li></ul><ul><li>TORA </li></ul><ul><li>pgACCESS </li></ul><ul><li>Ferramentas de modelagem: </li></ul><ul><li>Data Architect </li></ul><ul><li>Erwin </li></ul><ul><li>Case Studio </li></ul>
  6. 6. Uso do psql <ul><li>Parâmetros ao invocar o psql: </li></ul><ul><li>-U <user> : usuário que se conectará ao banco </li></ul><ul><li>-h <host> : local onde o Banco de Dados se conectará </li></ul><ul><li>Comandos utilizados dentro do psql: </li></ul><ul><li>? ajuda para comandos do psql </li></ul><ul><li>h ajuda para sintaxe SQL </li></ul><ul><li>d lista objetos existentes </li></ul><ul><li>i executa arquivo SQL </li></ul><ul><li>l lista bancos de dados disponíveis </li></ul><ul><li>q sair </li></ul>
  7. 7. Instalação <ul><li>Adquirir código-fonte </li></ul><ul><li>Compilar (estabelece alguns parêmetros intrínsecos) </li></ul><ul><li>Criar usuário 'postgres' </li></ul><ul><li>Criar cluster (estabelece local padrão de dados, localização e codificação) </li></ul><ul><li>Iniciar o postmaster </li></ul><ul><li>Criar um banco de dados (estabelece variáveis de desempenho, localização e codificação) </li></ul><ul><li>Teste com psql </li></ul><ul><li>Configuração de path e inicialização </li></ul><ul><li>Configuração do controle de acesso </li></ul>
  8. 8. Objetos SQL <ul><li>Índices: btree, hash, rtree e gist, bitmap (8.2) </li></ul><ul><li>Sequencias </li></ul><ul><li>Views (podem receber UPDATE, INSERT e UPDATE através de RULES) </li></ul><ul><li>Domínios </li></ul><ul><li>Esquemas (podem estar atrelados ou não aos usuários) </li></ul><ul><li>Tipos de dados </li></ul><ul><li>Funções </li></ul><ul><li>Funções de agragação </li></ul><ul><li>Funções de operadores </li></ul><ul><li>Funções de conversão de caracteres </li></ul><ul><li>Funções de conversão de tipo de dados </li></ul><ul><li>Funções de utilização de índices </li></ul><ul><li>Trigger, Constraint Trigger </li></ul>
  9. 9. Autenticação <ul><li>Tipos de autenticação: </li></ul><ul><li>local (usando socket UNIX) </li></ul><ul><li>host (TCP/IP com ou sem SSL) </li></ul><ul><li>hostssl (TCP/IP com SSL) </li></ul><ul><li>hostnossl (TCP/IP sem SSL) </li></ul><ul><li>Métodos de autenticação: </li></ul><ul><li>TRUST (aceita incondicionalmente) </li></ul><ul><li>REJECT (rejeita incondicionalmente) </li></ul><ul><li>md5 </li></ul><ul><li>crypt </li></ul><ul><li>password (texto puro) </li></ul><ul><li>Kerberos v4 e v5 </li></ul><ul><li>ident </li></ul><ul><li>PAM </li></ul>
  10. 10. Localização <ul><li>Suporte a localização: </li></ul><ul><li>Ordenação de strings </li></ul><ul><li>Idioma de mensagens </li></ul><ul><li>Formatação de quantias monetárias </li></ul><ul><li>Formatação de números </li></ul><ul><li>Formatação de data e hora </li></ul><ul><li>Suporte a conjunto de caracteres: </li></ul><ul><li>Suporte a ASCII, ISO, EUC, MULE, UTF8 </li></ul><ul><li>Conversão automática de codificação no servidor e cliente. </li></ul>
  11. 11. Transações <ul><li>Possibilidade de usar modo auto-commited </li></ul><ul><li>Uso de controle de multiversão (MMVC) permite acesso simuntâneo de leitura e escrita utilizando um snapshot separado </li></ul><ul><li>Uso de isolamento Read Commited ou Serializable </li></ul><ul><li>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. </li></ul><ul><li>Facilita a manutenção do sistema pois quando um domínio é alterado, todos campos baseados nele são alterados autimáticamente. </li></ul><ul><li>Transação pode utilizar SAVEPOINT para retornar a trasação até pontos específicos. </li></ul>
  12. 12. Backup <ul><li>Dump </li></ul><ul><li>Realiza dump consistente com o banco de dados on-line sem bloquear usuários </li></ul><ul><li>pg_dump gera dump em modo texto (em formato SQL), binário e compactado por GZIP. </li></ul><ul><li>Podem ser selecionados parte dos objetos na exportação ou importação como permissões, dados, esquemas, etc. </li></ul><ul><li>um dump pode ser exportado ou compactado diretamente para outro banco utilizando pipe! </li></ul><ul><li>Objetos binários só podem ser exportados no modo binário. </li></ul>
  13. 13. Backup <ul><li>Cópia do datafile </li></ul><ul><li>Só pode ser realizado com o banco off-line ou com snapshot (através do SO) de todos tablespaces e log (WAL) simultaneamente. </li></ul><ul><li>Cópia do datafile + cópia de log (WAL) </li></ul><ul><li>Permite a cópia dos datafiles com o banco de dados on-line sem o uso de snapshot. </li></ul><ul><li>Permite a recuperação uma data e hora específica ou até o a realização de determinada transação. </li></ul><ul><li>Permite o controle de históricos paralelos de recuperações até um ponto específico. </li></ul><ul><li>Necessita de espaço para arquivamento do WAL a partir da realização da última cópia dos datafiles. </li></ul><ul><li>Permite a criação de um Stand By em outro servidor. </li></ul>
  14. 14. Storage <ul><li>Uso de Table Spaces para tabelas e índices </li></ul><ul><li>Cada Table Space define um diretório vazio onde o PostgreSQL cria arquivos automaticamente. Estes diretórios são ligados por links simbólicos </li></ul><ul><li>Área para catálogo do sistema e armazenamento temporário é definido na criação do Cluster e não pode ser modificado </li></ul><ul><li>Mecanismo TOAST gerencia o armazenamento de tabelas com mais de 1GB e colunas de comprimento variável. </li></ul><ul><li>Colunas de tamanho variável podem ser comprimidas ou não e armazenadas em arquivo separado da tabela ou não. </li></ul>
  15. 15. Storage <ul><li>Limites*: </li></ul><ul><li>Tamanho máximo do Banco de Dados: Ilimitado </li></ul><ul><li>Tamanho máximo de tabela: 32 TB </li></ul><ul><li>Tamanho máximo de linha: 1,6 TB </li></ul><ul><li>Tamanho máximo de campo: 1 GB </li></ul><ul><li>Número máximo de linhas por tabela: Ilimitado </li></ul><ul><li>Número máximo de colunas por tabela: 250 – 1600 (dependendo dos tipos de dados utilizados) </li></ul><ul><li>Número de índices por tabela: Ilimitado </li></ul><ul><li>* Estes valores podem variar devido a restrições do sistema operacional ou plataforma utilizada </li></ul>
  16. 16. Administração <ul><li>Vacuum: </li></ul><ul><li>Recupera espaço em disco utilizado pelo MMVC </li></ul><ul><li>Atualiza estatísticas utilizadas pelo planejador </li></ul><ul><li>Estatísticas podem ser diferenciadas para colunas específicas de tabelas </li></ul><ul><li>Previne reinicio no id de transações </li></ul><ul><li>Pode ser executado com o Banco de Dados on-line com ajustes no impacto de desempenho. </li></ul><ul><li>Pode ser automatizado </li></ul>
  17. 17. Administração <ul><li>Monitoramento: </li></ul><ul><li>Estatísticas e bloqueios no servidor são visíveis em tabelas do catálogo ou através de funções. </li></ul><ul><li>Quantidade de estatísticas coletadas pode ser alterada para todo o servidor ou para seções específicas. </li></ul><ul><li>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 </li></ul>
  18. 18. Tunning <ul><li>Acesso ao código fonte permite otimização para casos especiais </li></ul><ul><li>Compilação permite habilitar ou não caratcterísticas que afetam o desempenho </li></ul><ul><li>postgresql.conf possui vários parâmetros que controlam: </li></ul><ul><ul><li>o uso de memória </li></ul></ul><ul><ul><li>uso de recursos do sistema </li></ul></ul><ul><ul><li>localização de arquivos </li></ul></ul><ul><ul><li>conexão e autenticação </li></ul></ul><ul><ul><li>uso do VACUUM </li></ul></ul><ul><ul><li>escrita em segundo plano </li></ul></ul><ul><ul><li>WAL e pontos de controle </li></ul></ul><ul><ul><li>local, quantidade de informações e formato de log </li></ul></ul><ul><ul><li>uso de índices, controle de custo, e otimizador genético </li></ul></ul><ul><ul><li>controle de coleta de estatísticas do servidor </li></ul></ul><ul><ul><li>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. </li></ul></ul>
  19. 19. Comunidade <ul><li>Site oficial: http://www.postgresql.org </li></ul><ul><ul><li>Documentação de todas versões </li></ul></ul><ul><ul><li>Notícias de lançamentos </li></ul></ul><ul><ul><li>Dowload do código fonte </li></ul></ul><ul><ul><li>Listas de discussão </li></ul></ul><ul><ul><li>Projetos relacionados: http://gborg.postgresql.org </li></ul></ul><ul><ul><li>Outros projetos: http://pgfoundry.org/ </li></ul></ul><ul><ul><li>Certificação: http://osb.sra.co.jp/postgresql-ce/news_en.html </li></ul></ul><ul><ul><li>Diretório Contrib no código-fonte </li></ul></ul><ul><ul><li>Projetos em destaque: GiST, pg_pool, pg_cluster, xml, etc. </li></ul></ul><ul><ul><li>Site nacional: http://postgresql.org.br </li></ul></ul><ul><ul><li>Canais em irc.freenodes.net: </li></ul></ul><ul><ul><ul><li>#POSTGRESQL, #POSTGRESQL-BR </li></ul></ul></ul>

×