Monday, March 15, 2010

E se o banco de dados se adaptasse aos dados?

Depois de anos trabalhando com bancos de dados relacionais eu cansei. Aprendi programação orientada a objetos, e as regras de normalização deixaram de fazer sentido. Porque o registro de um livro não pode ter vários campos de autor? É natural que a relação de autores seja um atributo do livro.

Não é natural que os autores fiquem em outra tabela, com chaves apontando para o livro, enquanto no registro do livro propriamente dito não tem nem menção de autor algum. Isso é bizarro. A gente só não acha bizarro depois de muito adestramento, pelo qual eu também passei.

O modelo relacional tem muitos méritos, não precisa de mais um defensor. Mas para muitas aplicações, existe um outro modelo de dados mais apropriado, chamado "semiestruturado" (semistructured: este é o melhor termo para pesquisar na literatura científica).

No modelo semiestruturado, podemos ter campos repetitivos (por exemplo, vários campos de autor) e sub-campos, ou campos compostos (um campo autor pode ter sub-campos para o nome e a data de nascimento). Essas duas coisas são proibidas no modelo relacional, como foi definido por Codd.

Na blogosfera há muito sobre o CouchDB e outros bancos de dados semiestruturados. Eu trabalho na BIREME, uma instituição que vem construindo há décadas e com muito sucesso grandes bases de dados bibliográficas com CDS/ISIS, um banco de dados semiestruturado criado pela OIT e Unesco. Nos próximos posts vou contar algo do que tenho aprendido sobre este modelo de dados alternativo.