Já faz algum tempo que eu leio documentações de informática. Acabei aprendendo a ler em inglês pois não havia nenhum manual para o editor Magic Windows II que eu rodava no Apple II em português. De lá para cá li muita coisa que eu gostei e coisas que eu prefiro nem lembrar. Entre as coisas que eu gostei de ler está o livro Programação Perl dos Srs. Larry Wall, Tom Christiansen e Jon Orwant. É bom pois é bem abrangente, bem escrito, com boa profundidade e bom humor. A documentação oficial do PostgreSQL também é bem escrita e bem abrangente. Uma boa diferença é que como o livro de Perl não pretende ser uma documentação oficial, ele é mais descontraído. Esta é uma característica comum das documentações relacionadas com Software Livre.

Uma outra diferença fundamental é que a documentação do PostgreSQL mostra detalhadamente “o que” mas mostra pouco “como”. Isto não significa que precisamos de um livro do tipo “Torne-se um DBA PostgreSQL em 7 dias”. Estes livros costumam ter o péssimo hábito de emburrecer as pessoas com receitas de bolo prontas e não convida o leitor a pensar ou tomar decisões. Quando li a documentação oficial do PostgreSQL pela primeira vez, me senti finalmente encorajado a começar a modelar meu primeiro sistema dedicado a ele. No entanto, uma infinidade de desafios e decisões apareceram no caminho, e a documentação oficial tinha pouco a me dizer naqueles momentos. Eu ainda tinha pouca experiência e isso me levou a tomar decisões baseadas muitas vezes no meu bom senso e outras em alguns poucos artigos que encontrei na Internet. Mas… já dizia o Sr. Hobbes, que o bom senso é o dom mais democrático e contraditório da humanidade: todos acham que os outros carecem e bom senso e se julgam igualmente possuidores de boas doses dele. Resultado, fracassei miseravelmente em diversos aspectos.

Com o tempo e envolvimento com a comunidade, fui descobrindo um erro aqui e outro acolá. Aprendendo sobre outros bancos de dados, principalmente olhando para as diferenças entre eles, percebi algumas coisas nas entrelinhas que nem sempre estão explícitas na documentação. Isto me levou a escrever alguns artigos neste blog, particularmente nos últimos tempos, quando comecei a me sentir mais corajoso no sentido de expor minhas idéias e me permitir errar, expondo idéias inacabadas. Isto culminou com uma palestra no PGCon Brasil 2007. A idéia da palestra “Como Fazer um Elefante Passar Debaixo da Porta” era a de ajudar as pessoas que estão começando a utilizar o PostgreSQL, mas não tem tanta experiência como DBA. Olhando para o público do evento, percebo que existe uma minoria de DBAs na platéia. A maioria eram desenvolvedores/analistas/programadores e haviam também administradores de sistemas/redes. A questão é a de que praticamente não existem cursos de graduação para formar Administradores de Bancos de Dados. A meu ver, a maioria dos DBAs foram administradores de sistemas ou desenvolvedores que por alguma razão misteriosa decidiram se especializar nesta área.

Se formos pensar bem, o DBA fica justamente numa posição entre o desenvolvedor e o administrador de sistemas. O novo DBA trás certamente as melhores práticas da sua área de origem. Os administradores de sistema trarão uma preocupação com o uso e monitoramento dos discos, métodos de autenticação autenticação, ajustes do SO e por aí vai. O desenvolvedor trás um padrão de codificação, esquemas de autenticação da aplicação, modelagem, distribuição de objetos, etc. Mas bancos de dados não são novos… já em priscas eras, os computadores utilizam bancos de dados. O modelo relacional, no qual todos os grandes SGDBs se baseam (e ao contrário do que o pessoal da programação orientada a objeto imagina, continuará assim por um bom tempo) foi criado há mais de 30 anos. O livro “Introdução a Banco de Dados” do C. J. Date também já é pode ser considerado um clássico e está em sua oitava edição.

Os bancos de dados relacionais atravessaram a era dos sistemas centralizados em mainframes (que continuam existindo), a era cliente-servidor e a era programação em 3 camadas. O PostgreSQL tem suporte para utilizar tudo isso, mas nem sempre os novos DBAs tem consciência desta história toda. Ao ler a documentação do PostgreSQL, hoje eu vejo décadas de história relacionadas com as suas funcionalidades. Então fica claro para mim, qual livro falta ser escrito para o PostgreSQL. Não é um livro que substiua a documentação oficial. Vale muito mais a pena complementar e traduzir a documentação oficial do que escrever pequenos livros que repetem boa parte do que já existe lá. Hoje eu descobri mais um pequeno livro sobre PostgreSQL. Nada contra o livro. Mas eu não preciso ler ele para saber como ele é. Este tem apenas 240 páginas. Para um livro genérico, isso mal dá para começar. Segundo a editora, a Érica que tem fama de fazer livros didáticos, que mais parecem apostilas. Terceiro, o autor, com quem eu já tive aula, tem dezenas de livros editados no mesmo estilo.

Minha idéia não seria esta, muito pelo contrário. Acredito que um bom livro de melhores práticas deveria estimular o leitor a ler a documentação com freqüência, citando-a em diversos pontos. Mesmo porquê, existe um trabalho intenso da comunidade em atualizar a documentação oficial a cada nova versão do PostgreSQL. Um livro de melhores práticas deveria se um pouco menos dependente de uma versão específica.

Um livro de melhores práticas deveria servir como subsídio didático para cursos de PostgreSQL, deveria conter inúmeros exemplos práticos e conduzir o leitor ao erro. Sim, ao erro. Somente a pessoa que erra tem condições de aprender de fato. Não são os acertos sucessivos que nos fazem acertar, e sim os erros e como corrigi-los. Assim, eu imagino uma aplicação sendo construída a partir do seu início, e as decisões sendo tomadas no meio do caminho. Imagino o livro conduzindo a decisões e discutindo as implicações destas decisões. Imagino muita polêmica onde não há um único caminho correto a seguir. Imagino a coleta de diferentes opiniões que convidem o leitor a pensar e escolher o seu próprio caminho. Imagino exemplos concretos de como seria a implementação em cada um destes caminhos. A questão ao fim é mostrar “como” e não “o que”.

O livro passaria certamente por tópicos que não são específicos do PostgreSQL. Uma coisa interessante seria mostrar as diferenças da implementação do PostgreSQL com as implementações de outros bancos de dados, quando isso for comparável. Imagino particularmente comparações entre implementações do Oracle, DB2, SQL Server e MySQL. Imagino também comparações com o padrão SQL e comparações com versões anteriores do próprio PostgreSQL. Seria muito interessante abrir o jogo aqui. O PostgreSQL não é perfeito e nunca será. Se ele fosse perfeito a humanidade teria esgotado a sua insatisfação e imperfeição eternas. Poderia-se mostrar onde outros bancos de dados oferecem vantagens e desvantagens em relação ao PostgreSQL. Pode-se dizer o mesmo em relação ao padrão SQL, que não é perfeito. No entanto, melhor do que criticar o padrão SQL – afinal, querendo ou não é o padrão que nós temos – devemos comparar os Bancos de Dados tendo o padrão SQL como referência.

Imagino algumas premissas para escrever o livro:

Possíveis tópicos a serem abordados:

13 respostas

  1. (Comentário que não tem muito haver com o post.)

    questão é a de que praticamente não existem cursos de graduação para formar Administradores de Bancos de Dados.

    Aqui em Manaus até tem curso de graduação em tecnologia de banco de dados, só que faz 2 anos que não fecham turmas 😛

    É engraçado. As pessoas entram na área de informática pensando que vão ganhar dinheiro e querem logo fazer programação ou algo do tipo. O mercado (aqui pelo menos) está exigindo bastante de DBA e Profissional capacitado para trabalhar com Sistemas embarcados (na mesma faculdade tem esse curso e nunca fechou turma).

    Implantamos um sistema de ERP aqui na empresa e na hora de escolher o banco, pensei logo em Postgree visto que o sistema em questão tinha compatibilidade com vários banco de dados. Mas fui obrigado a escolher o SQL Server. Sou sysadmin de sistemas linux, e para mim instalar um servidor windows na empresa foi como rejeitar um filho. Mas tenho que ser profissional e pensar na empresa. Não tem mão de obra qualificada aqui no mercado para me dar suporte. E a empresa não pode parar por causa disso.

    Emfim. Parabens pelo post. 🙂

  2. Cara seria um projeto excelente, porque vc não leva adiante ?

    Na lista deve ter gente interessada.

  3. Poisé Telles,

    Pelo que pude ver, as coisas já estão bem adiantadas, as idéias já existem, os principais tópicos também, parece que faltam apenas pequenos detalhes não é mesmo?

    Silfar e Fike já falaram e eu concordo com eles repetindo: toque adiante… mãos para ajudar com certeza não faltarão.

    Um abraço,
    Guedes

  4. Fábio,

    Hmm .. me lembrou powerpostgresql…

    Li às pressas o artigo, mas já não existem muitos livros “baratinhos” que explanam sobre o essentials? Não seria o caso de aprofundar mais no que se pode fazer com um elefante?
    O livro deveria ser escrito em LateX.

    Já que disse que seria escrito em “várias mãos”, conte comigo!

    Ótima iniciativa e se quiseres poderia inclusive utilizar o svn que também já está up.

    -Leo

  5. Se tocar o projeto, conte comigo, tenho um case de DB de 280GB e otima experiência em PostgreSQL utilizado para um sistema de 16 milhões de transações de compra / mês.

    Abraço

  6. Fabio, conversei com você no Fisl e acho que um livro com uma abordagem menos séria, melhor dizendo ortodoxa, seria ótimo, eu compraria e recomendaria aos meu alunos com certeza.
    Espero que leve esse projeto adiante.
    Abraço.

  7. Caros,

    Com certeza um livro com este conteudo seria de grande valia, aproveitando o post alguem poderia me indicar um bom livro sobre Postgres?

      1. Blz, estamos a espera! Eu sinto falta de ler algo interessante e ao mesmo tempo mais divertido sobre PostgreSQL. Ainda hoje, estava lendo alguns posts sobre como ser um DBA. Achei muita coisa interessante, claro, eu ainda não sei nada perante muita gente, nada!!!

        Hoje eu cuido ou tento cuidar, do banco de dados dos clientes da empresa onde trabalho. De alguns anos pra cá, montei uma receita de bolo para um modelo de servidor+postgresql, onde para grandes clientes, instalo um XenServer e sempre com 3 VMs(Ubuntu Server + Windows2008 e Windows2013). O Ubuntu eu instalado o postgresql, ainda na versão 8.2.23, já se encaminhando para a mais atual estável e nos demais ruwindows eu faço deles um servidor de terminal server e servidor de app(aplicativos(gerenciador de Nfe e TEF)). Usamos Windows pois nosso sistema é desktop para windows.

        Gosto do PostgreSQL, gosto linux e mais ainda, gosto do que é livre. Tomará que esteja a caminho este livro, pois a comunidade toda agradece quando conhecedores de verdade, liberam conhecimento facilitando a vida dos iniciantes e lembrando os mais profissionais do quanto é bom este PG.

        Grande abraço!

Deixe uma resposta