Livro Refactoring Databases

Capa Livro Refactoring DatabasesAlguns dias atrás eu terminei de ler Refactoring Databases – Evolutionary Database Design (Amazon). Um dos autores do livro é o Scott Ambler, muito conhecido por aqueles que se interessam mais por OO. O livro também é parte da série Signature do Martin Fowler.

Esse livro me foi indicado quando eu procurava definir um design para sistemas dinâmicos, ou seja, um sistema que fosse construído conectando módulos reutilizáveis de outros sistemas. Infelizmente o livro não me ajudou nada nisso. :)

A concepção do livro é praticamente idêntica ao famoso livro de Refactoring do Martin Fowler, porém é direcionado a refatorar a estrutura de bancos de dados.

Existem dezenas de refactorings catalogados e separados em diferentes tipos como structural refactorings, data quality refactorings, referencial integrity refactorings, etc.

Para cada refactoring ele descreve a motivação, os problemas que você pode enfrentar durantes o processo, quais as tarefas para modificação da estrutura e migração dos dados.

Para servir de exemplo, vamos pegar o primeiro structural refactoring: Drop Column.

  • Motivação: A principal motivação para este refactoring é quando uma coluna não é mais usada.
  • Problemas: A coluna sendo removida pode conter dados importantes e você pode precisar preservar os dados.
  • Modificação da estrutura (schema): Remover coluna, constraints e foreign keys (se existirem).
  • Migração dos dados: Caso seja necessário manter os dados (para referência futura ou compatibilidade com outros aplicativos), a sugestão é criar uma tabela auxiliar com a chave primária da tabela e a coluna removida.

Grande parte do livro trata de manter compatibilidade e disponibilidade do banco. Por exemplo, se você tem vários aplicativos acessando o banco, sendo que estes aplicativos não são seus e você não pode alterá-los, a cada modificação na estrutura você deve manter um período de transição e compatibilidade, e o livro detalha várias técnicas para fazer isso.

Como meus bancos são sempre acessados apenas por meus aplicativos, todo esse conteúdo, apesar de interessante, não me foi de grande utilidade. E fora essa parte, o resto é tudo meio óbvio. Por isso não encontrei muita coisa que me ajudasse no livro.

Recomendo o livro especialmente para quem mantem grandes bancos de dados, acessado por muitos aplicativos. Se você mantem um banco de dados acessado apenas pelo seu aplicativo, acredito que não vai encontrar muita coisa útil no livro.

2 Comments

  • 20/2/2008 - 20:59 | Permalink

    Olá Erick !

    Você disse que o livro não te ajudou a construir sistemas dinâmicos e reutilizáveis.

    Poderia postar referências e escrever algo que o ajudou nesta árdua tarefa?

  • 20/2/2008 - 21:24 | Permalink

    Anderson, pra ser sincero, não encontrei praticamente nada que me ajudou nisso.

  • Leave a Reply

    Your email address will not be published. Required fields are marked *

    *

    You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>