Oracle X PostgreSQL – Parte III: Vantagens do PostgreSQL

Parte I – Semelhanças

Parte II – Vantagens do Oracle

  • Suporte: Eu sei, a Oracle possui suporte. Mas como todo suporte de software proprietário, é um monopólio. Você não tem opção. Se quiser ter acesso ao patches de correção, tem que chamar a Oracle. Se quiser que alguém decifre o que tem nos arquivos de trace binários tem de chamar a Oracle, e por aí vai. Com o PostgreSQL você pode contratar qualquer empresa que possui em seu quadro de funcionários desenvolvedores que você provavelmente estará em terreno seguro. Você pode contratar a Timbira que possui ótimos desenvolvedores do PostgreSQL na sua equipe. Se não gostar da gente, contrate outra. É só entrar no site PostgreSQL e escolher uma. E se você acha que precisa ter alguém para processar quando der tudo errado, saiba que na licença de uso da Oracle ela não se responsabiliza por dados pelo seu uso. Se quiser, vai lá e tenta processar a Oracle, boa sorte.
  • Custo: Não é apenas o custo da licença do Oracle que é alta, senhores. É todo o ecossistema: suporte, cursos, certificação e tudo o mais. Alguém tem que pagar os eventos, propaganda, projetos naufragados, “verbas de representação”, aquisições e outros custos que vão muito além do desenvolvimento do software em si. Certo dia recebemos um vendedor da Oracle que demonstrou para o cliente o Exatada. O hardware (ou “a lata” como eles diziam) custava apenas alguns minhões, mas as licenças do Oracle, muitos milhões! Só para lembrar, custo com treinamento e suporte você tem com qualquer um.
  • Leveza: Você consegue rodar o PostgreSQL no seu vídeo-game, ou em alta plataforma. Você escolhe. Isso confere uma flexibilidade muito grande. Muita gente instala o PostgreSQL embarcado junto com a aplicação e o cliente mal sabe que existe um banco de dados lá. Você não vai ver pessoas usando o Oracle em appliances por exemplo.
  • Simplicidade:  As coisas podem ser simples e intuitivas. Você instala o PostgreSQL em qualquer máquina em segundos. Se quiser compilar e enfeitar um pouco, não leva mais do que 5 minutos. Criar uma base, renomear e operações assim são quase instantâneas. Muitas vezes testei uma nova funcionalidade sem sequer ler documentação. Simplesmente funciona do jeito que você imagina que deveria funcionar. Compare o uso do psql com o SQL*Plus, e você irá concordar comigo.
  • Liberdade: A licença BSD é uma das licenças mais livres que existem. Você pode inclusive fechar o código do PostgreSQL, e muitas empresas de fato o fazem. Até a Oracle pode usar o código do postgres se desejar. Assim como o Windows e o MacOS usam código do FreeBSD. A única limitação é citar de onde o código original vem. No Oracle você tem uma licença de uso. Não é qualquer um que pode usar o Oracle e não é para qualquer coisa. Você não pode sequer publicar um teste de desempenho usando  Oracle sem autorização prévia. Sério.
  • Particionamento: Sim, o particionamento no PostgreSQL não é simples e tem vários problemas. Mas tem vantagens em relação ao Oracle também. No Oracle, se você precisar particionar uma tabela já existente, vai ter que reconstruir isso do zero. Isso significa abrir uma boa janela de manutenção para fazer isso. O PostgreSQL consegue particionar uma tabela com o sistema em pleno voo, aos poucos e de forma bem flexível. Outra questão é na hora de fazer um expurgo de uma partição com o DROP. No Oracle você tem que desabilitar as FKs apontadas para ela antes de fazer isso.
  • PLs: Praticamente todo banco de dados tem uma Procedure Language embutida. O PostgreSQL, além do C, possui o PL/pgSQL, que é baseado no PL/SQL do Oracle. Mas a brincadeira vai muito além disso, você pode usar as linguagens mais comuns como PL/Python, PL/PHP, PL/Java, PL/Perl, PL/sh ou coisas mais específicas como PL/R, PL/LOL entre outros.
  • Foreign Data Wraper: A habilidade de se comunicar com o universo nunca foi tão importante. Os grandes e pesados bancos de dados deixam pouco a pouco de ser o centro da aplicação. Outras bases entram em cena e a comunicação entre aplicações é regra hoje em dia. Claro que a Oracle possui o famoso Gateway, um das raras opções do Oracle que podem ser adquiridas para quem tem uma versão Standard do Oracle. Mas o FDW se mostra uma opção mais simples, robusta e flexível. A infraestrutura existente não só permite o PostgreSQL se comunicar com praticamente qualquer coisa, como também permite que em apenas poucas horas de trabalho em C, você crie um conector novo para uma situação diferente.
  • Extensibilidade: O PostgreSQL possui vários níveis de extensibilidade: Você pode criar uma nova funcionalidade e mandar para a equipe de desenvolvimento e incluir esta nova funcionalidade no código do PostgreSQL. Assim, quando uma nova versão for lançada, seu código irá vir junto. É comum algumas empresas encomendarem o desenvolvimento de novas funcionalidades e elas depois fazerem do conjunto. Dependendo do caso, esta funcionalidade pode entrar como um módulo separado e opcional, mas ainda assim distribuído em separado na pasta contrib. Estas funcionalidades são conhecidas como extensões, assim como as extensões do seu navegador. Mas qualquer um pode criar uma nova extensão e publicar no PGXN, que é uma rede de extensões para o PostgreSQL que podem ser instaladas apenas com um comando “CREATE EXTENSION”. Este é um cenário simplesmente inimaginável no Oracle. Claro, só ecossistemas baseados em Software Livre conseguem este tipo de proeza. E o PostgreSQL tem realmente uma comunidade vibrante neste sentido.
  • ISO SQL: Já foi-se o tempo em que eu confiava nas decisões tomadas pelo comitê do ISO que cria as norma. No entanto, ter um padrão ruim é sempre melhor que não ter nenhum. O PostgreSQL segue bem o padrão e prima por fazê-lo o tempo todo. O Oracle foge bem disso, embora algumas coisas tenham melhorado nos últimos tempos, não é cultura dos usuários do Oracle utilizar as opções que são padrão ISO.
  • Tipos de dados: Isto é uma das coisas mais inexplicáveis da Oracle em minha opinião. Não possuir tipos de dados como INTEGER ou BOOLEAN. Os formatos de data são bem confusos. O campo do tipo DATE guarda data e hora. Não existe um tipo de dada TIME. O tipo INTERVAL se subdivide em dois subtipos YEAR TO MONTH e DAY TO SECOND. O PostgreSQL possui uma infinidade de tipos, inclusive alguns muito úteis como  ENUM, ARRAYs, tipos de intervalo, geométricos, HSTORE, entre outros. A Oracle possui uma variedade maior de dados dentro do PL/SQL, mas para armazenar em tabelas e utilizar em SQL puro não. Daí você já vai vendo a confusão e as limitações que isso implica.
  • DDL transacional: Todo comando DDL gera um COMMIT implícito no Oracle. Isto complica muito o deploy de novos objetos e algumas rotinas mais complexas. No postgres, qualquer CREATE, DROP ou ALTER é transacional e você pode fazer um ROLLBACK à qualquer momento.

Compartilhe

Você pode gostar

Sobre minha saída da Timbira

Há 14 anos, durante o PGConf.Brasil 2009, lá na UNICAMP em Campinas/SP, 4 pessoas se reuniram e idealizaram a criação da primeira empresa dedicada exclusivamente

Split brain

Já tem algum tempo que eu pensava em fazer isso e chegou a hora. Este blog vai se dividir em 2 partes a partir de

plugins premium WordPress