%% PostgreSQL: Solução livre para banco de dados corporativo %% Copyright 2003 Euler Taveira de Oliveira %% %% Apresentado na I Jornada Tecnológica do SENAC Goiás, 15-17 Dez 2003 %% %% Definindo as fontes utilizadas %% %deffont "padrao" tfont "FreeSerif.ttf", charset "iso8859-1" %deffont "titulo" tfont "FreeSerif.ttf", charset "iso8859-1" %deffont "typewriter" tfont "typewriter.ttf", charset "iso8859-1" %% %% Padrão para linhas especiais %% %default 1 leftfill, fore "#000000", back "#FFFFFF", bimage "fundo.png" %default 2 size 7, vgap 10, prefix " ", font "padrao" %default 3 size 2, bar "#CCCCCC" 5 0 90, vgap 100 %default 4 size 5, vgap 30, font "padrao" %% %% Padrão para linhas identadas %% %tab 1 size 5, vgap 50, prefix " ", icon delta3 "#0033CC" 40 %tab 2 size 4, vgap 50, prefix " ", icon box "#33CC00" 40 %tab 3 size 3, vgap 40, prefix " ", icon arc "#3300CC" 30 %% %% página 1 %%%%%%%%%%%% %page %nodefault, font "padrao", fore "#000000", back "#FFFFFF", bimage "fundo.png" %center PostgreSQL %size 8 Alternativa Livre para Banco de Dados Corporativo %size 6 Euler Taveira de Oliveira %size 5 %% %% página 2 %%%%%%%%%%%% %page Por que utilizar banco de dados ? aplicação não precisa acessar diretamente os arquivos de dados aplicação troca dados com SGBD utilizando um protocolo sistema é robusto (acessos simultâneos) sistema é confiável (gerência de operações e erros) ACID Atomicidade bloco de operações é executado com sucesso ou nenhuma das operações são executadas Consistência a execução de uma transação isolada preserva a consistência dos dados Isolamento cada transação não "sabe" o que a outra está executando Durabilidade ao fim de uma transação, as alterações no banco de dados são permanentes %% %% página 3 %%%%%%%%%%%% %page Por que utilizar banco de dados ? %center, newimage -zoom 100 "sem_sgbd.png" %% %% página 4 %%%%%%%%%%%% %page Por que utilizar banco de dados ? %center, newimage -zoom 100 "com_sgbd.png" %% %% página 5 %%%%%%%%%%%% %page Por que utilizar software livre ? liberdade customizar cópia economia investir em suporte investir em treinamento investir em customização %% %% página 6 %%%%%%%%%%%% %page Por que utilizar software livre ? %center, newimage -zoom 120 "closed_software.png" %% %% página 7 %%%%%%%%%%%% %page Por que utilizar software livre ? %center, newimage -zoom 120 "open_software.png" %% %% página 8 %%%%%%%%%%%% %page Por que utilizar software livre ? %center, newimage -zoom 100 "suporte_pago.png" %% %% página 9 %%%%%%%%%%%% %page Por que utilizar software livre ? %center, newimage -zoom 100 "suporte_livre.png" %% %% página 10 %%%%%%%%%%%%% %page História do PostgreSQL Universidade da Califórnia (Berkeley) Ingres (1977-1985) Postgres (1986-1994) - Michael Stonebraker Postgre95 (1994-1995) - Jolly Chen e Andrew Yu The PostgreSQL Global Development Group PostgreSQL (1996-) %% %% página 11 %%%%%%%%%%%%% %page Versões e Datas 29/01/1997 - 6.0 - 08/06/1997 - 6.1 - 200.709 02/10/1997 - 6.2 - 225.848 01/03/1998 - 6.3 - 260.809 30/10/1998 - 6.4 - 297.918 09/06/1999 - 6.5 - 331.278 08/05/2000 - 7.0 - 383.270 13/04/2001 - 7.1 - 410.500 04/02/2002 - 7.2 - 394.274 27/11/2002 - 7.3 - 453.282 17/11/2003 - 7.4 - 508.523 %% %% página 12 %%%%%%%%%%%%% %page Graficamente %center, newimage -zoom 100 "versoes.png" %% %% página 13 %%%%%%%%%%%%% %page Licenciamento Licença BSD (qualquer propósito) venda versões customizadas com código fechado Licença BSD é diferente da GPL! %% %% página 14 %%%%%%%%%%%%% %page Plataformas PostgreSQL é multiplataforma: AIX BSD/OS FreeBSD HP-UX Irix Linux MacOS X NetBSD OpenBSD Solaris Tru64 UNIX UnixWare Windows (Cygwin) Windows* %size 3 * somente o cliente %% %% página 15 %%%%%%%%%%%%% %page Características PostgreSQL possui muitas características: Linguagem SQL Transação e Concorrência Administração do Servidor Linguagens, Clientes e Interfaces Ferramentas Migração Documentação e Suporte %% %% página 16 %%%%%%%%%%%%% %page Linguagem SQL (SQL 92/SQL 99) índices (B-trees, R-trees, Hash e Gist indices) regras tabelas temporárias chaves estrageiras junções gatilhos visões tipos de dados (SQL 92 e 99) tipos de dados adicionais (ISBN, geométricos, etc) tipos de dados podem ser definidos armazena dados binários (BLOB) suporte a vários conjuntos de caracteres (multibyte, Unicode, etc) %% %% página 17 %%%%%%%%%%%%% %page Linguagem SQL (SQL 92/SQL 99) suporte a localidade para ordenação e formatação condicionais do padrão SQL (IF, CASE) subconsultas suporte a GROUP BY suporte a UNION, INTERSECT e EXCEPT suporte a NOTIFY e LISTEN extensões OFFSET e LIMIT p/ controlar registros retornados funções p/ manipulação de datas, strings e números funções p/ criptografia de dados (contrib) usuários podem adicionar funções e operadores %% %% página 18 %%%%%%%%%%%%% %page Linguagem SQL (SQL 92/SQL 99) funções podem ser escritas em: C SQL PL/PgSQL (similar ao PL/SQL) PL/Tcl PL/Perl PL/Python PL/sh PL/PHP (alfa) %% %% página 19 %%%%%%%%%%%%% %page Transação e Concorrência implementa o ACID Atomicidade Consistência Isolamento Durabilidade suporte a nível de isolamento de transação utiliza MVCC (Multi-Version Concurrency Control) quem escreve não bloqueia quem lê quem lê não bloqueia quem escreve "melhor do que travamento de registros" %% %% página 20 %%%%%%%%%%%%% %page Administração do Servidor ferramentas de backup e recuperação (pg_dump e pg_restore) modelo de segurança de objetos por usuário/grupo modelo de acesso ao banco por host/usuário suporte a autenticação Kerberos conexão com banco de dados criptografada (SSL ou SSH) suporte a múltiplas CPUs suporte a CPUs de 64 bits suporte a IPv6 conexão por TCP/IP ou soquete tamanho ilimitado para banco de dados, tabela e registro* número ilimitado de registros e índices por tabela* %size 3 * veja slide a diante %% %% página 21 %%%%%%%%%%%%% %page Linguagens, Clientes e Interfaces Linguagens Perl Python PHP Tcl C C++ Delphi Kylix .Net VB Java JSP %% %% página 22 %%%%%%%%%%%%% %page Linguagens, Clientes e Interfaces Clientes psql pgaccess pgAdmin phpPgAdmin %% %% página 23 %%%%%%%%%%%%% %page Linguagens, Clientes e Interfaces Interfaces ODBC JDBC Zeoslib C API C++ API %% %% página 24 %%%%%%%%%%%%% %page Ferramentas Qmail Bricolage (CMS) OpenACS (CMS) mod_pgsql (Apache) PHPNuke PostNuke OpenLDAP Snort %% %% página 25 %%%%%%%%%%%%% %page Migração Ferramentas (techdocs.postgresql.org) DBF Interbase MS SQL Server MySQL Oracle %% %% página 26 %%%%%%%%%%%%% %page Documentação e Suporte conjunto de manuais referência administrador desenvolvedor programador usuário tutorial livros online impresso listas de discussão desenvolvedores comunidades locais instruções de instalação %% %% página 27 %%%%%%%%%%%%% %page Documentação e Suporte FAQ documentos técnicos (techdocs.postgresql.org) suporte comercial consultores independentes (eu!) empresas especializadas %% %% página 28 %%%%%%%%%%%%% %page Implementações Futuras (Desvantagens ?) Replicação no servidor PostgreSQL nativo p/ Windows Recuperação de dados "Point-in-time" (Backup + WAL) Transações aninhadas Tablespaces Múltiplos conjuntos de caracteres em um banco de dados Suporte a XML %% %% página 29 %%%%%%%%%%%%% %page Comparativo com outros SGBDs %center, newimage -zoom 94 "comparativo.png" %left, size 3 retirado do site da dbExperts %% %% página 30 %%%%%%%%%%%%% %page Limitações tamanho máximo por banco de dados (ilimitado) existem bancos de dados de 4TB! tamanho máximo por tabela (16 TB) tamanho máximo por registro (1.6 TB) tamanho máximo por campo (1 GB) número máximo de registros por tabela (ilimitado) número máximo de colunas por tabela (250-1600) depende do tipo de dados! número máximo de índices por tabela (ilimitado) %size 3 * os limites acima podem ser ampliados se for alterado o tamanho do bloco de dados %% %% página 31 %%%%%%%%%%%%% %page PostgreSQL no mundo corporativo Universidades Univates - SAGU e MIOLO UFG - ST, SOS, Portal UFG, Editora, AG UFPE UEMG FURG UFPI Governo Goiás - Aganp Empresas Privadas BASF .ORG Sourceforge.Net Vésper dbExperts %% %% página 32 %%%%%%%%%%%%% %page Futuro do PostgreSQL TODO aumentar velocidade melhorar documentação internacionalização %center, newimage -zoom 100 "evolucao.png" %left, size 3 figura retirada de "PostgreSQL Adoption and Concepts", Bruce Momjian (developer) %% %% página 33 %%%%%%%%%%%%% %page Conclusão %center, size 8 PostgreSQL é uma alternativa para banco de dados corporativo! %% %% página 34 %%%%%%%%%%%%% %page Referências %center, size 6 %% %% fim da apresentação %%%%%%%%%%%%%%%%%%%%%%%