PostgreSQL 8.3 o banco de dados livre mais avançado do mundo!

O PostgreSQL 8.3 foi lançado. Demorou mais que o dobro do que se esperava. Sim… a expectativa inicial eram de 6 meses até o lançamento. Mas não há motivo nenhum para se ficar triste. 2007 foi um ano excepcional para o PostgreSQL.

Vamos começar simplificando as coisas, agora é correto chamar o PostgreSQL de Postgres. Segundo a documentação oficial:

Many people continue to refer to PostgreSQL as “Postgres” (now rarely in all capital letters) because of tradition or because it is easier to pronounce. This usage is widely accepted as a nickname or alias.

Particularmente eu me acostumei a falar e escrever “PostgreSQL”. Dá mais trabalho e é mais enrolado. Mas além disso, “Postgres” parece ter mais força, causa menos confusão (com pessoas que acabam usando “Postgre” ou “Postgree”). Comercialmente também parece soar melhor, :-) .

Bom, antes de falar sobre a versão 8.3, eu gostaria de mostrar alguns detalhes interessantes sobre como o Postgres passou por 2007. A comunidade cresceu, não apenas em número, mas em qualidade. Após a explosão populacional causada pela versão do Postgres nativa para o Windows, houve um crescimento numérico em usuários do Postgres, mas a sua comunidade caiu notavelmente em termos de nível técnico. 2007 pareceu recuperar o fôlego. Veja alguns detalhes interessantes:

  • O planet postgresql cresceu em número de participantes e número de artigos;
  • No Brasil também surgiram alguns blogs novos sobre PostgreSQL como o PG Viável e o Meu Blog de PostgreSQL;
  • O número de companhias contribuindo diretamente com código aumentou, como a Sun e a Skype;
  • O número de projetos no Pg Foundry também aumentou muito (hoje conta com mais de 260 projetos). Eles estão mais ativos também, com varias novas versões de projetos sendo lançadas toda semana.
  • O número de eventos em que o Postgres esteve presente ou de eventos dedicados exclusivamente ao Postgres também explodiu.
  • Foi criado o Postgres OnLine Journal;

Tudo muito bonito… mas chegou a hora do “Show me the code”! Sim, sim, vamos ao que realmente interessa. Vou começar mostrando um teste de performance criado quando o PostgreSQL ainda estava na sua fase Beta.

Postgres 8.2 x 8.3

Antes de dizer qualquer coisa, você precisa entender que o teste foi feito numa condição muito específica:

  • Uso do pgbench que realiza uma carga semelhante ao TPC-B, que é uma carga transacional que visa simular um ambiente OLTP;
  • As tabelas forma ajustada para um fator de escala de 100, o que equivale a um volume de 10 milhões de linhas;
  • 100 conexões ativas simultâneas;
  • 10 milhões de transações;

Isto demonstra um cenário bastante específico. Se você esperar um ganho de performance em pequenas aplicações, você certamente não encontrará ganhos de performance tão significativos. Mas o cenário utilizado é muito importante, pois é semelhante a um ambiente corporativo, onde temos aplicações com um grande volume de dados sendo alterado por muitos usuários simultaneamente. Este é um cenário bastante difícil de lidar. Bancos de dados menores certamente sofrerão amargamente neste cenário.

Quando a versão 8.0 foi lançada, uma série de novas funcionalidades importantes marcaram a transição da série 7.x para a série 8.x . Além das novas funcionalidades que tornam a vida do desenvolvedor mais fácil (ou funcionalidades que melhoram a usabilidade) notou-se um aumento significativo nas opções de segurança (PITR, Stand By, etc) e de desempenho (Tablespaces, Particionamento, AutoVacuum, etc). Com a versão 8.3, estas novas funcionalidades atingiram um bom grau de maturidade. Ao comparar a versão 7.4 com a versão 8.3, você verá um salto enorme atingido em apenas 4 anos. Veja a matriz de comparação de funcionalidades para ter uma idéia do que foi realizado.

Ao olhar a última versão do Oracle 11g, percebe-se um aprimoramento notável nas ferramentas de gerenciamento do SGBD. As ferramentas de gerenciamento do Oracle 11g são realmente invejáveis. No entanto, quando pensamos em desempenho, não vemos um aprimoramento significativo. O mesmo aconteceu na transição da versão 9i para o 10g.

Por outro lado, o Postgres tem dado saltos enormes em termos de desempenho e ainda possui ferramentas pouco sofisticadas. A questão é que o desempenho do Postgres deve ultrapassar o do Oracle rapidamente. Uma pergunta que muitos devem estar se fazendo é se ele já não passou com o lançamento do 8.3! De toda forma, isto deverá ser o suficiente para atrair novos investimentos em torno do Postgres, fazendo com que mais empresas ofereçam ferramentas de gerenciamento para o Posrgres. O time principal do Postgres não desenvolve nenhuma ferramenta de gerenciamento além do psql. O resto fica a cargo de outros projetos de software livre ou de empresas que oferecem ferramentas proprietárias.

O Postgres tem simplificado o trabalho para muita gente. Migrar para ele está cada vez mais fácil. Além de incorporar funcionalidades e sintaxes semelhantes as do Oracle, o mesmo tem acontecido com o MySQL, com a introdução do tipo de dados ENUM, por exemplo. Chegou a hora de começar a comparar o Postgres e o MySQL mais de perto. No entanto engana-se quem pensa que o Postgres adota padrões exóticos de vários SGDBs se tornando uma colcha de retalhos. O Postgres concentra a maior parte dos seus esforços em trazer funcionalidades de acordo com o padrão SQL. Isto significa que o Postgres é uma excelente opção para aqueles que estão preocupados com a portabilidade também.

Bom… se você não testou o Postgres 8.3, vá correndo testar. Se já testou, você já pode ir vendo o que está por vir na versão 8.4

Sobre a Sun comprando o MySQL

O Sr. Greg Sabino parece concordar comigo sobre a possibilidade de se comprar o PostgreSQL. Ele também se deu ao trabalho de fazer algumas especulações sobre a aquisição da SUN, com direito a piada com o Sr. Josh Berkus e tudo o mais. Achei o artigo dele realmente interessante. Fico imaginando se a SUN não tem vontade de comprar a EnterpriseDB também. Na verdade eles já tem uma parceria antiga, seria uma aquisição bastante interessante para eles.

Mas por enquanto eles vão ter bastante trabalho para harmonizar a MySQL AB dentro da SUN e ajuda-los a enfrentar grandes desafios como atender a uma série de reclamações de seus grandes usuários (não é a toa que o Google fez grandes adaptações nele) e lançar o Falcon, que se tornou uma ação estratégica depois que a Oracle comprou o InnoDB.

No entanto, uma das coisas que eu realmente gostaria de ver são ferramentas administrativas mais poderosas, tanto no MySQL quanto no PostgreSQL. Será que vamos um dia ter uma ferramenta tão poderosa quanto o Oracle Enterprise Manager, como o pessoal da CELEPAR ousou fazer?

Software Livre a venda

A notícia da semana: SUN compra MyAB que desenvolve o MySQL o banco de dados livre mais popular do mundo. O preço, 1 bilhão de dólares. A notícia virou destaque em vários lugares no Brasil e no mundo. Eu gosto muito do PostgreSQL, mas tenho que reconhecer o MySQL tem uma legião de usuários que fazem com que ele seja um jogador de peso no mercado. Particularmente na Internet, o MySQL é largamente utilizado. É simples, é rápido, é livre.

A SUN é uma empresa respeitável. Fez um bom negócio. A Oracle tentou comprar a MyAB há alguns anos sem sucesso. E olhe que estou falando da empresa que acabou de comprar a BEA Systems por 8,5 bilhões de dólares. Assim, vemos os grandes comprando os menores e o mercado vai se concentrando em grandes monopólios com suas soluções de “ponta-a-ponta”. Gostaria de lembrar que não tenho nada contra a SUN. Ela é uma das empresas que mais contribuiu com o Software Livre nos últimos tempos, inclusive com o PostgreSQL. Talvez o fato da SUN não possuir um SGDB de peso no mercado tenha feito com que ela invista neste setor.

Uma coisa curiosa que ocorre quando alguém vê a notícia da compra da MyAB é a reação: “Puxa vida, 1 Bilhão por um Software Livre!”. Então me lembro do texto “Os 5 Tipos de Projetos de Software Livre” do Sr. Josh Berkus. A MyAB tem algo em comum com outros projetos de Software Livre:

  • America On Line compra a Netscape, desenvolvedora do Firefox;
  • Oracle compra SleepCat, desenvolvedora do BerkeleyDB;
  • Oracle compra a Innobase, desenvolvedora do InnoDB;
  • Novell compra SUSE;

São todos casos em que uma empresa comprou outra empresa que desenvolve um Software Livre. Mas eles são de uma categoria especial de Software Livre, são projetos, segundo o Sr. Josh Berkus, do tipo corporativo, onde o desenvolvimento é dependente da empresa que detém a sua propriedade intelectual. Mesmo adotando licenças livres segundo a FSF OSI ou mesmo pelo Debian, eles costumam manter um controle rígido sobre o desenvolvimento do software. Isto significa que você tem garantido o direito de usar, distribuir e modificar o software, mas pode não ter a oportunidade de contribuir com código para o projeto.

Uma consequência direta sobre isso, é que os “projetos corporativos” de software livre tem preço. O MySQL teve seu preço avaliado em 1 bilhão de dólares. Outras empresas como Red Hat, Canonical, Zend e outras tem seu preço. Mas há projetos importantes que até o momento parecem resistir a essa idéia. O Kernel do Linux não está a venda, o PostgreSQL, o Debian, o Gentoo também não. Assim, vemos que existe um corte importante ao se olhar para projetos de Software Livre. É preciso olhar para como o Software Livre é desenvolvido para saber o que se pode esperar do seu futuro.

Não acredito que a SUN vá trazer malefícios para o MySQL, mesmo porque ele não compete com nenhum outro produto já existente dentro da SUN. Mas este tipo de coisa acontece muito. Em 2000 a IBM comprou o Informix que competia com o DB2 e ele foi sumindo silenciosamente do mercado. Em 92 FoxPro foi comprado pela Microsoft e teve o mesmo destino. Assim, vemos soluções algumas vezes muito boas sumindo para dar espaço por outras com mais fôlego financeiro.

Escolhendo uma Distribuição Linux

Eu acompanho o do Avi Alkalay há algum tempo e já o vi em alguns eventos por aí. Acho interessante acompanhar os posts de alguém bem antenado, com um bom nível cultural e… bem, e ver um pouco da IBM nas suas postagens. Neste em especial, acho que a visão da IBM no mercado de Software Livre ficou mais transparente, e gostaria de comentar um pouco. Antes de mais nada eu gostaria de dizer que respeito profundamente o trabalho deste profissional, e acredito que estou aqui discordando em alguns pontos sobre o que ele escreveu, mas estou discordando fraternamente.

Enfim, uma coisa que fica claro quando lemos o Guia Livre do governo federal (ver cap. 2.2.2 “Razões para adoção de Software Livre”) é que se você migra para Linux pensando apenas em cortar custos, você terá problemas no caminho. Uma das grandes vantagens costuma ser a independência de um único fornecedor. Ficar dependente de um fornecedor é ruim por natureza. É um princípio de mercado. Seus negócios não devem depender totalmente de um único fornecedor, seja de matéria-prima, serviços ou máquinas. Software Livre ainda tem haver com liberdade. Eu realmente admiro por exemplo o Oracle e o DB2, mas prefiro o PostgreSQL onde eu tenho liberdade de escolher quem vai me dar suporte. As distribuições como Debian, Gentoo, Slackware e os BSDs livres, tem comunidades muito sérias atrás. Eu sei, o pessoal sempre diz: “mas eu preciso de alguém para segurar o rojão quando tiver um problema sério. Não posso contar com a comunidade apenas!”. Bom, eu gostaria de dizer que o suporte de algumas empresas (IBM, Oracle, Red Hat, Novell) nem sempre é bom. São incontáveis as vezes em que a comunidade me oferece respostas mais rápidas. Se fosse realmente bom, eles não precisariam atrelar as atualizações de segurança a um contrato de suporte. Muitos acabam pagando o suporte somente por causa das atualizações, todos sabem.

Estas empresas ainda competem pela qualidade do produto e não do serviço. Eu estou preocupado com a qualidade do serviço. Mas como estas empresas tem o monopólio dos serviços prestados sobre seus produtos, a qualidade e as opções tendem a cair. Algumas empresas não permitem que você utilize uma “versão não homologada” do software deles. Isto significa não poder recompilar o Kernel ou outra aplicação por exemplo. Vou lhe dizer que existem excelentes opções de suporte pago para as distribuições mantidas por comunidades. Mas o interessante, é que as empresas que prestam suporte soluções realmente livres, só sobrevivem se prestarem serviços de excelente qualidade. A competitividade é maior e isto já está acontecendo também no Brasil. Conheço empresas que fornecem soluções de alta qualidade para seus clientes, com compilações de software especiais para as necessidades dos seus clientes a custos muito atraentes e utilizando profissionais altamente qualificados. E o melhor de tudo é que você tem o direito de não gostar da empresa e chamar outra para prestar exatamente o mesmo serviço.

Vender licenças de softwares amplamente utilizados parece estar saindo de moda. É um movimento lento mas inflexível, particularmente nas grandes empresas (que se preocupam mais com a independência de fornecedor). O modelo onde os custos dos serviços amortizam os custos do desenvolvimento pode também não sobreviver para sempre. Ao fim e ao cabo, o Software Livre traz na sua liberdade a questão de remunerar melhor a competência, e não o papel. Entenda por papel um certificado, uma licença, uma patente outros conjuntos de átomos que não precisam se converter obrigatoriamente em bytes. Isto coloca em cheque grandes empresas e dá oportunidade para profissionais talentosos. O modelo de negócios baseado em soluções livres precisa de pessoas que pensem diferente. A IBM é um exemplo de como a liberdade é importante. Ao lançar o IBM-PC com um barramento aberto, proporcionou o florescimento de um ecossistema fantástico a sua volta. Depois, quando lançou um barramento proprietário, o MCA, perdeu espaço rapidamente no mercado que criou novos padrões abertos.

Estes dias li documentos da IBM propondo a migração do PostgreSQL e MySQL para o DB2. Vejam por vocês mesmos os links aqui e aqui. É claro que o DB2 tem qualidades fantásticas. Algumas das quais eu sei que os SGDBs livres terão muito trabalho para implementar. O DB2 é um excelente SGDB e praticamente inventou o SQL, não sendo a toa que é um dos que tem melhor conformidade com o padrão – vale lembrar que a equipe do PostgreSQL nunca pode participar do comitê que normatiza o padrão SQL, apesar de serem os que mais investem na conformância com o seu padrão. Mas veja bem, você migraria?

No entanto eu não acredito que as grandes empresas vão deixar de existir, mas acredito que a concorrência os farão rever seus conceitos e melhorar seus serviços. Assim ocorreu a liberação das versões gratuitas do Oracle, DB2 e do SQL Server, assim como a Microsoft lançou versões mais baradas do seu SO. Assim será com a prestação de serviços, conforme outras empresas ganhem terreno na qualidade dos serviços prestados. Quem ganha com este movimento são os bons profissionais de informática que tem seus serviços valorizados em detrimento de valores construídos sobre pilhas de papel. Ganham também os tomadores de serviço que terão serviços de melhor qualidade, com opções mais diversificadas e custos mais compatíveis com a qualidade dos serviços contratados.

PostgreSQL é tão rápido quanto Oracle e MySQL

Após a publicação do resultado do Benckmark realizado pela Sun já comentado de passagem por aqui, comentários importantes se espalharam por aí. De olho no Blog do Sr. Josh Berkus, vi que ele publicou hoje comentários sobre o que foi publicado de notório sobre isso na Internet.

A primeira coisa interessante é notar o que a Information Week publicou sobre isso. Vale lembrar que o jornalista que escreveu o artigo não é um simpatizante do Software Livre. Aparentemente o pessoal do MySQL concordou graciosamente com a opinião do Josh, o que mostra que o pessoal que realmente entende disso no MySQL não fala mais bobagem sobre o assunto. É claro que estamos falando de um Benckmark focado em ambiente transacional, onde o uso do MyISAM é proibitivo. Vejamos como o MySQL vai se sair com o seu novo storage engine na próxima versão. Se eles conseguirem abandonar definitivamente o InnoDB (que pertence a Oracle, hoje) será realmente um feito notável e um grande avanço para os bancos de dados livres.

Já um blog sobre Oracle, questionou um pouco alguns resultados, mas de qualquer forma, isso não quer dizer que eles não sejam significativos. Seja como for… será interessante aguardar a disponibilização para download do Oracle 11g. Não postei nada sobre isso, por um motivo simples, a nova versão e sua documentação não estão disponíveis para download até a data deste post. De qualquer forma, o que vejo nas últimas versões do Oracle são grandes melhorias na parte de administração do Oracle e poucas melhorias na parte de performance. Já o PostgreSQL tem lançado uma versão por ano com um aumento de performance significativo. É claro que este aumento de performance a cada versão do PostgreSQL (e existem boas novidades previstas na versão 8.3) não poderão se manter neste ritmo por muitos anos, mas é esperado como certo que em alguns anos o PostgreSQL ultrapassará o Oracle, mantendo um TCO significativamente mais baixo.

Sem dúvida, teremos mais boas notícias em breve mostrando que as coisas mudam, e rapidamente!