Upload
amadeu-felipe
View
232
Download
1
Embed Size (px)
Citation preview
© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 1
MySQL x PostgreSQLMySQL x PostgreSQLQuando Usar Cada UmQuando Usar Cada Um
Fernando LozanoFernando [email protected]@lozano.eti.br
Consultor IndependenteProf. Faculdade Metodista BennettProf. 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. 2
Sobre o AutorSobre o Autor
● Red Hat Certified EngineerLPI Certified Professional Level ISair GNU/Linux Certified Professional
● IBM Certified Network EngineerIBM Certified DB2 Administrator & Developer
● Microsoft Certified Systems EngineerMicrosoft 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. 3
Porque Escolher Entre o Porque Escolher Entre o MySQL e o PostgreSQL?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áriasKylix, 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. 4
Bancos Livres x ProprietáriosBancos 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. 5
Bancos Livres x ProprietáriosBancos 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. 6
Sobre o MySQLSobre 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. 7
Características do MySQLCaracterí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. 8
Características do MySQLCaracterí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. 9
O MySQL Hoje e Amanhã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. 10
Plataformas Suportadas pelo Plataformas Suportadas pelo MySQLMySQL
● 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. 11
Quando Usar o MySQLQuando 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. 12
Sobre o PostgreSQLSobre 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. 13
Versões do PostgreSQLVersõ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. 14
Características do PostgreSQLCaracterí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. 15
Características do PostgreSQLCaracterí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. 16
Características do PostgreSQLCaracterí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. 17
O PostgreSQL Hoje e Amanhã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. 18
Plataformas Suportadas Pelo Plataformas Suportadas Pelo PostgreSQLPostgreSQL
● 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. 19
Quando Usar o PostgreSQLQuando 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. 20
ReferênciasReferências
● PostgreSQLwww.postgresql.org
● MySQLwww.mysql.com
● Freshmeatwww.freshmeat.net
● Sourceforgewww.sourceforge.net
© 2002 Fernando Lozano, http://www.lozano.eti.br MySQL x PostgreSQL: Quando Usar Cada Um Pag. 21
PerguntasPerguntas
● Dúvidas:[email protected]
● Palestra e atualizações:www.lozano.eti.br
● Livro:Java em GNU/Linuxwww.altabooks.com.br