PostgreSQL Conceitos e aplicações - FSA

download PostgreSQL  Conceitos e aplicações - FSA

If you can't read please download the document

description

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

Transcript of PostgreSQL Conceitos e aplicações - FSA

  • 1. Fernando Ike Fbio Telles PostgreSQLConceitos e aplicaes

2. Agenda

  • Conceitos e Aplicaes
  • Histrico - Caractersticas - Ferramentas - Instalao - Objetos
  • Autenticao
  • Localizao
  • Transaes
  • Backup
  • Storage
  • Administrao
  • Tunning
  • Comunidade

3. Histrico

  • 1980 inicio do Ingres pela Berkeley e Computer Associates
  • 1986 inicio do Postgres pela Berkeley
  • 1987 primeira verso do Postgres
  • 1989 liberao para usurios restritos da verso 1
  • 1991 verso 3com as principais funcionalidades atuais.
  • 1993 verso 4.2, ltima lanada pela Berkeley
  • 1994 Andrew Yu e Jolly Chen criaram a verso conhecida como Postgre95 (verso 5) com interpretador para a linguagem SQL.
  • 1997 nome do projeto muda para PostgreSQL, a verso 6 lanada
  • 2000 verso 7 lanada com suporte a Foreign Key
  • 2005 verso 8 lanada com verso nativa (sem uso do CYGWIN) para Windows, TABLESPACES, SAVEPOINTS, POINT-IN-TIME-RECOVERY. etc.
  • 2005 em verso 8.1 Commit Two Phases, Autovacuum, Roles
  • 2006 em verso 8.2 Novembro lanamento

4. Caractersticas

  • Melhor suporte: independente do fornecedor
  • Baixo custo de manuteno e tunning
  • Alta estabilidade
  • Extensibilidade: pode ser customisado com funes, tipos ou atravs acesso ao cdigo fonte. Extenses na pasta /contrib
  • Flexibilidade: roda em vrias plataformas (inclusive BSD)
  • Robusto: criado para suportar grande volume de dados e transaes concorrentes.
  • Controle de transaes utilizando MVCC ou Locks explcitos
  • Compatvel com ANSI SQL
  • Funes em SQL, C, C ++ , PLpg/SQL, PL/Perl, PL/Python, PL/TCL suportadas nativamente alm dePL/Java, PL/PHP, PL/R, PL/Ruby, PL/sh, PL/Mono.

5. (algumas) Ferramentas

  • Ferramenta nativa:
  • psql
  • Ferramentas grficas de administrao:
  • pgADMIN III
  • PHPpgADMIN
  • TORA
  • pgACCESS
  • Ferramentas de modelagem:
  • Data Architect
  • Erwin
  • Case Studio

6. Uso do psql

  • Parmetros ao invocar o psql:
  • -U : usurio que se conectar ao banco
  • -h : local onde o Banco de Dados se conectar
  • Comandos utilizados dentro do psql:
  • ? ajuda para comandos do psql
  • h ajuda para sintaxe SQL
  • d lista objetos existentes
  • i executa arquivo SQL
  • l lista bancos de dados disponveis
  • q sair

7. Instalao

  • Adquirir cdigo-fonte
  • Compilar (estabelece alguns parmetros intrnsecos)
  • Criar usurio 'postgres'
  • Criar cluster (estabelece local padro de dados, localizao e codificao)
  • Iniciar o postmaster
  • Criar um banco de dados (estabelece variveis de desempenho, localizao e codificao)
  • Teste com psql
  • Configurao de path e inicializao
  • Configurao do controle de acesso

8. Objetos SQL

  • ndices: btree, hash, rtree e gist, bitmap (8.2)
  • Sequencias
  • Views (podem receber UPDATE, INSERT e UPDATE atravs de RULES)
  • Domnios
  • Esquemas (podem estar atrelados ou no aos usurios)
  • Tipos de dados
  • Funes
  • Funes de agragao
  • Funes de operadores
  • Funes de converso de caracteres
  • Funes de converso de tipo de dados
  • Funes de utilizao de ndices
  • Trigger, Constraint Trigger

9. Autenticao

  • Tipos de autenticao:
  • local (usando socket UNIX)
  • host (TCP/IP com ou sem SSL)
  • hostssl (TCP/IP com SSL)
  • hostnossl (TCP/IP sem SSL)
  • Mtodos de autenticao:
  • TRUST (aceita incondicionalmente)
  • REJECT (rejeita incondicionalmente)
  • md5
  • crypt
  • password (texto puro)
  • Kerberos v4 e v5
  • ident
  • PAM

10. Localizao

  • Suporte a localizao:
  • Ordenao de strings
  • Idioma de mensagens
  • Formatao de quantias monetrias
  • Formatao de nmeros
  • Formatao de data e hora
  • Suporte a conjunto de caracteres:
  • Suporte a ASCII, ISO, EUC, MULE, UTF8
  • Converso automtica de codificao no servidor e cliente.

11. Transaes

  • Possibilidade de usar modo auto-commited
  • Uso de controle de multiverso (MMVC) permite acesso simuntneo de leitura e escrita utilizando um snapshot separado
  • Uso de isolamentoRead CommitedouSerializable
  • Possibilidade de utilizarLockexplcito do tipo Acces Share, Row Share, Row Exclusive, Share Update Exclusive, Share, Share Row Exclusive, Exclusive e Access Exclusive.
  • Facilita a manuteno do sistema pois quando um domnio alterado, todos campos baseados nele so alterados autimticamente.
  • Transao pode utilizar SAVEPOINT para retornar a trasao at pontos especficos.

12. Backup

  • Dump
  • Realiza dump consistente com o banco de dados on-line sem bloquear usurios
  • pg_dump gera dump em modo texto (em formato SQL), binrio e compactado por GZIP.
  • Podem ser selecionados parte dos objetos na exportao ou importao como permisses, dados, esquemas, etc.
  • um dump pode ser exportado ou compactado diretamente para outro banco utilizando pipe!
  • Objetos binrios s podem ser exportados no modo binrio.

13. Backup

  • Cpia do datafile
  • S pode ser realizado com o banco off-line ou com snapshot (atravs do SO) de todos tablespaces e log (WAL) simultaneamente.
  • Cpia do datafile + cpia de log (WAL)
  • Permite a cpia dos datafiles com o banco de dados on-line sem o uso de snapshot.
  • Permite a recuperao uma data e hora especfica ou at o a realizao de determinada transao.
  • Permite o controle de histricos paralelos de recuperaes at um ponto especfico.
  • Necessita de espao para arquivamento do WAL a partir da realizao da ltima cpia dos datafiles.
  • Permite a criao de um Stand By em outro servidor.

14. Storage

  • Uso de Table Spaces para tabelas e ndices
  • Cada Table Space define um diretrio vazio onde o PostgreSQL cria arquivos automaticamente. Estes diretrios so ligados por links simblicos
  • rea para catlogo do sistema e armazenamento temporrio definido na criao do Cluster e no pode ser modificado
  • Mecanismo TOAST gerencia o armazenamento de tabelas com mais de 1GB e colunas de comprimento varivel.
  • Colunas de tamanho varivel podem ser comprimidas ou no e armazenadas em arquivo separado da tabela ou no.

15. Storage

  • Limites*:
  • Tamanho mximo do Banco de Dados: Ilimitado
  • Tamanho mximo de tabela: 32 TB
  • Tamanho mximo de linha: 1,6 TB
  • Tamanho mximo de campo: 1 GB
  • Nmero mximo de linhas por tabela: Ilimitado
  • Nmero mximo de colunas por tabela: 250 1600 (dependendo dos tipos de dados utilizados)
  • Nmero de ndices por tabela: Ilimitado
  • * Estes valores podem variar devido a restries do sistema operacional ou plataforma utilizada

16. Administrao

  • Vacuum:
  • Recupera espao em disco utilizado pelo MMVC
  • Atualiza estatsticas utilizadas pelo planejador
  • Estatsticas podem ser diferenciadas para colunas especficas de tabelas
  • Previne reinicio no id de transaes
  • Pode ser executado com o Banco de Dados on-line com ajustes no impacto de desempenho.
  • Pode ser automatizado

17. Administrao

  • Monitoramento:
  • Estatsticas e bloqueios no servidor so visveis em tabelas do catlogo ou atravs de funes.
  • Quantidade de estatsticas coletadas pode ser alterada para todo o servidor ou para sees especficas.
  • Espao em disco ocupado por tabelas e ndices podem ser monitorados atravs de tabelas do catlogo ou atravs da ferramenta oid2toname

18. Tunning

  • Acesso ao cdigo fonte permite otimizao para casos especiais
  • Compilao permite habilitar ou no caratctersticas que afetam o desempenho
  • postgresql.conf possui vrios parmetros que controlam:
    • o uso de memria
    • uso de recursos do sistema
    • localizao de arquivos
    • conexo e autenticao
    • uso do VACUUM
    • escrita em segundo plano
    • WAL e pontos de controle
    • local, quantidade de informaes e formato de log
    • uso de ndices, controle de custo, e otimizador gentico
    • controle de coleta de estatsticas do servidor
    • Parmetros de postgresql.conf podem ser alterados reiniciando o servidor, ou podem ser personalizados para um Banco de Dados, seco ou usurio especfico.

19. Comunidade

  • Site oficial:http://www.postgresql.org
    • Documentao de todas verses
    • Notcias de lanamentos
    • Dowload do cdigo fonte
    • Listas de discusso
    • Projetos relacionados:http://gborg.postgresql.org
    • Outros projetos:http://pgfoundry.org/
    • Certificao: http://osb.sra.co.jp/postgresql-ce/news_en.html
    • Diretrio Contrib no cdigo-fonte
    • Projetos em destaque: GiST, pg_pool, pg_cluster, xml, etc.
    • Site nacional: http://postgresql.org.br
    • Canais em irc.freenodes.net:
      • #POSTGRESQL, #POSTGRESQL-BR