next up previous contents index
Next: Un approccio al versioning Up: Il problema del tempo Previous: Livello intensionale   Indice   Indice analitico

Interrogazione in presenza di versioning

Quasi tutti gli approcci introdotti in letteratura non permettono l'interrogazione di più schemi differenti. L'introduzione del versioning degli schemi non apporta quindi il vantaggio di poter considerare insiemi consistenti di informazioni relative a versioni differenti. In [EK01] e [Yan01], ad esempio, l'utente deve sempre definire la struttura attraverso la quale desidera interrogare i dati. Nel primo approccio, però, vengono definite delle matrici di trasformazione che permettono di ricavare i valori relativi alle dimensioni che cambiano. L'utente, quindi, sceglie una versione indicando l'istante di riferimento $ P$ e richiede i dati relativi a periodi temporali anche differenti a quello individuato da $ P$. Il modello individua prima la versione coinvolta, poi trasforma i dati relativi alle altre versioni nella struttura selezionata. Questo modello è disponibile solamente quando si riescono a fare trasformazioni tra un attributo ed un altro modificato della dimensione, cosa che non sempre è possibile. Nonostante questa limitazione, il modello presentato in [EK01] permette quindi di interrogare la base di dati nella sua interezza, in corrispondenza di una unica versione di struttura.

In [EKM02] questa soluzione viene ulteriormente sviluppata, proponendo come soluzione a questo problema il modello COMET, che permette di interrogare versioni differenti. Per ottenere questo risultato viene introdotto il concetto di intervallo stabile.

Definizione 12 (Intervallo Stabile)   Un Intervallo Stabile per un membro di una dimensione DM è un intervallo nel quale nessuna modifica ad altre componenti influisce sui risultati delle query su DM.

Come abbiamo già visto, ciascun membro delle dimensioni e le corrispondenti dipendenze funzionali hanno un timestamp che rappresenta il tempo di validità dell'oggetto corrispondente. Questo purtroppo non garantisce che le modifiche ai membri di livello superiore non influiscano sui dati calcolati per il DM che viene preso in considerazione durante l'intervallo di validità dato.

Consideriamo ad esempio un data warehouse temporale che registra le informazioni di una Facoltà. Anche se la Facoltà non viene modificata, i dipartimenti e lo staff al suo interno possono essere cambiati. A questo punto, se una query richiede i dati corrispondenti alla facoltà all'interno dell'intervallo temporale di validità della stessa, questi potrebbero dipendere da calcoli sbagliati dovuti all'evoluzione strutturale dei dipartimenti.

Gli intervalli di stabilità sono quindi degli insiemi di intervalli temporali dove per ciascun intervallo la struttura che influisce sui dati di questo membro non è cambiata. Per questo motivo, se la query rimane all'interno dell'intervallo di stabilità non c'è nessun necessità di trasformare i dati.

Questa possibilità è una garanzia della consistenza dei risultati delle interrogazioni, ma pone una seria limitazione all'espressività ed alla potenzialità delle query, che non possono estendersi oltre gli intervalli di stabilità.

La possibilità di gestire query multi-schema è strettamente connessa all'individuazione di una struttura di dati comparabile tra gli schemi differenti. Spesso le modifiche apportate allo schema possono essere ignorate per lo scopo dell'interrogazione, oppure possono essere trasportate nelle versioni precedenti per facilitare il compito dell'analisi di uno schema comune. Analizzando per esempio il caso in cui sia stato inserito un nuovo livello di aggregazione nella descrizione dei prodotti di una azienda, aggiungendo una proprietà sotto-categoria tra il prodotto e la categoria. Le due versioni differiscono solamente per questo nuovo livello di aggregazione. L'utente dovrebbe poter scegliere se:

Nel prossimo capitolo verrà quindi introdotto un approccio che tiene conto di queste esigenze, permettendo l'esecuzione di query multi-schema e su schemi singoli, a seconda delle necessità. Questo risultato verrà ottenuto garantendo la possibilità di trasportare nelle vecchie versioni le nuove modifiche apportate senza alterarne la struttura originaria, che rimarrà sempre a disposizione per le interrogazioni su schemi singoli.


next up previous contents index
Next: Un approccio al versioning Up: Il problema del tempo Previous: Livello intensionale   Indice   Indice analitico
Alessandro Ronchi 2005-07-16