Data integration: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Riga 53:
La teoria dell'elaborazione di query in un sistema di data integration systems è comunemente espressa utilizzando interrogazioni congiuntive [[Linguaggio di interrogazione|interrogazioni]] e [[Datalog]], un linguaggio di [[programmazione logica]] puramente dichiarativo.<ref name="reffive">{{cite conference | author=[[Jeffrey D. Ullman]] | title=Information Integration Using Logical Views | booktitle=ICDT 1997 | year=1997 | pages=19–40 | url=http://www-db.stanford.edu/pub/papers/integration-using-views.ps}}</ref> Si può liberamente pensare ad una [[query]] come una funzione logica applicata alle relazioni del database come "<math>f(A,B)</math> dove <math>A < B</math>". Se una tupla o insieme di tuple è sostituito nella regole e la soddisfa (cioè la rende vera), allora consideriamo quella tupla parte dell'insieme di risposte alla query. Mentre il linguaggi formali in stile [[Datalog]] esprimono queste query sinteticamente e senza ambiguità, anche le query [[SQL]] comuni contano come query congiuntive.
In termini di integrazione dei dati, il "contenimento delle query"
Nei sistemi GAV, un progettista scrive il codice del mediatore per definire la riscrittura delle query. Ogni elemento nella query dell'utente corrisponde a una regola di sostituzione proprio come ogni elemento nello schema globale corrisponde a una query sulla sorgente. L'elaborazione delle query espande semplicemente i sotto-obiettivi della query dell'utente secondo le regole specificate nel mediatore, perciò la query risultante è probabile che sia equivalente. Mentre il progettista fa la maggior parte del lavoro in anticipo, alcuni sistemi GAV come [http://www-db.stanford.edu/tsimmis/ Tsimmis] comportano la semplificazione del processo di descrizione del mediatore.
Nei sistemi LAV, le query vengono sottoposte a un processo più radicale di riscrittura perché non esiste alcun mediatore che allinei le query dell'utente con una semplice strategia di espansione. Il sistema di integrazione deve eseguire una ricerca sullo spazio delle possibili query al fine di trovare la riscrittura migliore. La riscrittura risultante potrebbe non essere una query equivalente, ma massimamente contenuta, e le tuple restituite incomplete.
In generale, la complessità di riscrittura delle query è [[NP-completo]].<ref name="refsix" /> Se lo spazio delle riscritture è relativamente piccolo questo non rappresenta un problema — anche per sistemi di integrazione con centinaia di sorgenti.
|