SlideShare uma empresa Scribd logo
Fernando Ike Fábio Telles PostgreSQL  Conceitos e aplicações 29 de Outubro de 2005 http://www.mhowto.com.br/database/
Agenda   Conceitos e Aplicações  Migrando para PostgreSQL Histórico - Boas práticas - Características - Antes de migrar - Ferramentas - Durante a migração - Instalação - SQL - Objetos - PL Autenticação - Storage Localização - Backup Transações - Segurança Backup - ora2pg Storage - Contatos 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 beta 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.
(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  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 menssagens 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 permiçõ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
Fernando Ike Fábio Telles Migrando de Oracle para PostgreSQL 29 de Outubro de 2005 http://www.mhowto.com.br/database/
Boas práticas Evitar utilizar extenções específicas de um SGBD Utilizar ao máximo a sintaxe padrão ANSI SQL Evite o uso de mixed case (notação Húngara), use minúsculas para nomes de objetos e maiúsculas para palavras reservadas. Documentar rigorosamente todo o código armazenado no banco Utilizar tipos de dados binários somente quando necessário
Antes de migrar Leia atentamente toda a documentação dos dois SGBDs e identifique diferenças na sintaxe e funcionalidades utilizadas  Realizar Backup total antes de realizar qualquer teste Realizar testes em um servidor de teste. Verificar codificação de caracteres e localização. Verificar espaço em disco disponível, o espaço ocupado pelo banco pode variar de SGBD para SGBD.
Registre todo o processo.  Migre primeiros sistemas não críticos Migre primeiro o que é mais simples como tabelas e índices Se possível,  gere scripts em texto puro com todo DDL e DML Importe tabelas, dados e constraints separadamante Habilitar e checar logs durante exportações e importações. Migre primeiro o que é mais simples como tabelas e índices Homologue cada etapa antes de prosseguir. Durante a migração
Diferenças no SQL ORACLE > PostgreSQL Tipos de dados VARCHAR2  > VARCHAR NUMBER > NUMERIC JOIN FROM t1, t2 > FROM t1 LEFT OUTER JOIN t2 WHERE t1.id = t2.id(+)    ON t1.id = t2.id Funções: DECODE (sexo, 'M',  > CASE WHEN sexo = 'M' then 'Masculino' 'Masculino,'F','Feminino')   WHEN sexo = 'F' then 'Feminino' END NVL > COALESCE sysdate, systimestamp > current_date, current_timestamp UNION MINUS > EXCEPT Clausula LIMIT e OFSET: ROWNUM, ROWID > LIMIT, OFSET, OID
SQL Catálogo de sistema SYS e SYSTEM  do Oracle são equivalentes ao pg_catalog e inoformation_schema no PostgreSQL PostgreSQL é sensitive case. Todos nomes de objetos com letras maiúsculas devem estar entre aspas. O PostgreSQL não necessita do uso da tabela DUAL. Pode ser criada uma para manter a compatibilidade Implementação de hierarquia entre tabelas, XML, Database Link e outras funções avançadas possuem diferenças O PostgreSQL não possui  visões materializadas. No entanto é possível contornar este problema com gatilhos e funções
PL/SQL X PLpg/SQL Não existem procedures no PostgreSQL, no entanto uma função pode ser utilizada retornando o tipo VOID. Não existem valores DEFAULT para parâmetos recebidos no PL/SQL, no entanto é possível utilizar sobrecarga de funções. O PostgreSQL não tem suporte aos parâmetros IN e OUT, somente IN* Não existem Packages no PostgreSQL, no entanto os objetos podem ser organizados num esquema separado. Variáveis de nivel de pacote podem ser armazenadas em tabelas temporárias mantidas durante a sessão. Cursores não são necessários no PostgreSQL. A consulta deve ser declarada junto a clausula FOR do laço. O corpo da função deve estar marcas de dólar no PostgreSQL Os gatilhos no PostgreSQL chamam uma e apenas uma função, não havendo código em seu corpo. * Este problema foi resolvido na versão 8.1 que se encontra no beta 4
Storage O conceito de Espaço de Tabelas no PostgreSQL se refere a uma pasta que é gerenciada pelo SGBD. Não é possível definir datafiles específicos. A única influência sobre os datafiles é especificar o formato de armazinamento nas colunas com valores grandes. O PostgreSQL não tem implementado explicitamente o conceito de extenções e segmentos. Ainda não é possível especificar o local de armazenamento separado para área temporária para áreas temporárias (para operações de rollback, ordenação, indexação, etc). Estas áreas ficam todas no mesmo local que o catálogo do sistema.
Backup Conceito de Redo no Oracle é semelhante ao conceito de WAL no PostgreSQL Conceito de DUMP é semelhante em ambos. DUMP no PostgreSQL permite redirecionamento via pipe.  Conceito de cópia de arquivos de dados é semelhante em ambos. Conceito de Stand By é semelhante em ambos. O PostgreSQL não possui uma ferramenta de flash back. O PostgreSQL não possui ferramenta natica no estilo do RMAN
Segurança Conceito de ROLE no Oracle é semelhante ao conceito de GROUP no PostgreSQL. Um GROUP não pode ser usado para se conectar, apenas para agrupar permissões de usuários* GRANT e REVOKE tem funcionalidade semelhante SCHEMAS não são automaticamente atrelados ao usuário no PostgreSQL. Eles precisam ser criados manualmente. Depois disso se comporta de maneira parecida. No entanto um esquema pode possuir objetos de outro dono se ele tiver as permissões necessárias para isso. O ROLE “connect” no Oracle é realizado através do pg_hba.conf no PostgreSQL O ROLE “resource” no Oracle é semelhante a possuir privilégio para criar objetos num esquema do PostgreSQL. O Role DBA é no Oracle é semelhante ao superusuário do PostgreSQL O Role SYS é no Oracle é semelhante ao usuário POSTGRES no PostgreSQL * Os GROUPs serão convertidos ROLEs com as mesmas funcionalidades na versão 8.1
ora2pg Feito em PERL. Depende dos módulos DBI, DBD::Pg e DBD::Oracle Importa dados e definições do Oracle para um arquivo texto ou direto para um banco no PostgreSQL Suporte a extração de DDL de tabelas, indices, constraints, views, triggers, procedures, functions, packages e grants. Dados podem ser exportados no formato INSERT ou COPY. Pode ser selecionado um esquema ou tabela específico para ser importado.  Corrige nomes de tipos de dados diferentes. Extrai o código do corpo de triggers numa função. Algumas funções com nome diferente precisam  Funções em PL/SQL geralmente precisam de um pouco de edição manual. Funções SQL diferentes precisam de edição manual.

Mais conteúdo relacionado

PDF
PostgreSQL: Conceitos e aplicações
PDF
PostgreSQL: O melhor banco de dados Universo
ODP
PostgreSQL Conceitos e aplicações - FSA
PPTX
Introdução ao BD Postgre
ODP
Postgre S Q L Apresentacao U F C
PDF
Minicurso PostgreSQl
PDF
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PPTX
Postgre sql
PostgreSQL: Conceitos e aplicações
PostgreSQL: O melhor banco de dados Universo
PostgreSQL Conceitos e aplicações - FSA
Introdução ao BD Postgre
Postgre S Q L Apresentacao U F C
Minicurso PostgreSQl
PostgreSQL Tuning: O elefante mais rápido que um leopardo
Postgre sql

Mais procurados (20)

PDF
Bancos de dados open source
PDF
Minicurso PostgreSQL
PDF
Gerenciamento de Backups PostgreSQL com pgbarman
PDF
Conceitoseaplicaes
PDF
PostgreSQL: Performance Tuning
PDF
PostgreSQL - Visão Geral - Pedro Vieira
PDF
Alta disponibilidade com PostgreSQL
PDF
Design Patterns para Tuning Pentaho com Ctools
PPT
Mysql for IBMers
PPTX
PostgreSQL
PDF
Oracle 11g – Inteligência em Banco de Dados
ODP
Replicação PostgreSQL com RepManager
ODP
PGAnalytics - Facilitando sua vida do DBA
PDF
Oracle 18c Instalação Grid Infrastructure & Database
PPT
PostgreSQL
PDF
Por que PostgreSQL?
PPTX
PDF
Treinamento Data Guard
PDF
Novidades da versão 9.0 do PostgreSQL
PDF
GUO-RS - Junho/2005 - ASM 10g
Bancos de dados open source
Minicurso PostgreSQL
Gerenciamento de Backups PostgreSQL com pgbarman
Conceitoseaplicaes
PostgreSQL: Performance Tuning
PostgreSQL - Visão Geral - Pedro Vieira
Alta disponibilidade com PostgreSQL
Design Patterns para Tuning Pentaho com Ctools
Mysql for IBMers
PostgreSQL
Oracle 11g – Inteligência em Banco de Dados
Replicação PostgreSQL com RepManager
PGAnalytics - Facilitando sua vida do DBA
Oracle 18c Instalação Grid Infrastructure & Database
PostgreSQL
Por que PostgreSQL?
Treinamento Data Guard
Novidades da versão 9.0 do PostgreSQL
GUO-RS - Junho/2005 - ASM 10g
Anúncio

Destaque (9)

PDF
Database Class - Pontos de defasagem e questões de brinde.
PPT
Cluster e replicação em banco de dados
ODP
Migração de Oracle para PostgreSQL - FISL
PDF
Replicação de dados
PDF
Escalabilidade, as modas, (No)SQL
PPTX
Sistemas Distribuídos - Replicação de Banco de Dados
PPTX
DER - Diagrama de Entidade e Relacionamentos
PDF
Banco de dados exercícios resolvidos
PPTX
Treinamento Oracle Forms
Database Class - Pontos de defasagem e questões de brinde.
Cluster e replicação em banco de dados
Migração de Oracle para PostgreSQL - FISL
Replicação de dados
Escalabilidade, as modas, (No)SQL
Sistemas Distribuídos - Replicação de Banco de Dados
DER - Diagrama de Entidade e Relacionamentos
Banco de dados exercícios resolvidos
Treinamento Oracle Forms
Anúncio

Semelhante a PostgreSQL Conceitos e aplicações (20)

PDF
PostgreSQL-Prático.pdf
PDF
Funcionalidades das versões 9.x do PostgreSQL
ODP
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
ODP
Fazendo Um Elefante Passar Debaixo da Porta - FISL
PDF
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
PDF
Maonamassa Pga
ODP
Conceitos E Aplicações
PDF
Arquitetando Soluções de Dados com PostgreSQL
PDF
pgBouncer: um aglomerador de conexões para PostgreSQL
ODP
Fazendo Um Elefante Passar Debaixo da Porta - PGCon-BR
PDF
Oracle T Opgsql
PPT
PDF
Oficina PostgreSQL Básico Latinoware 2012
PDF
Migrando de Oracle para PostgreSQL
PPTX
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
PPTX
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
PDF
Tutorial postgre
PPTX
PostgreSql - Um banco de dados Open Source que figura entre os grandes
PDF
Escalabilidade horizontal com PostgreSQL e Pgpool II
PDF
Postgres Big data
PostgreSQL-Prático.pdf
Funcionalidades das versões 9.x do PostgreSQL
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - FISL
Oracle para PostgreSQL: Conseguir migrar e não parar UTI
Maonamassa Pga
Conceitos E Aplicações
Arquitetando Soluções de Dados com PostgreSQL
pgBouncer: um aglomerador de conexões para PostgreSQL
Fazendo Um Elefante Passar Debaixo da Porta - PGCon-BR
Oracle T Opgsql
Oficina PostgreSQL Básico Latinoware 2012
Migrando de Oracle para PostgreSQL
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Tutorial postgre
PostgreSql - Um banco de dados Open Source que figura entre os grandes
Escalabilidade horizontal com PostgreSQL e Pgpool II
Postgres Big data

Mais de Fabio Telles Rodriguez (20)

PDF
Data Hero: Sua carreira na área de dados
PPTX
Postgres level up
PDF
Explain this!
PDF
High concurrency with Postgres
PDF
Aplicações 10x a 100x mais rápida com o postgre sql
PDF
Novidades do PostgreSQL 10
PDF
Migre seu banco de dados para a nuvem. Pergunte-me como!
PDF
Trabalhando com Logs no PostgreSQL
PDF
PostgreSQL Rock Star
PDF
Oracle x PostgreSQL
PDF
PostgreSQL Wonderland TDC-SP 2015
PDF
Trabalhando com Logs no PostgreSQL
PDF
Postgres Chainsaw Massacre
PDF
Postgres Tuning
PDF
Postgres Wonderland - PGDay CE2013
PDF
Postgres Wonderland - Campus Party 2013
PDF
Alta Concorrência com Postgres
PDF
Alta Concorrência com Postgres
PDF
Postgres, a "Metamorfose Ambulante"
ODP
Postgres Wonderland - PGDay Cascavél 2013
Data Hero: Sua carreira na área de dados
Postgres level up
Explain this!
High concurrency with Postgres
Aplicações 10x a 100x mais rápida com o postgre sql
Novidades do PostgreSQL 10
Migre seu banco de dados para a nuvem. Pergunte-me como!
Trabalhando com Logs no PostgreSQL
PostgreSQL Rock Star
Oracle x PostgreSQL
PostgreSQL Wonderland TDC-SP 2015
Trabalhando com Logs no PostgreSQL
Postgres Chainsaw Massacre
Postgres Tuning
Postgres Wonderland - PGDay CE2013
Postgres Wonderland - Campus Party 2013
Alta Concorrência com Postgres
Alta Concorrência com Postgres
Postgres, a "Metamorfose Ambulante"
Postgres Wonderland - PGDay Cascavél 2013

Último (8)

PPTX
Arquitetura de computadores - Memórias Secundárias
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Mecânico de Manutenção de Equipamentos.pptx
Arquitetura de computadores - Memórias Secundárias
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Viasol Energia Solar -Soluções para geração e economia de energia
Manejo integrado de pragas na cultura do algodão
Mecânico de Manutenção de Equipamentos.pptx

PostgreSQL Conceitos e aplicações

  • 1. Fernando Ike Fábio Telles PostgreSQL Conceitos e aplicações 29 de Outubro de 2005 http://www.mhowto.com.br/database/
  • 2. Agenda Conceitos e Aplicações Migrando para PostgreSQL Histórico - Boas práticas - Características - Antes de migrar - Ferramentas - Durante a migração - Instalação - SQL - Objetos - PL Autenticação - Storage Localização - Backup Transações - Segurança Backup - ora2pg Storage - Contatos Administração Tunning Comunidade
  • 3. 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 beta 4
  • 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.
  • 5. (algumas) Ferramentas Ferramenta nativa: psql Ferramentas gráficas de administração: pgADMIN III PHPpgADMIN TORA pgACCESS Ferramentas de modelagem: Data Architect Erwin Case Studio
  • 6. 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
  • 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 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 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
  • 10. Localização Suporte a localização: Ordenação de strings Idioma de menssagens 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 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.
  • 12. 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 permiçõ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 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.
  • 14. 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.
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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.
  • 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
  • 20. Fernando Ike Fábio Telles Migrando de Oracle para PostgreSQL 29 de Outubro de 2005 http://www.mhowto.com.br/database/
  • 21. Boas práticas Evitar utilizar extenções específicas de um SGBD Utilizar ao máximo a sintaxe padrão ANSI SQL Evite o uso de mixed case (notação Húngara), use minúsculas para nomes de objetos e maiúsculas para palavras reservadas. Documentar rigorosamente todo o código armazenado no banco Utilizar tipos de dados binários somente quando necessário
  • 22. Antes de migrar Leia atentamente toda a documentação dos dois SGBDs e identifique diferenças na sintaxe e funcionalidades utilizadas Realizar Backup total antes de realizar qualquer teste Realizar testes em um servidor de teste. Verificar codificação de caracteres e localização. Verificar espaço em disco disponível, o espaço ocupado pelo banco pode variar de SGBD para SGBD.
  • 23. Registre todo o processo. Migre primeiros sistemas não críticos Migre primeiro o que é mais simples como tabelas e índices Se possível, gere scripts em texto puro com todo DDL e DML Importe tabelas, dados e constraints separadamante Habilitar e checar logs durante exportações e importações. Migre primeiro o que é mais simples como tabelas e índices Homologue cada etapa antes de prosseguir. Durante a migração
  • 24. Diferenças no SQL ORACLE > PostgreSQL Tipos de dados VARCHAR2 > VARCHAR NUMBER > NUMERIC JOIN FROM t1, t2 > FROM t1 LEFT OUTER JOIN t2 WHERE t1.id = t2.id(+) ON t1.id = t2.id Funções: DECODE (sexo, 'M', > CASE WHEN sexo = 'M' then 'Masculino' 'Masculino,'F','Feminino') WHEN sexo = 'F' then 'Feminino' END NVL > COALESCE sysdate, systimestamp > current_date, current_timestamp UNION MINUS > EXCEPT Clausula LIMIT e OFSET: ROWNUM, ROWID > LIMIT, OFSET, OID
  • 25. SQL Catálogo de sistema SYS e SYSTEM do Oracle são equivalentes ao pg_catalog e inoformation_schema no PostgreSQL PostgreSQL é sensitive case. Todos nomes de objetos com letras maiúsculas devem estar entre aspas. O PostgreSQL não necessita do uso da tabela DUAL. Pode ser criada uma para manter a compatibilidade Implementação de hierarquia entre tabelas, XML, Database Link e outras funções avançadas possuem diferenças O PostgreSQL não possui visões materializadas. No entanto é possível contornar este problema com gatilhos e funções
  • 26. PL/SQL X PLpg/SQL Não existem procedures no PostgreSQL, no entanto uma função pode ser utilizada retornando o tipo VOID. Não existem valores DEFAULT para parâmetos recebidos no PL/SQL, no entanto é possível utilizar sobrecarga de funções. O PostgreSQL não tem suporte aos parâmetros IN e OUT, somente IN* Não existem Packages no PostgreSQL, no entanto os objetos podem ser organizados num esquema separado. Variáveis de nivel de pacote podem ser armazenadas em tabelas temporárias mantidas durante a sessão. Cursores não são necessários no PostgreSQL. A consulta deve ser declarada junto a clausula FOR do laço. O corpo da função deve estar marcas de dólar no PostgreSQL Os gatilhos no PostgreSQL chamam uma e apenas uma função, não havendo código em seu corpo. * Este problema foi resolvido na versão 8.1 que se encontra no beta 4
  • 27. Storage O conceito de Espaço de Tabelas no PostgreSQL se refere a uma pasta que é gerenciada pelo SGBD. Não é possível definir datafiles específicos. A única influência sobre os datafiles é especificar o formato de armazinamento nas colunas com valores grandes. O PostgreSQL não tem implementado explicitamente o conceito de extenções e segmentos. Ainda não é possível especificar o local de armazenamento separado para área temporária para áreas temporárias (para operações de rollback, ordenação, indexação, etc). Estas áreas ficam todas no mesmo local que o catálogo do sistema.
  • 28. Backup Conceito de Redo no Oracle é semelhante ao conceito de WAL no PostgreSQL Conceito de DUMP é semelhante em ambos. DUMP no PostgreSQL permite redirecionamento via pipe. Conceito de cópia de arquivos de dados é semelhante em ambos. Conceito de Stand By é semelhante em ambos. O PostgreSQL não possui uma ferramenta de flash back. O PostgreSQL não possui ferramenta natica no estilo do RMAN
  • 29. Segurança Conceito de ROLE no Oracle é semelhante ao conceito de GROUP no PostgreSQL. Um GROUP não pode ser usado para se conectar, apenas para agrupar permissões de usuários* GRANT e REVOKE tem funcionalidade semelhante SCHEMAS não são automaticamente atrelados ao usuário no PostgreSQL. Eles precisam ser criados manualmente. Depois disso se comporta de maneira parecida. No entanto um esquema pode possuir objetos de outro dono se ele tiver as permissões necessárias para isso. O ROLE “connect” no Oracle é realizado através do pg_hba.conf no PostgreSQL O ROLE “resource” no Oracle é semelhante a possuir privilégio para criar objetos num esquema do PostgreSQL. O Role DBA é no Oracle é semelhante ao superusuário do PostgreSQL O Role SYS é no Oracle é semelhante ao usuário POSTGRES no PostgreSQL * Os GROUPs serão convertidos ROLEs com as mesmas funcionalidades na versão 8.1
  • 30. ora2pg Feito em PERL. Depende dos módulos DBI, DBD::Pg e DBD::Oracle Importa dados e definições do Oracle para um arquivo texto ou direto para um banco no PostgreSQL Suporte a extração de DDL de tabelas, indices, constraints, views, triggers, procedures, functions, packages e grants. Dados podem ser exportados no formato INSERT ou COPY. Pode ser selecionado um esquema ou tabela específico para ser importado. Corrige nomes de tipos de dados diferentes. Extrai o código do corpo de triggers numa função. Algumas funções com nome diferente precisam Funções em PL/SQL geralmente precisam de um pouco de edição manual. Funções SQL diferentes precisam de edição manual.