Schema evolution
In informatica ci si riferisce al problema della schema evolution (evoluzione dello schema) come al problema di supportare il cambiamento di uno schema di base di dati. Ogni sistema informativo è soggetto a dover cambiare per reagire all'evoluzione del mondo in cui è immerso, questo si riflette a livello di base di dati nella necessità di modificare lo schema del DB. La principale problematica è il support delle interrogazione progettate per operare su versioni precedenti dello schema.
I sistemi DB tradizionali infatti non prevedono la possibilità di modificare in modo "indolore" lo schema della base di dati. Di conseguenza il supporto per rendere tale processo semplice ed immediato per gli utenti è pressoché assente. Questa assunzione già irrealistica nel contesto di tradizionali sistemi informativi aziendali è ancor più insensata nel contest di sistemi informativi web.
Questa nuova classe di sistemi è infatti soggetta, a causa della natura distribuita della sua realizzazione e fruizioni, ad una ancor più forte pressione verso il cambiamento. Una recente analisi del backend di MediaWiki ha evidenziato oltre 170 versioni dello schema in 4.5 anni di vita, i risultati sono consultabili presso: [1]. Questa velocità di evoluzione è tra il 40% e il 500% più veloce di quanto osservato nei precedenti studi condotti su sistemi tradizionali.
La problematica chiave è quella del supporto delle query, infatti nello studio su MediaWiki oltre il 70% delle query può venire compresso in un singolo cambio di versione.
Questo problema è conosciuto da oltre 12 anni, ma a cospetto di interessanti risultati teorici pochi sono stati gli sforzi verso la realizzazioni di soluzioni pratiche al problema, ad eccezione dei sistemi Prism e Prima.
Collegamenti esterni
modifica- Vasta bibliografia sulla Schema Evolution.
- benchmark per schema evolution analisi della UCLA per lo schema evolution in MediaWiki.
- PRISM, uno strumento a supporto dello schema evolution relazionale.
- PRIMA:[collegamento interrotto], uno strumento per la gestione delle transazioni per un DB sottoposto a schema evolution.