Olá pessoal, boa tarde!

Estamos prestando uma consultoria à um órgão governamental que possui um banco de dados em PostgreSQL bastante extenso. Uma de nossas tarefas era documentar o banco de dados todo, incluindo a criação de um dicionário de dados compreensivo, com informações sobre as tabelas, views, procedures, etc.

Como o banco é grande, possuindo muitos objetos, decidimos criar uma solução simples em Python que conecta-se ao banco de dados e utilizando um template, escreve o dicionário para nós, baseados nos comentários existentes para cada objeto.

No PostgreSQL, acredito que quase todos os objetos do banco possuem um campo de comentário, ou seja, ao invés da documentação ficar somente no papel, ela fica diretamente armazenada no campo de comentário de cada objeto, podendo ser consultada por quem já tem permissão aquele determinado objeto. É uma ideia simples, mas funcional.

Para inserir os comentários em lote, geramos um arquivo .yaml estruturado, onde as descrições podem ser preenchidas e posteriormente sincronizadas com o banco de dados. Outro utilitário, gera a documentação no formato de um template, podendo o mesmo ser customizado.

Ainda precisa de algumas mudanças e criação de testes para ficar um pouco mais modular, mas basicamente conseguimos ler todo o catálogo do PostgreSQL e gerar esta documentação em pouquíssimo tempo.

Outras funcionalidades veem a mente:

  • Geração de diagramas de forma automatizada;
  • Geração de relatórios de problemas comuns de banco de dados (ex: chave única em que é permitido valor nulo, etc);
  • Refatoração do código para funcionar com outros bancos de dados;

O docgen foi um projeto interessante de ser feito. Todo escrito em Python e agilizou bastante nossa vida. Fiquem a vontade para conhecê-lo no Github.