quarta-feira, janeiro 11, 2006

Controle de versão para os dados

Quanto mais eu penso, mais acredito que preciso experimentar essa idéia o mais rapidamente possível. Outro dia estava mexendo com as "rules" do PostgreSQL (triggers) para fazer log de uma tabela essencial do sistema. Qualquer alteração criava um registro em uma tabela gêmea, com a data da alteração e o usuário. Comecei a pensar o que aconteceria se eu fizesse isso para TODAS as tabelas do sistema. Acho que ia virar uma espécie de controle de versão dos dados, e melhor ainda, acho que consigo criar toda essa estrutura, tabelas gêmeas e triggers, com um simples script. Ainda não pensei direito o efeito disso sobre as tabelas de relacionamento N-M, mas acho q também funciona. Talvez fiquem gigantes, mas não vejo problema nisso. E com certeza, as gêmeas não podem ter "constraints" como "unique" e coisas do tipo, mas também acho isso contornável. Resta o problema de manutenção, triggers sempre são complicadas. Mas como as tabelas gêmeas não fazem parte realmente do sistema e nenhuma delas vai ter triggers, acho que não vou ter problemas de atualizações em cascata que o pessoal tanto abomina nas triggers. Acho que dá pra fazer um Engine no Rails (ActiveRecord) pra isso. Já tem um plugin pra isso: acts_as_versioned Quem sabe? Só estou jogando idéias pra cima.

Nenhum comentário:

Postar um comentário