POSTS EM DESTAQUE
Seu novo Notebook poderá ser um MacBook Air
Windows 8 vs Ubuntu – Comparando o novo Windows com o Ubuntu Linux
Android Ice Cream Sandwich 4.0 – Veja algumas novidades

O Melhor Banco de Dados: Postgres?

Gostaria de lembrar que a questão aqui não é afirmativa, mas sim um questionamento do porque eu prefiro utilizar Postgres a outros SGDB. Não há intenção de ofender outros sistemas ou pessoas. Poderia alongar o post muito mais, falando de outros SGDB como SQL Server, DB/2,… mas isso sempre leva a um debate, geralmente, sem fim, cada qual defendendo seu ponto de vista, que não é, novamente, a intenção desse post.

Trabalhando como DBA constantemente as pessoas me questionam qual é o melhor SGDB (Sistema de Gerenciamento de Banco de Dados) para se trabalhar. A resposta é “PostgreSQL”.
Adoro o Elefante. Robusto, rápido, fácil, simples, seguro, boa documentação, várias listas de discussões (ativas e bem frequentadas); tudo isso e mais mostra o poder que ele tem, e mesmo assim, sempre aprendemos coisas novas, ainda mais quando é lançado novas versões, geralmente acompanha por boas novas funcionalidades.
Mas será que é mesmo o melhor Banco de Dados?! Nesse tipo de pergunta sempre há contro-vérsias, mas posso dizer de antemão que é o melhor Banco de Dados Open-Source.

Vamos analisar alguns fatos. Primeiro sobre o MySQL. Porque usar MySQL? Velocidade. E hoje sabemos que web precisa ser veloz, fecha um casamento perfeito. Mas será que vale a pena usar um sistema que é falho? Se até poucas versões anteriores era possível repetir valores em atributos PK, vai saber o que mais pode acontecer de errado?
Agora que o MySQL é da Oracle, vamos acompanhar como será o desenvolvimento do Banco. E já temos boas notícias, MySQL Enterprise vem com recursos alá Oracle Database, com ferramentas de monitoramento e replicação em poucos cliques. Então, porque usar MySQL? Por causa da sua velocidade, e com isso perdemos vários recursos, segurança, entre outros.

Falando sobre Oracle, não podemos deixar de mencionar o Oracle Database. O que seria do mundo sem ele? Tem toda a consistência que o um software pago deve ter. Com alguns critérios que é necessário obedecer. Suporte é pago, documentação escassa, configuração complexa. Mas, lembrando, é Oracle. A Oracle divide seu produto em pacotes, cada pacote custa em torno de 40% a 60% a mais que o anterior. O custo das licenças é altíssimo, sem falar no suporte (caso a empresa não tenha condições de contratar um DBA Oracle).

Quero comparilhar uma história com vocês. Foi necessário efetuar a compra de um software, o qual usava Oracle como banco de dados. A mesma empresa que vende o software vende as licenças do Oracle e também o suporte. Fica tudo a cargo deles, instalação, configuração e manutenção. No linux, em dado momento, alguns valores do sistema operacional são modificados, questionou o técnico em base de que situações ele tirou aqueles valores. A resposta foi: “Não sei. Na realidade a própria Oracle, no site, recomenda que seja feito assim”. E sim, senhores, os mesmos valores que ele configurou na instalação estão no site da Oracle. Mas a questão final é como que ele não sabe porque fazer aquelas alterações? Da onde surgiram aqueles valores? Cada sistema/configuração/servidor é um caso diferente, não seria interessante validar esses valores encima dessa situação?

Tentei procurar o porque daqueles valores, mas não existe documentação. Assim como não existe benchmarking de Oracle. Você já viu alguma comparação de Oracle com outros bancos de dados? Eu procurei, não achei. Mas descobri que as pessoas que fazem benchmarking do banco e publicam são processadas pela Oracle (que tipo de empresa faz isso?). Dizem que está em contrato, não procurei. Claro que assim fica fácil vender um sistema, não tem como comparar com outros.

Será que vale a pena pagar por um software sendo que você pode ter outro fazendo o mesmo (ou até mais), de graça?

Muitos irão dizer que sim. Afinal, 47% do mercado usa Oracle Database.
Eu digo que não. O Postgres, que surgiu como projeto de Faculdade, agora preparando para lançamento da versão 9, é um software que está em grande crescimento, sendo usado por grandes empresas (Podemos citar a Apple, Skype, Caixa, Detran entre outros vários orgãos do governo) e também como ferramenta de ensino de Banco de Dados e modelagem.

Quanto ao Postgres só tenho uma reclamação: Multi-master. Sabemos que não é fácil, ainda mais quando elucidado a questão por inteiro no post “A lenda da replicação Multimaster“.

Talvez você ache que o Postgres não seja tudo isso. Uma coisa eu tenho certeza: o Postgres pode suprir todas as suas necessidades.

pixel O Melhor Banco de Dados: Postgres?

29 Comments to O Melhor Banco de Dados: Postgres?

  1. 22/03/2009 at 06:51 | Permalink

    Não conheço postgres mas sempre tive vontade de conhecer … esse post só me aumentou essa vontade … mas ó … que fique registrado que na minha visão é meio complicado definir um banco como o melhor sem conhecer os concorrentes … ;)

    []s

  2. 22/03/2009 at 06:52 | Permalink

    só um toque … acho q a data do seu server tá errada … hj é domingo 22!

  3. Pedro Delfino's Gravatar Pedro Delfino
    23/03/2009 at 06:14 | Permalink

    Valeu Rafael

    ótima PARTICIPAÇÃO …

    Estou vendo que teremos boas novidades do postgres …

    Na verdade, eu tenho mais facilidades pra instalar o mysql porque no ubuntu é só digitar

    $sudo apt-get install mysql-server

    e para acessar:

    $mysql -u root -p

    em fim, mysql é o básico mesmo …

    Postgres é um cara com mais peso.

    Valeu …

  4. 23/03/2009 at 10:37 | Permalink

    Concordo com autor,
    Para mim o postgres também é o melhor SGDB que existe OPEN-SOURCE, não posso dizer que é melhor do que o ORACLE porque ainda não mexi com ele ainda mas hoje nem quero.

    Quanto o MYSQL algumas pessoas dizem para que eu faça os testes pelo menos, ai tenho que responder que para fazer testes tem o SQLite que é muito bom para isso. :)

    Já trabalhei com MYSQL, SQL Server (um lixo), Firebird, SQLite, PostgreSQL este foi o que mais me surpreendeu e minha escolha quando tenho opção.

    pg_dump, pd_restore, pg_admin, alguns dos carinhas que tenho usar para trabalhar com postgres que são de facil acesso e pouco traumaticos em sua utilização.

    Abraços.

  5. 24/03/2009 at 17:17 | Permalink

    Trabalho há anos com o PostgreSQL e já trabalhei com Oracle por algum tempo também. Realmente, a maioria das aplicações que os usuários pagam um caminhão de dinheiro por um Oracle, poderiam ser substituídas com folga por bancos PostgreSQL.
    A maioria dos usuários usa Oracle por causa de uma garantia de suporte e para alguém para culpar se algo der errado. O pior é que por causa dessa garantia de suporte, muitos ficam amarrados a versões antigas de outros software, por ser a versão que está coberta pela garantia da Oracle.
    As grandes vantagens que eu utilizava no Oracle aos poucos foram aparecendo nos SGDBs livres, e sempre primeiro no PostgreSQL. Porém uma coisa que, para alguns usos, o Oracle se mantinha líder era processamento distribuído de queries, o que com achegada do SkyTools, que o pessoal do Skype usa com o PostgreSQL, o PostgreSQL parece estar alcançando também. Infelizmente ainda não usei o SkyTools, mas planejo estar usando em breve para prova de conceito.

  6. 24/03/2009 at 18:04 | Permalink

    Já eu me sinto estranho utilizando o PostgreSQL, mas me sinto à vontade usando o MySQL.

    Não que eu ache o PostgreSQL ruim, mas entendo melhor o esquema do MySQL.

  7. Davi's Gravatar Davi
    25/03/2009 at 02:51 | Permalink

    Como dizia um velho amigo meu, o melhor banco de dados é aquele que você conhece e que nunca vai de deixar na mão. Se você quiser (vender) o PostgreSQL para quem quer e (precisa) de Oracle, certamente você será ridicularizado. Ainda bem que existem diversas opções no mundo que alimentam uma competição saudável. Já participei de um projeto onde o cliente gastou certa de R$ 1.000.000,00 para montar hardware + software para um mega sistema com 2.000 tabelas e pasme, sem nehum plSQL ou similar, view ou segurança, todos conectando a partir de um login único chamado sa. Parabéns para ele que dorme feliz todas as noites achando que fez um bom negócio, e parabéns para você que achou no postgres a mesma felicidade. Só para constar eis a minha lista de favoritos:
    1. PostgreSQL
    2. MySQL
    3. SQLITE
    4. DB2
    5. O Resto…..

  8. Gustavo's Gravatar Gustavo
    25/03/2009 at 03:40 | Permalink

    Sinceramente, uso o Firebird, e me atende perfeitamente, e não sei pq não é mencionado ou posicionado bem num ranking como um banco bom ! Mysql acho bem chatinho ! Tenho curiosidade em conhecer o PostgreSQL e vou conhece-lo !

  9. Rafael's Gravatar Rafael
    25/03/2009 at 03:55 | Permalink

    Obrigado a todos pelos comentários. Acredito que o debate “Qual é o melhor banco?” nunca terminará, pois como disse nosso colega: “O melhor banco de dados é aquele que você conhece e que nunca vai te deixar na mão”.

    O SkyTools foi muito bem desenvolvido pelo pessoal da Skype, e pelo que eu li, faz muito bem o que promete, mas eu nunca consegui testar. Tá na minha lista de próximos softwares a bater em cima até conseguir fazer funcionar.

    O Firebird já foi um péssimo banco. Travava toda hora, não tinha poder de processamento, os backups não tinham nenhuma garantia. Para você ter idéia, conheço pessoas que preferiam o Access ao Firebird.
    Na empresa aonde trabalho, tínhamos um serviço que pedia o Firebird como banco de Dados. A Cada 1 mês era necessário fazer uma limpeza do banco porque senão o serviço começava a ficar lento.
    A versão mais recento do Firebird, a 2.1, está bem melhor que as anteriores. Sendo mais estável mais pessoas optaram por seu uso.
    Mesmo assim, ele não tem nenhum recurso inovador, a não ser queryes recursivas que está sendo implementando na versão 8.4 do Postgres.

    É isso ae pessoal. Vamos “Banquear”

  10. Ruy Minoru Ito Takata's Gravatar Ruy Minoru Ito Takata
    25/03/2009 at 03:59 | Permalink

    Meu professor de banco de dados falava nas aulas…
    “Qual melhor SGBD???
    Depende da necessidade.

    Qual o melhor carro???
    Depende da necessidade.
    Você vai fazer uma viagem longa em uma estrada de pista dupla muito bem pavimentada ou vai fazer um rally???
    Qual o melhor SGBD???
    Depende.”

  11. Valmir's Gravatar Valmir
    25/03/2009 at 04:23 | Permalink

    Acho que o cara aí ficou ofendido…rs
    Relaxa…

  12. Renato's Gravatar Renato
    25/03/2009 at 04:41 | Permalink

    Eu testei vários bancos de dados para minha aplicação e a que mais se adaptou-se foi o MySQL, não vou dizer que um é melhor do que o outro, acredito que todos tem o seu valor, vejo pelo lado de qual será mais útil para sua aplicação e demais atributos.

    Outra coisa, quem estiver cansado de usar o Terminal do MySQL, pode-se utilizar o SQLyog MySQL GUI é uma ferramenta que fornece bastante funcionalidade em administração de Banco de Dados MySQL, site: http://www.webyog.com/en/index.php

    E para quem quiser saber quem utiliza MySQL, empresas de peso: Entre os usuários do banco de dados MySQL estão: NASA, Friendster, Banco Bradesco, Dataprev, HP, Nokia, Sony, Lufthansa, U.S Army, US. Federal Reserve Bank, Associated Press, Alcatel, Slashdot, Cisco Systems, CanaVialis S.A. e outros (fonte Wikipedia)

  13. Omar's Gravatar Omar
    25/03/2009 at 04:51 | Permalink

    Concordo que Postgres é um grande SGDB, mas será que aguentaria uma imensa carga de transações on-line sem abrir o bico igual a um banco de dados Oracle?

    Realmente pode ser que cada caso é um caso…

    No mais, a matéria está muito boa, por iss gerou tanto debate.

  14. 25/03/2009 at 04:53 | Permalink

    O pior de tudo é falar que um produto “A” é melhor que “B”, sem trabalhar ou realmente conhecer “B”, como no caso do Oracle…

  15. Interessa sim!'s Gravatar Interessa sim!
    25/03/2009 at 05:35 | Permalink

    Concordo com o “Interessa?”!

    Pois um DBA para criticar um determinado SGBD tem que no mínimo conhecer o que ele oferece ou não, em termos de ferramentas, funcionalidades, desempenho e por ai vai. Não postar um artigo totalmente parcial.

    Escreva um post mais tecnico, onde podemos trocar informações embasadas. Este post foi polemico pela ignorância do autor de escrever por escrever.

  16. 25/03/2009 at 08:32 | Permalink

    Também concordo com um post acima que diz que cada banco tem sua finalidade… Generalizar que não é legal !!! É o mesmo que dizer: “todo windows é uma bosta, todos linux é ruim, toda maquina HP é podre, etc…. a melhor linugagem do mundo é java, ou ruby, ou cobol”…

    Por isso: “nunca…mas nunca generalize” :-)

  17. Diego's Gravatar Diego
    25/03/2009 at 09:16 | Permalink

    Concordo plenamente contigo.
    Trabalho a muitos anos com PostgreSQL e a administração dele além de ser fácil e rápida, é muito eficiente.
    Não perde em recursos para nenhum banco, e tem um recurso que nem o “rei” Oracle tem, que é possibilidade de transação na criação/alteração/exclusão de objetos (tabelas, triggers, functions, bases de dados e etc)
    Abraços!

  18. Rafael Domiciano's Gravatar Rafael Domiciano
    26/03/2009 at 03:53 | Permalink

    Acontece que eu momento algum afirmei que o Postgres é o melhor banco. Afirmei, sim, que ele pode suprir todas as necessidades.
    Acredito que o Postgres é um dos poucos bancos que mais cresce no mundo, mas isso não quer dizer que outros SGBDs não tenham seu mercado e seu próposito.

    Concordo que determinado SGBD pode ser melhor numa tarefa específica (como Internet, BI, Datamining…) do que outro SGBD. Em nenhum momento eu falei que esses bancos não são bons o suficiente para determinadas tarefas.

    Veja, o X do Post é que o Postgres é suficiente para suprir todas as necessidades que um software precise; não que o Postgres é o melhor banco de Dados, ou melhor que banco “B” ou “C”.

    Afirmo, novamente, que a discussão “Melhor Banco de Dados” nunca irá terminar, pois varia de gosto a gosto, experiência a experiência.

  19. Manoel B H Carvalho's Gravatar Manoel B H Carvalho
    26/03/2009 at 05:52 | Permalink

    “MySql, da Sun, auto-intitulado “The world’s most popular open source database” (O Banco de Dados Open-Source mais popular do mundo). E eu recebo várias críticas por causa disso.”

    Mas é verdade, não sei porque você recebe críticas. Estima-se que há mais de 11 milhões de instalações de MySQL por todo o mundo. Práticamente todas as hospedagem web oferecem o mysql.

    “Não consigo executar comandos via bash.”

    Quais comandos você não consegue executar via bash?

    Sinceramente Rafael, eu adoro o postgres também. Acho que faltam boas ferramentas para ele. O MySQL tem seus defeitos, seu bugs, mas é um puta banco também. Em benchmarks, o postgresql não costuma ficar nem na frente do Mysql, nem do Oracle. Assim como vc não entende o “explain” (que eu acho simples), eu não entendo o porque de tanto auto-vacuum do postgresql (que pra vc deve ser simples). Essa questão de “melhor banco opensource” é muito relativa, tanto quanto mostrada no seu texto. Uma vez que você tenha uma certa experiência num banco, e quase nada no outro.

  20. Eduardo's Gravatar Eduardo
    26/03/2009 at 09:20 | Permalink

    Cara, sem querer ofender, mas sendo sincero. Na boa. Quem é você para dizer que o Postgres é o melhor banco de dados e ponto final? Me pareceu uma declaração leviana.

    Esse tipo de informação é pesada, e só pode ser aceita se for feita por alguém de peso.

  21. anonimo's Gravatar anonimo
    27/03/2009 at 18:17 | Permalink

    Pessoal, vocês pegam pesado ao dizer que o PostgreSQL não se compara ao Oracle ou algum outro de nome, isto é preconceito. Vejam http://www.youtube.com/watch?v=XDV2ABbzhVY

  22. 16/04/2009 at 13:50 | Permalink

    Esses caras pararam na decada de 90… PG eh mto mais avancado q oracle… oracle eh historia…

    Mas tomara q tu continue ae no oracle, e provalvemente…hmm java ou .net .
    Desejo o bem pra ninguem mais…

  23. Up The Irons!'s Gravatar Up The Irons!
    01/08/2009 at 08:54 | Permalink

    Eh impressionante como o povo veste a camisa.
    Sou programador C#, vi q tem gente q acha o SQL Server um lixo, eu n visto camisa de nenhuma empresa assim, e acho o SQL Server muito bom, e n vi ferramenta de administração do banco igual ao Management Studio.

    Por outro lado, gosto muito do Java tb, ao contrário de muitos q gostam apenas de uma linguagem/plataforma, e qdo conheci o Java, conheci tb o Postgre, q gostei muito tb.

    O que penso é: Se a empresa n pretende trab com linux, n vjo pq n ter como plataforma o .Net e como banco de dados SqlServer, caso contrário, o Java é uma ótima alternativa e neste caso eu optaria pelo Postgre.

    Isso é um resumo muito resumido do que acho, mas o que eu quero dizer é, há casos e casos, essa coisa de melhor nem deveria ser discutida, pq eu só vjo nego descendo pau num ou noutro, mas seria bom se quem faz isso conhecesse a fundo os dois lados da história, eu por ex. estudei um pouco do Oracle tb, n gostei, mas dizer que é ruim, não, pelo amor de Deus, é ótimo, só n é minha preferência, apesar de algumas coisas em comum, prefiro o Postgre.

    É mais ou menos isso. :D

    []s

  24. 05/06/2010 at 23:14 | Permalink

    Rafael, eu achei bacana a iniciativa do artigo e ainda mais ser citado nele. No entanto, ao fazer uma crítica à outro SGDB, você tem quer ser mais cuidadoso. Você cometeu alguns equívocos graves. Quando um DBA Oracle lê isso, você faz com que um profissional qualificado que poderia experimentar o Postgres ou outro SGDB livre ignore completamente esta possibilidade:

    1) Existe documentação farta sobre Oracle. Muito farta mesmo. Veja: http://www.oracle.com/technology/documentation/index.html

    2) Existem testes de performance sim, os testes do TPC: http://tpc.org/. Ok, realmente é proibido publicar resultados de benchmark com bancos Oracle. Eu concordo com a crítica, mas da forma como você escrever, desqualifica a sua abordagem.

    O PostgreSQL é um SGDB muito versátil, mas não é o mais indicado em todas as situações. Em sistemas embarcados por exemplo, o Firebird leva a melhor. Em apliances, BDB. Sistemas monousuários, SQLite.

    É bom ver que temos fãs do Postgres na web, mas o cuidado ao fazer críticas deve ser maior. E se você ler o meu blog, verá que eu realmente gosto do Postgres, o suficiente para lhe fazer jus pelos seus méritos sem esconder suas fraquesas.

    Um grande abraço,
    Fábio Telles

  25. Carlos Zudoski's Gravatar Carlos Zudoski
    08/06/2010 at 11:18 | Permalink

    Amigos, pra começo de conversa, não adiantas os fãs dizerem que postgreSQL é o top, isso não existe. Cada SGBD tem suas particularidades.

    No mundo software livre o que tem mais destaque é o MySQL indiscutivelmente, e é usado em missões críticas, inclusive o Bradesco, wikipedia etc. Inclusive a Sun Microsistem pagou uma quantia bem alta pelo o MySQL U$ 1 bilhão. O mais alto valor já pago por um software livre.

    Agora não podemos de maneira alguma comparar com Oracle, pois Oracle é Oracle, já tem nome, tem suporte de peso, dá tranquiliade aos desenvolvedores assim como os empresários. Embora seja pago Oracle é pai dos SGBD e isso não se questiona ele é o melhor! Se é complicado “mexer”, ora Oracle não coisa pra menino, a sua diversidade é tamanha que somente cursos especializados para entender o que é Oracle.

    Comparar Oracle com PostgreSQL é como comparar Dollar Americano com Reais Brasileiros, é uma comparação pífia, no máximo que se pode fazer é compará-lo ao MySQL.

    Já o MySQL tem crescido muito, é tão notório que a Oracle comprou Sun Microsystem para conseguir dominar também no software livre.

    Vejo o seguinte, a Oracle estava e está perdendo terreno para o MySQL. MySQL comia pela as beiras o biscoito das gigantes e isso incomodou a mãe. Ela sabe que não se pode vencer um software que é livre, bom e de graça e muito popular entre os “amadores”, então o velho ditado vale “se não poder vencê-lo, compra-se”, e fim de conversa.

    Um abraço

  26. AlanM's Gravatar AlanM
    19/06/2010 at 09:09 | Permalink

    Sou muito leigo no assunto, acabei de ler uma critica pesada pra cima do Oracle!
    Sei que ele é muito usado!
    Mas todo mundo sabe que não é o banco de dados e sim o que o DBA é capaz com ele!
    MySQL é inseguro para quem não sabe lidar com ele, e nem como se proteger!
    Meu conhecimento sobre o assunto é baixo , mas o que falei assima serve para qualquer debate, linguagem de programação etc…
    Diga me qual o Banco de dados que o google usa, que te direi qual o melhor banco de dados que existe!
    ABS!

  27. AlanM's Gravatar AlanM
    19/06/2010 at 09:11 | Permalink

    “assima” -_-’ pressa!

  28. BILL's Gravatar BILL
    13/08/2010 at 15:32 | Permalink

    em minha empresa usamos access, e seguro, pois podemos setar senha

  29. 16/08/2010 at 11:08 | Permalink

    Senhores, comparar Oracle com MySQL é comparar melancia com cachorro. São coisas diferentes. Você não colocaria um MySQL para rodar um SAP ou outro ERP que exija muito OLTP. Também não valeria a pena colocar um Oracle para rodar um blog na web. São Coisas diferentes. O PostgreSQL tem um perfil muito mais próximo do Oracle do que do MySQL. Embora o PostgreSQL seja muito mais leve que o Oracle, ele tem características que o aproximam do seu perfil, assim como o perfil do DB2.

    Agora, dizer que Oracle é Oracle… é fazer uma discussão rasa, sem argumentos. Eu sou DBA há 8 anos procuro escolher a ferramenta certa pra o problema certo. O Oracle não é o pai dos bancos de dados. O pai dos bancos de dados é o CODASYL. Se quiser falar em bancos de dados relacionais, o pai é o System R, que depois mudou de nome e se tornou o DB2. O Oracle e o Ingres são contemporâneos do System R.

    Tomem mais cuidado com as suas afirmações. O pessoal aqui trata tecnologia como time de futebol ou religião. Não é assim que funciona. Também ser o maior não significa ser o melhor, a história está aí para comprovar com inúmeros exemplos. O MySQL é o banco de dados mais popular, a Oracle é a que tem a maior Market Share.

    O velho DB2 é ainda tido como o mais confiável, rodando nos velhos mainframes da IBM. Pergunta quem aguenta o tranco de I/O que aqueles carinhas aguentam?

    E em Data Warehouse? O lider aí é a Teradata, conhecem? O mercado de bancos-de-dados é bem mais complexo do que parece. hehehe

Deixe um comentário

Você pode usar estas tags HTML e atributos: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>