Parte II – Vantagens do Oracle
Parte III – Vantagens do PostgreSQL
Em 2007, escrevi 2 textos falando sobre as vantagens do Oracle sobre o PostgreSQL e vice-versa. Naquela época, minhas observações foram baseadas no Oracle 10.2 e PostgreSQL 8.2. Depois disso a Oracle lançou as versões 11.1, 11.2 e 12.1. O PostgreSQL lançou o 8.3, 8.4, 9.0, 9.1, 9.2, 9.3 e 9.4. Enfim, muita coisa mudou de lá para cá… a febre da Internet não passou e trouxe a onda no NOSQL para a mesa. Eu também mudei bastante, amadureci muitas opiniões e acho que está mais do que na hora de retomar este assunto. Outra coisa que preciso dizer para o leitor que não me conhece é que este texto não é imparcial. Sou um defensor do PostgreSQL, mas trabalho há 12 anos com Oracle também e reconheço algumas fraquezas e vantagens de um e de outro. Mas em nenhum momento aqui vou enganar o leitor me fazendo crer imparcial. Os comentários estão aí para você complementar ou corrigir qualquer informação que julgar relevante. Apenas peço o de faça de forma educada.
Para começar, devo explicar que para mim não faz muito sentido comparar o PostgreSQL com bases NOSQL ou com MySQL. São produtos com fins diferentes. Talvez comparar o PostgreSQL com o SQL Server faça mais sentido, mas o mais próximo que temos, sem dúvida é o Oracle mesmo. Vejamos aqui algumas semelhanças entre ambos que os tornam próximos:
- Origens semelhantes: No começo da década de 70 a IBM publicou os primeiros documentos que mais tarde dariam origem ao System R (que por sua vez dariam origem ao DB2) escritos pelo Sr. Edgar Frank Codd, dois grandes projetos fora da IBM se iniciaram seguindo suas publicações.
- Em 73, na universidade de Berkeley o Sr. Michael Stonebraker junto com alguns coletas começaram a desenvolver o Ingres. O Ingres seria a base de muitos outros bancos de dados relacionais como O Sybase e o SQL Server. Em 1985, ainda em Berkeley, o sr. StoneBraker decide começar do zero uma nova versão do Ingres chamada Postgres, incluindo novos conceitos como orientação a objetos.
- Em 77, o Sr. Larry Ellison se juntou com alguns amigos para criar o Oracle. Em 79 lançam a primeira versão do banco de dados relacional que mais tarde viria a se tornar o líder de mercado, à frente até mesmo do DB2 da IBM que cunhou o padrão SQL.
- Ambientes semelhantes:
- Tanto o Oracle quanto o PostgreSQL praticamente nasceram em ambientes UNIX. Ambos até hoje tem como ambiente primário este ambiente até hoje: LInux e Solaris para o Oracle e Linux e FreeBSD para o PostgreSQL.
- Ambos possuem versões para rodar em outros sistemas operacionais, inclusive o Windows. Notavelmente o PostgreSQL roda até em videogames.
- Ambos foram escritos em sua maior parte em C.
- Ambos possuem um ótimo suporte a transações já nas primeiras versões e levam até hoje muito a sério os requisitos do ACID. Sendo assim, são bancos de dados muito confiáveis e que levam muito a sério a questão da consistência dos dados. Este não é o caso do MySQL ou do NOSQL.
- Ambos trabalham há muito tempo com o conceito de MVCC, tão caro à bases transacionais e ambientes de alta concorrência, onde o fato de você estar alterando um registro não impede que a versão não alterada do mesmo seja lida em outras sessões até que a transação atual confirme a alteração em andamento (read commited).
- Ambos são extremamente robustos e trazem há muito tempo o conceito de Point In Time Recovery. Isto permite que um backup antigo possa rolar para pontos no tempo posterior ao backup utilizando cópias dos logs de transação (conhecidos como archives) até um ponto no tempo específico. Ou seja, se você fizer seu backup corretamente, a perda de dados em caso de desastre é muito pequena.
- Ambos implementaram um rico arcabouço de funções e linguagens de programação procedural embutida no banco de dados. O Oracle criou o PL/SQL e as suas funções em C enquanto o PostgreSQL copiou esta linguagem e criou o PL/pgSQL e mais uma infinidade de outras como PL/Python, PL/PERL, C e outras mais.
- Ambos possuem ótima performance em ambiente OLTP, Data Warehouse (ou BI) e mistos. Assim conseguem um bom desempenho em variadas situações.
- Ambos tem a capacidade de trabalhar com ambientes severos, seja com bases ou objetos com grande volume de dados, grande volume de transações ou alta concorrência;
- Ambos são bastante seguros. Patches com correções de segurança são liberados com frequência e as eventuais falhas são corrigidas. Ambos se preocupam muito com a questão e tem mecanismos bem robustos para evitar ataques externos, injeção de SQL e outros perigos.