Bancos de Dados

MySQL ou PostgreSQL? Eis a questão!

Essa pergunta é feita por muita gente que trabalha com desenvolvimento e conhece alguma coisa de algum dos dois. No senso comum, se ouve muito o seguinte: “MySQL é pra coisas menores, mais simples. PostgreSQL é pra projetos de grande porte”. Mas será que isso é verdade? E porque escolher um ou outro?

O que eles têm em comum

  • São Software Livre;
  • São gratuitos (nem todo Software Livre é gratuito);
  • São encontrados facilmente em vários provedores por aí;
  • Possuem também suporte pago (do MySQL é oferecido pela Oracle. O do PostgreSQL é oferecido por empresas como EnterpriseDB);
  • São bem populares, e por isso se encontra bastante documentação (mas se encontra mais material do MySQL).

O lado político da coisa

Do ponto de vista “político”, tem uma diferença importante entre eles: o MySQL é da Oracle, uma grande empresa multinacional. O PostgreSQL não. Ele é mantido diretamente pela comunidade.

Isso quer dizer que a Oracle é “dona” do MySQL e pode fechar o código a qualquer momento? Não, não é bem assim. Ela é dona da marca MySQL, e pode descontinuar o produto a seu bel prazer ou deixar de liberar a versão grátis. Mas todo o código já produzido é livre, e se alguém ou alguma empresa quizer dar continuidade ao projeto com outro nome (fazer um fork), pode fazer. Inclusive isso já aconteceu: foi lançado o MariaDB.

O MariaDB é baseado no MySQL e foca na compatibilidade com ele, então a ideia é que ele não vá se tornando cada vez mais incompatível conforme as versões vão sendo lançadas, e sim que ele permaneça lado a lado com o MySQL, mas sem ser da Oracle. O criador do MariaDB é um dos criadores do MySQL: o finlandês Michael “Monty” Widenius.

O problema é que a instabilidade das decisões de uma empresa como a Oracle pode afetar a confiança no produto. Foi o que aconteceu com o OpenOffice (também da Oracle). A comunidade estava instisfeita com o rumo que o projeto vinha tomando, e decidiu fundar o LibreOffice. O próprio BrOffice agora é LibreOffice. Isso – ao meu ver – é uma coisa boa, pois agora o poder não está mais nas mãos da Oracle, e sim da comunidade.

O lado técnico

Muito do que se ouve falar sobre ambos é antigo, e vem de estereótipos antigas, do MySQL 4.1 (a atual é 5.5) e do PostgreSQL 7.4 (a atual é 9.0). O MySQL possui agora vários recursos que antes não tinha, e o PostgreSQL está muito mais rápido. É comparado por muitos com o Oracle.

Mais de 75 recursos foram adicionados ao PostgreSQL de lá pra cá, resultado de um trabalho de vários anos para remover pontos chave que causavam problemas de escalabilidade. É possível também compactar e descompactar dados “on-the-fly”. A vantagem disso é que reduz a necessidade de acesso a disco, aumentando a performance.

O PostgreSQL possui apenas um sistema de armazenamento, e o MySQL possui vários. Você pode escolher de acordo com o tipo do projeto. Os mais utilizados no MySQL são InnoDB e MyISAM. O MyISAM é mais rápido que o sistema do PostgreSQL, mas tem um custo. Alguns recursos, como chaves estrangeiras e transações não estão disponíves. O InnoDB possui recursos para garantir mais integridade nos dados, mas é mais lento que o MyISAM. O PostgreSQL pode ser mais lento ou mais rápido que o MySQL utilizando o InnoDB, dependendo das configurações e recursos utilizados.

Trocando em miúdos

O MySQL pode ser sim uma boa opção em sistemas mais simples e bases menores, como um site ou um sistema que não tenha milhares de usuários concorrentes. Para sistemas mais complexos, que necessitam de maior integridade nos dados, que possuem milhões de linhas e vários TeraBytes de informação, o PostgreSQL pode ser a melhor opção. Mas lembre-se que em ambos existem várias configurações que podem ser feitas para melhorar vários aspectos. Se você lê em inglês, pode encontrar bastante informação aqui: http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL e aqui http://wiki.postgresql.org/wiki/Why_PostgreSQL_Instead_of_MySQL_2009.


Perdi a senha do MySQL no Ubuntu! E agora!?

Não se desespere! Nessa vida tem jeito pra tudo. Somos humanos, e esquecemos senhas, certo? Então se isso aconteceu com você, tem uns comandos bem rápidos que vão te tirar do desespero. Aqui vai:

Acesse o Terminal (Aplicativos/Acessórios/Terminal):

sudo /etc/init.d/mysql stop
sudo mysqld --skip-grant-tables &
mysql -u root mysql
UPDATE user SET Password=PASSWORD('SUANOVASENHA') WHERE User='root'; FLUSH PRIVILEGES; exit;

Pronto. Agora você pode acessar o MySQL normalmente com sua senha nova.

Veja aqui como gerar uma nova senha do PostgreSQL no Ubuntu.

O procedimento foi testado no Ubuntu 10.04 LTS.


Separar dia, mês e ano de uma data no PostgreSQL

No PostgreSQL, uma das formas de separar o dia, mês e ano de uma data (campo tipo DATE ou TIMESTAMP), é necessário utilizar a função EXTRACT. Veja o exemplo abaixo:

select
   EXTRACT(DAY FROM data_nascimento) as dia,
   EXTRACT(MONTH FROM data_nascimento) as mes,
   EXTRACT(YEAR FROM data_nascimento) as ano
      from tb_clientes


EnterpriseDB lança versão comercial e ferramentas de segurança para o PostgreSQL 9

Essa semana a EnterpriseDB, a maior empresa prestadora de suporte comercial ao banco de dados PostgreSQL – o mais importante banco de dados livre atualmente – lançou o Postgres Plus Standard Server 9, que é uma versão comercial do PostgreSQL 9 lançado pela comunidade em setembro de 2010. A empresa também lançou ferramentas desenvolvidas para auxiliar os usuários do banco a ter mais segurança em suas bases e seus códigos.

“O Postgres Plus Standard Server 9 inclui todas as atualizações liberadas desde setembro”, informa Robin Schumacher, diretor de estratégia de produto na EnterpriseDB para a InternetNews.com.

Foram lançada três ferramentas. São elas:

Fonte: http://itmanagement.earthweb.com/secu/article.php/3921476/EnterpriseDB-Releases-New-Postgres-Plus-Security-Tools.htm


Banco de Dados “Cassandra”, da Apache, permite ter 2 bilhões de colunas em uma linha

Um banco de dados livre capaz de armazenar linhas tão grandes pode ser muito útil, especialmente para a grande quantidade de dados dos maiores projetos de computação na nuvem, além de aplicações web de grande porte. Vários serviços já utilizaram esse banco de dados, incluindo o Digg, Twitter e Facebook. Foi o Facebook que desenvolveu o SGBD. O maior cluster do Cassandra possui mais de 400 servidores.

O novo recurso (Large Row Support) que permite que o banco armazene 2 bilhões de colunas em uma linha foi disponibilizado na versão última versão, a 0.7. Era possível armazenar aproximadamente 2GB de dados em uma linha, agora esse limite máximo foi removido.

Outros recursos foram adicionados nessa versão, como a adição de índices secundários e a possibilidade de fazer alterações em um esquema (schema) sem reiniciar o cluster inteiro. O Cassandra é um banco de dados não-relacional (NoSQL). Bancos de dados desse tipo possuem a vantagem de armazenar fácil e rapidamente uma grande quantidade de dados em um ambiente de clusters.


Maiores Patrocinadores do PostgreSQL

Pra quem nunca ouviu falar, o PostgreSQL é um poderoso sistema gerenciador de banco de dados objeto-relacional de código aberto. Tem mais de 15 anos de desenvolvimento ativo e uma arquitetura que comprovadamente ganhou forte reputação de confiabilidade, integridade de dados e conformidade a padrões.  Roda em todos os grandes sistemas operacionais, incluindo GNU/Linux, Unix e Windows.

Platinum

Command Prompt, Inc. (Estados Unidos)
EnterpriseDB (Estados Unidos)
Red Hat, Inc. (Estados Unidos)

Gold

2ndQuadrant (Reino Unido)
credativ GmbH (Alemanha)
Dalibo (França)
NTT Group (Japão)

Silver

conova communications GmbH (Áustria)
OverBlog (França)
Sun Microsystems, Inc. (Estados Unidos)

Bronze

Fujitsu (Austrália)
HP (Estados Unidos)
OTG (Estados Unidos)
Skype (Luxemburgo)

Fonte: http://www.postgresql.org/about/sponsors


Acessar o MySQL pelo Prompt do Windows

Vez ou outra é necessário acessar o MySQL por linha de comando. Se você estiver no Windows, isso também é possível.

Clique no menu Iniciar, depois Todos os Programas (Windows 7). Em seguida clique em Acessórios, e depois em Prompt de Comando.

Se você tiver instalado o MySQL utilizando o Wamp ou XAMPP ele fica em uma pasta diferente de c:\mysql. Acesse – pelo prompt – a pasta onde fica o MySQL.

Se for o XAMPP, por exemplo, o executável fica em c:\xampp\mysql\bin

Depois que abrir a telinha preta, digite:

mysql -u <nome de usuário*> -p

Pronto. Agora é só digitar qualquer comando (SELECT, UPDATE etc.) que ele irá funcionar normalmente.

* o nome de usuário padrão, geralmente é root. Se a instalação é padrão, a senha está em branco, então é só apertar enter.


Converter de maiúsculas para minúsculas e vice-versa com o MySQL

Uma maneira bem simples de converter de maiúsculas para minúsculas, e vice-versa direto pelo banco de dados MySQL, sem utilizar de programação é utilizar as funções UPPER e LOWER do MySQL.

Exemplos:

De minúscula para maiúscula

SELECT upper( `nome` ) FROM `clientes`

De maiúscula para minúscula

SELECT lower( `nome` ) FROM `clientes`

Você também pode renomear os campos, para facilitar a exibição:

Exemplo:

SELECT upper( `nome` ) as `nome_do_cliente` FROM `clientes`

Se você quizer selecionar outros campos:

SELECT upper( `nome` ) as `nome_do_cliente`,`telefone`,`cidade` FROM `clientes`

A função UPPER é sinônimo da função UCASE e a função LOWER é sinônimo da função LCASE.


Realizando duas ou mais consultas com UNION e UNION ALL no MySQL

Algumas vezes não conseguimos obter os resultados que desejamos com uma só consulta no banco de dados. Para resolver esse problema existem os operadores UNION e UNION ALL.

Vamos a um exemplo:

(SELECT * FROM clientes WHERE idcidade = 1 LIMIT 3)
UNION (SELECT * FROM clientes WHERE idcidade = 5 LIMIT 3)
UNION (SELECT * FROM clientes WHERE idcidade = 8 LIMIT 3)

No exemplo acima ele vai retornar de uma só vez o mesmo que retornaria se você fizesse três selects diferentes.

Você também pode utilizar UNION ALL ao invés de UNION. A diferença é que ele vai retornar todos os resultados, inclusive as linhas repetidas.

Se não tiver como serem retornados registros duplicados, é mais vantagem usar o UNION ALL, que é mais rápido.

Observe que esse operador torna a consulta extremamente mais lenta, e ele só deve ser usados em casos bem específicos. Use com cautela.


  • Publicidade

  • Redes Sociais

    Facebook  Twitter
  • Estatísticas

    Page Views (desde março de 2010):

    Estatísticas detalhadas
  • Novidades por e-mail!

    Digite seu e-mail:


    Fique tranquilo. Seu e-mail não será usado para outros fins, e você poderá se descadastrar quando quizer.

    Eu!

    Tiago Passos
    Todo o conteúdo desse site esta licenciado sob a licença Creative Commons 3.0 (CC BY 3.0). Você pode copiar e modificar o conteúdo desde que cite o autor.
    iDream theme by Templates Next | Powered by WordPress