Escolar Documentos
Profissional Documentos
Cultura Documentos
Entre os usuários do banco de dados MySQL estão, entre outros: NASA, Friendster,
Banco Bradesco, Dataprev, HP, Nokia, Sony, Lufthansa, U.S Army, US. Federal
Reserve Bank, Associated Press, Alcatel, Slashdot, Cisco Systems.
Características
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxx
* Consultas complexas
* chaves estrangeiras
* Integridade transacional
* Controle de concorrência multi-versão
* Suporte ao modelo híbrido objeto-relacional
* Gatilhos
* Visões
* Linguagem Procedural em várias linguagens (PL/pgSQL, PL/Python, PL/Java,
PL/Perl) para Procedimentos armazenagem
* Indexação por texto
* Estrutura para guardar dados Georeferenciados PostGIS
Fonte: Wikipedia
Xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Referências Referências
? PostgreSQL
www.postgresql.org
? MySQL
www.mysql.com
fernando@lozano.eti.br fernando@lozano.eti.br http://www.lozano.eti.br
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Introdução
É muito fácil encontrar serviços de hospedagem de sites que oferecem em seus planos
os Sistemas Gerenciadores de Banco de Dados (SGDB) MySQL e PostgreSQL, embora
isso seja mais comum com o primeiro. Como esses SGBD não são usados apenas na
internet, talvez seja de seu interesse utilizá-los em seus projetos de software, uma vez
que cada um é dotado de vantagens interessantes, como a gratuidade de uso. Para ajudá-
lo a escolher o melhor para sua aplicação, este artigo apresenta as principais
características de ambos, começando com o MySQL. Para tanto, é recomendável que
você tenha algum conhecimento sobre os conceitos de bancos de dados.
Alguns termos
Mesmo aquelas pessoas que já trabalham com banco de dados podem ficar "perdidas"
no meio de tantos nomes de recursos. Assim, para facilitar a compreensão, segue uma
lista com uma breve explicação sobre os recursos mais importantes:
Até o momento em que este artigo era escrito, o MySQL estava na versão 5.0 (mais
precisamente, 5.0.26). Em relação à versão 4.0, houve acréscimo de vários recursos e
melhorias importantes, como:
- Triggers;
- Stored procedures;
- Sub-selects;
- Suporte total ao Unicode;
- INFORMATION_SCHEMA (para armazenamento do dicionário de dados);
- Server side cursors;
- Suporte a SSL;
- Melhoria no tratamento de erros.
O MySQL surgiu na Suécia pelas mãos de três colegas: Allan Larsson, David Axmark e
Michael Monty Widenius. Trabalhando com base de dados, eles sentiram a necessidade
de fazer determinadas conexões entre tabelas e usaram o mSQL para isso. Porém, não
demorou para perceberem que essa ferramenta não lhes atendia conforme o necessário e
passaram a trabalhar em uma solução própria. Surgia então o MySQL, cuja primeira
versão foi lançada no ano de 1996.
Um fato importante a ser destacado sobre o MySQL é que esse SGBD também possui
uma licença comercial, isto é, paga. Neste caso, é possível obter suporte diferenciado
dos desenvolvedores.
Vale ressaltar também que, em fevereiro de 2008, o MySQL foi comprado pela Sun
Microsystems, que pagou a quantia de 1 bilhão de dólares pela aquisição. Mais
informações sobre essa transação neste link (em inglês).
No momento em que este artigo era escrito, o PostgreSQL estava na versão 8.1.
MySQL x PostgreSQL
MySQL ou PostgreSQL, qual usar? Ambos são muito bons e não fazem feio diante das
alternativas pagas. Além disso, possuem recursos e vantagens em comum, o que
significa que, para a maioria das aplicações, ambos podem ser usados. Na verdade, o
correto não é tentar descobrir qual é o melhor, mas em que situação um ou outro deve
ser utilizado.
O MySQL, por sua vez, é focado na agilidade. Assim, se sua aplicação necessita de
retornos rápidos e não envolve operações complexas, o MySQL é a opção mais
adequada, pois é otimizado para proporcionar processamento rápido dos dados e tempo
curto de resposta sem exigir muito do hardware. Se você precisa, por exemplo, de um
banco de dados para armazenar o conteúdo do seu site, de seu fórum ou necessita
manter um cadastro de usuários de um portal, o MySQL "serve como uma luva", pois
tais aplicações não necessitam dos recursos avançados que o PostgreSQL oferece.
Para escolher um destes dois SGBD, procure entender bem quais recursos sua aplicação
precisa. Tente estimar o volume de dados, avalie o hardware disponível, certifique-se
das funcionalidades necessárias e, posteriormente, procure por informações mais
detalhadas do MySQL e do PostGreSQL. Se sua aplicação for simples - principalmente
se for algo ligado à internet -, não é preciso pensar muito: o MySQL é uma escolha
satisfatória, pois é facilmente encontrado em serviços de hospedagem.
.: Livros sugeridos :.
:: PostgreSQL - Técnicas Avançadas
:: PostgreSQL - Guia do Programador
:: MySQL - A Bíblia
:: MySQL 5 - Guia de Consulta Rápida
Via Shopping UOL
Todavia, há situações em que tanto o MySQL quanto o PostgreSQL serão boas
escolhas. Nesses casos, é recomendável fazer testes com ambos e avaliar qual oferece
mais vantagens à aplicação.
Finalizando
Um banco de dados pode ser a diferença entre ter e não ter um negócio, seja ele de
qualquer porte. Por isso, a escolha deve ser bem feita e aspectos como desempenho,
recursos, documentação e suporte devem ser considerados. Em todos esses pontos o
MySQL e o PostgreSQL são excelentes, por isso, a escolha entre um deles só depende
de sua aplicação.
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Olá caros amigos. Mais um artigo que estou publicando e gostaria desta vez de falar
sobre dois excelentes SGBDs, fazendo as devidas comparações.
São dois SGBDs, ambos gratuitos. O MySQL está disponível sob a GPL (Licença
Pública GNU), além de possuir uma licença convencional, para quem não quiser estar
limitado aos termos da GPL. Já o PostgreSQL está disponível sob a flexível licença
BSD.
Como já foi dito no início deste artigo, a vantagem do MySQL ainda é a velocidade de
acesso (que às vezes nem é notada pois está na escala de milésimos de segundo). Para
bases de dados muito grandes, complexas e que exige confiabilidade e escalabilidade
vale a pena usar o PostgreSQL. Para base de dados menores, não há diferença na
velocidade ou pode se desconsiderar os milésimos de segundos entre os dois SGBDs.
Ao contrário de outros SGBDs que utilizam que utilizam LOCKs para controle de
concorrência, o PostgreSQL mantém a consistência dos dados usando um modelo
multiversão. Neste modelo, cada transação terá sua versão do banco de dados, estando
protegidas de acessar dados inconsistentes que poderiam ser gerados por outras
transações. Portanto, o MVCC oferece o isolamento de transações, alem de garantir que
leituras nunca aguardarão escritas e vice-versa.
Dirty Reads: ocorre quando uma transação lê dados escritos por uma transação corrente
que ainda não foi confirmada (COMMIT).
Non-Repeatable Reads: uma transação lê um dado que ela já havia lido anteriormente, e
descobre que aqueles dados foram modificados por outra transação (confirmada após a
primeira leitura).
Phantom Read: uma transação lê um conjunto de linhas que satisfaça algum critério de
pesquisa. Outra transação insere uma linha que satisfaça o critério da anterior. Se a
primeira transação executar novamente o comando de pesquisa, ela receberá um
conjunto diferente de linhas.
Os quadros de níveis de isolamentos são descritos a seguir para você entender melhor.
Nível
Descrição
Read Uncommitted
Uma transação pode enxergar dados não confirmados por outra transação
Read Committed
Uma transação não pode enxergar dados não confirmados por outra transação, até que
estes dados sejam confirmados.
Repeatable Read
Uma transação neste nível garante que valores já lidos não possam ser alterados por
outra transação.
Serializable
Uma transação só poderá interagir com outras transações concorrentes no sentido de
produzir o mesmo efeito, como se cada transação estivesse sendo executada uma após a
outra.
A tabela a seguir mostra quais situações podem ocorrer em cada um dos níveis de
isolamento:
Nível
Dirty Reads
Non-Repeatable Reads
Phantom Read
Read Uncommitted
Possível
Possível
Possível
Read Committed
Impossível
Possível
Possível
Repeatable Read
Impossível
Impossível
Possível
Serializable
Impossível
Impossível
Impossível
Características do MySQL
a. Servidor multithreaded:
b. Um único processo mysqld atende a todos os clientes.
c. Tabelas e índices correspondem à arquivos físicos e bancos de dados correspondem à
diretórios.
d. Distribuição de dados em múltiplos discos deve ser feita manualmente, por meio de
links simbólicos.
e. Segurança via SSL
f. Com suporte à transações
g. Recursos SQL mais sofisticados, como agregados, COMMIT e ROLLBACK,
triggers (gatilhos), Stored Procedures (Procedimentos Armazenados), views (visões),
lock line (bloqueio em nível de linha) e constraints (cláusulas de integridade).
h. Maior compatibilidade com o padrão ANSI.
a. Servidor
b. Sistemas Unix-Like:
c. GNU/Linux, FreeBSD, Solaris, AIX, HP-UX,...
d. Win32: Windows 95/98/ME, Windows NT/2000/XP/NET
e. OS/2 (em desenvolvimento para BeOS e LynxOS)
f. Cliente: Drivers ODBC e dbExpress para Unix e Windows Várias ofertas de drivers
JDBC 2.0 100% Java.
Características do PostgreSQL
. comandos complexos
. chaves estrangeiras
. gatilhos
. visões
. integridade transacional
. controle de simultaneidade multiversão
Além disso, o PostgreSQL pode ser estendido pelo usuário de muitas maneiras como,
por exemplo, adicionando novos:
. tipos de dado
. funções
. operadores
. funções de agregação
. métodos de índice
. linguagens procedurais
Devido à sua licença liberal, o PostgreSQL pode ser utilizado, modificado e distribuído
por qualquer pessoa para qualquer finalidade, seja privada, comercial ou acadêmica,
livre de encargos.
g. Implementação completa dos padrões ANSI para o SQL, como selects aninhados,
integridade referencial, views, triggers,...
h. Extensões orientadas a objeto, como tipos abstratos de dados, herança, atributos
multivaluados...
i. 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
j. Servidor em múltiplos processos: um único processo postmaster recebe as conexões
de rede, e inicia um processo postgres para cada cliente
l. 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
m. 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
n. Segurança via Kerberos e/ou SSL
o. Views funcionais
p. Funções definidas pelo usuário em TCL, Perl, C,...
q. Outer joins
r. Postgres file system, para suporte a raw devices
s. Máquina Virtual Java integrada ao banco
t. Backups on-line rápidos
u. Two-phase commit.
a. Sistemas Unix-like
b. GNU/Linux, FreeBSD, Solaris, AIX, HP-UX,...
c. Windows NT/2000/XP/NET (Cygwin) e MacOS X
d. Cliente
e. Bibliotecas nativas C para Unix, Win95/NT e OS/2
f. Drivers ODBC (2.5) e dbExpress nativos para Unix e Windows Driver JDBC 1.0 (2.0
parcial) 100% Java
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx