Slides - Dipartimento di Scienze Ambientali, Informatica e Statistica
Transcript
Slides - Dipartimento di Scienze Ambientali, Informatica e Statistica
Interfacce per basi di dati e integrazione di sistemi informativi R. Orsini - A. Roncato - F. Dalla Libera Workshop del Dipartimento di Informatica 2 Marzo 2006 Aree e progetti • Progetto Rewerse: Query XML e Web Semantico (accesso integrato a basi di dati e dati semistrutturati (documenti XML)) • Progetti Corila • Interfacce per basi di dati • Indipendenza delle applicazioni • Integrazione di basi di dati • Ontologie e strumenti per sistemi informativi scientifici eterogenei Query XML • Xcerpt (François Bry, Monaco) • Linguaggio deduttivo, basato su regole, con controparte visuale • Integrazione con linguaggi di programmazione tradizionali con definizione di: • modello di integrazione • specifiche delle “API” • sviluppo di un prototipo per Java (tesi di laurea specialistica) SQLI Linguaggio per Interfacce per Basi di Dati R. Orsini - A. Roncato Obiettivi • Integrazioni di DB diversi • Sviluppo di nuove applicazioni (Web) su basi di dati esistenti • Porting di applicazioni già esistenti per nuove basi di dati • Sviluppo separato di applicazione e basi di dati Soluzione “tradizionale” • Viste utente (Schema esterno) • Non utilizzabili quando: – Non si può “metter mano” al database – I dati sono non sono gestiti con un DBMS • Si vuol rendere indipendente l’evoluzione della BD e quella della applicazione (principio di Ingegneria del Software) • Si vuol portare rapidamente l’applicazione su tante basi di dati diverse Proposta Interfaccia per basi di dati Si descrive come l’applicazione “vede” il DB • • • Rende indipendenti le due componenti È un contratto: evidenzia le responsabilità Definita con un linguaggio formale, permette lo sviluppo di strumenti di tipo diverso: controllo di consistenza con la base di dati, verifica dell’applicazione in un ambiente semplificato, generatori di mapping fra interfaccia e DB, ecc. Analogia con i tipi e interfacce nei linguaggi di programmazione • • • • Information hiding: si vuole che l’interfaccia nasconda dettagli non interessanti del DB Benefici interfacce: riuso, sviluppo separato, manutenzione, collaborazione Comunque, si vogliono fare più controlli “statici” possibili: in questo caso non solo a tempo di compilazione, ma anche a tempo di “sviluppo” (questo è un aspetto innovativo su cui è necessario indagare ulteriormente) Per integrare DB diversi si possono costruire dei “mapping” sopra le varie interfacce Perchè SQLI • Basato su SQL: SQL è conosciuto sia dall’esperto della base dati, sia dall’esperto dell’applicazione; • Vogliamo un linguaggio decidibile (sviluppo di tool); • Esistono già delle descrizioni in SQL delle basi di dati: Dump. Come SQLI • Dump descrive esattamente una sola base di dati • Interfaccia come “astrazione” del Dump: dobbiamo permettere di “trascurare dei dettagli” del DB • I dettagli da trascurare riguardano sia lo schema che i dati contenuti nel DB • Alcuni dati sono importanti e non vanno dimenticati (metadati etc.)! Approccio • Scelto Java come linguaggio e JDBC come strumento per accedere alla base di dati per vedere come l’applicazione interagisce con DB • Mapping tra tipi Java e tipi SQL • Potere espressivo del linguaggio Sintassi SQLI • EXIST TABLE studenti ( matricola ATMOST int, nome ATMOST VARCHAR[]) (Specifica semplificata di uno schema di tabella) • EXIST ROWS WITH Export>=1000 AND Import<1000 FROM region WHERE Country=‘Italy’ (Come sottoinsieme di SELECT SQL) Risultati • Definizione SQLI e modello di valutazione • Realizzato Tool che, data un’interfaccia SQLI e un DB, verifica se il DB ha quella interfaccia In sviluppo: • Verifica di un’applicazione in ambiente di prova • Realizzare un driver JDBC che, data un’applicazione, “estrae” un’interfaccia • Estendere SQLI per gestire il mapping • Tool per generare un DB data un’interfaccia Problemi aperti • • • • Completezza del linguaggio di interfaccia Efficienza Visione statica o dinamica? Fino a che punto si può spingere l’analogia con i tipi? • Come gestire il mapping tra Java e SQL? • Qual’è il modo migliore di integrare basi di dati con il mapping? • Quali strumenti avanzati dei DBMS si possono usare per sperimentare l’approccio? Glossario attivo Glossario attivo • Esigenza: semplificare il controllo e l’accesso ad un sistema informativo complesso, molto eterogeneo, specializzato in aree scientifiche (dati ambientali, architettura, economia, storia, ecc.) Problemi • Grandi differenze terminologiche, sui dati raccolti, sul livello di struttura delle informazioni, sulle operazioni “ragionevoli” sui dati • Utenti poco esperti di strumenti per sistemi informativi complessi, ma che hanno bisogno di esplorare i dati con una certa profondità. • Scarsità di strumenti “intelligenti” ed “effettivi” per questo tipo di sistemi informativi Proposta • Un’ontologia semplificata: più come tesaurus o glossario che come ontologia nel senso tecnico del termine (schema concettuale complesso) • che sia una base terminologica unificante, ma soprattutto... • che sia un modo per accedere al sistema informativo (aspetto innovativo) Tutto questo ma... • Con una modalità di creazione più semplice e immediata possibile, per utenti che non debbano scrivere codice Spazio dei programmi Spazio dei contenuti Generatori di codici Databases Datasets Pagine web Operatori di accesso e modifica ai dati Materiale non pubblicato Materiale pubblicato Categorie Termini Spazio dei glossario / ontologia Possibile con... • Linguaggio ad alto livello, riflessione potente, estremamente dinamico (oggetti che acquisiscono tipi dinamicamente, tipi che possono essere estesi a run-time), con caratteristiche di scripting e ambiente di sviluppo rapido di applicazioni web • cioè... C • :-) ehm... volevo dire Ruby