Jamis ha scritto un articolo molto interessante relativamente ad una feature di tutto riguardo di Ruby on Rails.
Si tratta del database migration, un sistema indipendente dal tipo di database utilizzato che permette di definire la struttura del database e come cambia nel tempo.
Il concetto è che ad ogni versione del codice (si pensi ad esempio alla versione di SVN) esiste la struttura dati del database collegato. A mano a mano che il codice cambia, anche la struttura dati deve venire aggiornata. Invece di ridefinire ad ogni versione del database tutte le tabelle e gli indici in blocco, il database migration da la possibilità di specificare quali sono state le modifiche introdotte (aggiunta di una colonna, cancellazione di alcuni dati) senza dover ridefinire ogni volta la struttura da zero.
http://weblog.jamisbuck.org/2005/9/27/getting-started-with-activerecord-migrations
