Fernando Ike Fábio Telles PostgreSQL Conceitos e aplicações
Agenda Conceitos e Aplicações Histórico - Características - Ferramentas - Instalação - Objetos Autenticação Localização Transações Backup Storage Administração Tunning Comunidade
Histórico 1980 inicio do Ingres pela Berkeley e Computer Associates 1986 inicio 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. 2005 em versão 8.1 – Commit Two Phases, Autovacuum, Roles 2006 em versão 8.2 – Novembro lançamento
Características Melhor suporte: independente do fornecedor Baixo custo de manutenção e tunning Alta estabilidade Extensibilidade: pode ser customisado com funções, tipos ou através acesso ao código fonte. Extensões na pasta /contrib Flexibilidade: roda em várias plataformas (inclusive BSD) Robusto: criado para suportar grande volume de dados e transações concorrentes. Controle de transações utilizando MVCC ou Locks explícitos Compatível com ANSI SQL 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.
(algumas) Ferramentas Ferramenta nativa: psql Ferramentas gráficas de administração: pgADMIN III PHPpgADMIN TORA pgACCESS Ferramentas de modelagem: Data Architect Erwin Case Studio
Uso do psql Parâmetros ao invocar o psql: -U <user> : usuário que se conectará ao banco -h <host> : 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 disponíveis \q sair
Instalação Adquirir código-fonte Compilar (estabelece alguns parêmetros intrínsecos) Criar usuário 'postgres' Criar cluster (estabelece local padrão de dados, localização e codificação) Iniciar o postmaster Criar um banco de dados (estabelece variáveis de desempenho, localização e codificação) Teste com psql Configuração de path e inicialização Configuração do controle de acesso
Objetos SQL Índices: btree, hash, rtree e gist, bitmap (8.2) Sequencias 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çã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
Localização Suporte a localização: Ordenação de strings Idioma de mensagens Formatação de quantias monetárias Formatação de números Formatação de data e hora Suporte a conjunto de caracteres: Suporte a ASCII, ISO, EUC, MULE, UTF8 Conversão automática de codificação no servidor e cliente.
Transações Possibilidade de usar modo auto-commited Uso de controle de multiversão (MMVC) permite acesso simuntâ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 autimáticamente. Transação pode utilizar SAVEPOINT para retornar a trasação até pontos específicos.
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.
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.
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.
Storage Limites*: Tamanho máximo do Banco de Dados: Ilimitado Tamanho máximo de tabela: 32 TB Tamanho máximo de linha: 1,6 TB Tamanho máximo de campo: 1 GB Número máximo de linhas por tabela: Ilimitado Número máximo de colunas por tabela: 250 – 1600 (dependendo dos tipos de dados utilizados) Número de índices por tabela: Ilimitado * Estes valores podem variar devido a restrições do sistema operacional ou plataforma utilizada
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çã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
Tunning Acesso ao código fonte permite otimização para casos especiais Compilação permite habilitar ou não caratcterí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.
Comunidade Site oficial: http://www.postgresql.org Documentação de todas versões Notícias de lançamentos Dowload do código fonte Listas de discussão Projetos relacionados: http://gborg.postgresql.org Outros projetos: http://pgfoundry.org/ Certificação: http://osb.sra.co.jp/postgresql-ce/news_en.html Diretório Contrib no código-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

PostgreSQL Conceitos e aplicações - FSA

  • 1.
    Fernando Ike FábioTelles PostgreSQL Conceitos e aplicações
  • 2.
    Agenda Conceitos e Aplicações Histórico - Características - Ferramentas - Instalação - Objetos Autenticação Localização Transações Backup Storage Administração Tunning Comunidade
  • 3.
    Histórico 1980 iniciodo Ingres pela Berkeley e Computer Associates 1986 inicio 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. 2005 em versão 8.1 – Commit Two Phases, Autovacuum, Roles 2006 em versão 8.2 – Novembro lançamento
  • 4.
    Características Melhor suporte: independente do fornecedor Baixo custo de manutenção e tunning Alta estabilidade Extensibilidade: pode ser customisado com funções, tipos ou através acesso ao código fonte. Extensões na pasta /contrib Flexibilidade: roda em várias plataformas (inclusive BSD) Robusto: criado para suportar grande volume de dados e transações concorrentes. Controle de transações utilizando MVCC ou Locks explícitos Compatível com ANSI SQL 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.
  • 5.
    (algumas) Ferramentas Ferramentanativa: psql Ferramentas gráficas de administração: pgADMIN III PHPpgADMIN TORA pgACCESS Ferramentas de modelagem: Data Architect Erwin Case Studio
  • 6.
    Uso do psqlParâmetros ao invocar o psql: -U <user> : usuário que se conectará ao banco -h <host> : 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 disponíveis \q sair
  • 7.
    Instalação Adquirir código-fonte Compilar (estabelece alguns parêmetros intrínsecos) Criar usuário 'postgres' Criar cluster (estabelece local padrão de dados, localização e codificação) Iniciar o postmaster Criar um banco de dados (estabelece variáveis de desempenho, localização e codificação) Teste com psql Configuração de path e inicialização Configuração do controle de acesso
  • 8.
    Objetos SQL Índices:btree, hash, rtree e gist, bitmap (8.2) Sequencias 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
  • 9.
    Autenticação Tipos deautenticaçã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
  • 10.
    Localização Suporte alocalização: Ordenação de strings Idioma de mensagens Formatação de quantias monetárias Formatação de números Formatação de data e hora Suporte a conjunto de caracteres: Suporte a ASCII, ISO, EUC, MULE, UTF8 Conversão automática de codificação no servidor e cliente.
  • 11.
    Transações Possibilidade deusar modo auto-commited Uso de controle de multiversão (MMVC) permite acesso simuntâ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 autimáticamente. Transação pode utilizar SAVEPOINT para retornar a trasação até pontos específicos.
  • 12.
    Backup Dump Realizadump 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.
  • 13.
    Backup Cópia dodatafile 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.
  • 14.
    Storage Uso deTable 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.
  • 15.
    Storage Limites*: Tamanhomáximo do Banco de Dados: Ilimitado Tamanho máximo de tabela: 32 TB Tamanho máximo de linha: 1,6 TB Tamanho máximo de campo: 1 GB Número máximo de linhas por tabela: Ilimitado Número máximo de colunas por tabela: 250 – 1600 (dependendo dos tipos de dados utilizados) Número de índices por tabela: Ilimitado * Estes valores podem variar devido a restrições do sistema operacional ou plataforma utilizada
  • 16.
    Administração Vacuum: Recuperaespaç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
  • 17.
    Administração Monitoramento: Estatísticase 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
  • 18.
    Tunning Acesso aocódigo fonte permite otimização para casos especiais Compilação permite habilitar ou não caratcterí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.
  • 19.
    Comunidade Site oficial: http://www.postgresql.org Documentação de todas versões Notícias de lançamentos Dowload do código fonte Listas de discussão Projetos relacionados: http://gborg.postgresql.org Outros projetos: http://pgfoundry.org/ Certificação: http://osb.sra.co.jp/postgresql-ce/news_en.html Diretório Contrib no código-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