Vous êtes sur la page 1sur 21

MySQL x PostgreSQL

Quando Usar Cada Um

Fernando Lozano
fernando@lozano.eti.br
Consultor Independente
Prof. Faculdade Metodista Bennett
Prof. Instituto de Tecnologia ORT

III Encontro do Grupo de Usuários Linux de SC


Florianópolis - SC
Maio de 2002

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 1
Sobre o Autor

● Red Hat Certified Engineer


LPI Certified Professional Level I
Sair GNU/Linux Certified Professional
● IBM Certified Network Engineer
IBM Certified DB2 Administrator & Developer
● Microsoft Certified Systems Engineer
Microsoft Certified Solutions Developer
● Webmaster da Free Software Foundation
● Autor do Livro “Java em GNU/Linux”
ed. Alta Books, 2002, www.altabooks.com.br

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 2
Porque Escolher Entre o
MySQL e o PostgreSQL?
● São os bancos de dados livres mais populares
● São os projetos mais antigos e maduros
● Suporte de ferramentas livres:
PHP, Perl, Python, Glade / Gnome-DB, ...
● Suporte de ferramentas proprietárias
Kylix, Java, Delphi, Visual Basic, ASP, ColdFusion, ...
● Outros bancos livres:
● Firebird (fork do Interbase Open Source)
● SAP-DB

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 3
Bancos Livres x Proprietários

● Os bancos livres em geral suportam:


● Otimização de consultas
● Histogramas sobre colunas
● Comandos SQL sofisticados
● Grants
● Campos binários longos
● Grandes volume de dados, usuários e transações
● Replicação

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 4
Bancos Livres x Proprietários

● Os bancos livres ainda não suportam:


● Tablespaces
● Clustering
● Transações distribuídas
● Consultas paralelas
● Particionamento
● Views Materializadas
● Bancos Multidimensionais / Aplicações OLAP

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 5
Sobre o MySQL

● Surgiu à partir de um formato de arquivos ISAM


desenvolvido pela Datakonsult AB
● Implementava o mesmo protocolo de rede e APIs
do mSQL (miniSQL), um banco freeware
● A versão Windows era shareware
● Há dois anos foi relicenciado sob a GNU GPL
● A empresa mudou de nome para MySQL AB

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 6
Características do MySQL

● Foco em facilidade de administração e baixo


consumo de recursos do hardware
● Se tornou popular graças à Internet, pois os
bancos tradicionais tinham tempos de conexão
extremamente elevados, inadequados para
aplicações CGI
● Para atingir seus objetivos, não implementava
funções com grande overhead como integridade
referencial, commit, rollback e níveis de isolamento
de transação

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 7
Características do MySQL

● Servidor multithreaded:
um único processo mysqld atende a todos os
clientes
● Tabelas e índices correspondem à arquivos físicos
e bancos de dados correspondem à diretórios
● Distribuição de dados em múltiplos discos deve
ser feita manualmente, por meio de links
simbólicos
● Segurança via SSL (4.x)

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 8
O MySQL Hoje e Amanhã

● Hoje (versão 3.23.x):


● Mecanismos de armazenamento (tipos de tabela)
com suporte à transações
● Recursos SQL mais sofisticados, como agregados
● Ainda não implementa alguns recursos básicos
como views e foreign keys
● Próximas versões (4.x, 5.x, ...):
● Maior compatibilidade com o padrão ANSI
● Views e procedimentos armazenados
● Full text search

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 9
Plataformas Suportadas pelo
MySQL
● Servidor
● Sistemas Unix-Like:
GNU/Linux, FreeBSD, Solaris, AIX, HP-UX, ...
● Win32:
Windows 95/98/ME, Windows NT/2000/XP/NET

OS/2 (Em desenvolvimento para BeOS e LynxOS)
● Cliente:
● Drivers ODBC (3.0) e dbExpress para Unix e
Windows
● Várias ofertas de drivers JDBC 2.0 100% Java

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 10
Quando Usar o MySQL

● Back-end para geração de conteúdo de web sites


● Aplicações envolvendo basicamente consultas e
adição de dados
● Não usar para aplicações com fortes demandas
transacionais, especialmente se houverem
atualizações concorrentes!
● Empresas como o Yahoo Finance combinam o
MySQL (aplicações web) com um outro banco de
dados (retaguarda financeira)

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 11
Sobre o PostgreSQL

● Herdeiro da tradição de pesquisa em BDs da


Universidade da Califórnia em Berkeley
● O Ingres “criou” a tecnologia relacional; o Postgres
(post-Ingres) focava a tecnologia de objetos
● Projetos de estudantes acrescentaram o suporte
ao SQL, gerando o PostgreSQL
● Um grupo de usuários assumiu a evolução da
versão SQL para atender às demandas do meio
empresarial

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 12
Versões do PostgreSQL

● 6.5 foi a primeira versão considerada “estável” para


uso comercial
● 7.0 finalizou o ciclo de refatoramento do código
legado da versão acadêmica
● 7.1 (hoje 7.1.3) acrescenta novas features sobre o
SQL e o otimizador
● 7.2 inicia um novo ciclo de adições ao backend
● A licença BSD permite a derivação de versões
proprietárias do PostgreSQL

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 13
Características do PostgreSQL

● Implementação completa dos padrões ANSI para o


SQL, como selects aninhados, integridade
referencial, views, triggers, ...
● Extensões orientadas a objeto, como tipos
abstratos de dados, herança, atributos multi-
valuados, ...
● Funções definidas pelo usuário, mas que não
podem retornar registros, portanto não tem ainda a
mesma funcionalidade dos procedimentos
armazenados em outros bancos

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 14
Características do PostgreSQL

● Servidor em múltiplos processos:


um único processo postmaster recebe as
conexões de rede, e inicia um processo postgres
para cada cliente
● Uso intensivo de memória compartilhada e
semáforos – pode ser necessário ajustar
parâmetros do kernel para melhorar o desempenho
ou para atender a cargas de trabalho maiores

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 15
Características do PostgreSQL

● Tabelas e índices correspondem à arquivos físicos


e bancos de dados correspondem à diretórios
● Podem ser configurados vários diretórios
diferentes para hospedar (arquivos de) bancos de
dados
● Segurança via Kerberos e/ou SSL

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 16
O PostgreSQL Hoje e Amanhã

● Hoje (versão 7.1.x e 7.2.x):


● Views funcionais
● Funções definidas pelo usuário em TCL, Perl, C, ...
● Outer joins
● Linhas de pesquisa (7.x):
● Postgres file system, para suporte a raw devices
● Máquina Virtual Java integrada ao banco
● Backups on-line rápidos
● Two-phase commit

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 17
Plataformas Suportadas Pelo
PostgreSQL
● Servidor
● Sistemas Unix-like
GNU/Linux, FreeBSD, Solaris, AIX, HP-UX, ...
● Versões experimentais para
Windows NT/2000/XP/NET (Cygwin) e MacOS X
● Cliente
● Bibliotecas nativas C para Unix, Win95/NT e OS/2
● Drivers ODBC (2.5) e dbExpress nativos para Unix
e Windows
● Driver JDBC 1.0 (2.0 parcial) 100% Java

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 18
Quando Usar o PostgreSQL

● Aplicações com fortes componentes transacionais


● Aplicações que necessitem de tipos de dados
especializados, como Sistemas de Informações
Geográficas (SIG) e repositórios de meta-dados
● Projetos baseados em metodologias Orientadas a
Objeto – perda de compatibilidade com o padrão
ANSI SQL
● Aplicações OLAP “light”, que não necessitem do
nível de sofisticação de um DataWarehouse

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 19
Referências

● PostgreSQL
www.postgresql.org
● MySQL
www.mysql.com
● Freshmeat
www.freshmeat.net
● Sourceforge
www.sourceforge.net

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 20
Perguntas

● Dúvidas:
fernando@lozano.eti.br
● Palestra e
atualizações:
www.lozano.eti.br
● Livro:
Java em GNU/Linux
www.altabooks.com.br

© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 21