Università degli Studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica PROGETTO E REALIZZAZIONE DEL PACKAGE MOMISQUERY MANAGER SU ORACLE EXPRESS Relatore: Prof.ssa Sonia Bergamaschi Correlatore: Ing. Alberto Corni Candidato: Luca Sculco Anno Accademico 2007/2008 SOMMARIO • Il sistema MOMIS • Il modulo Query Manager • Database di supporto • ORACLE • Conclusioni 2 MOMIS (Mediator EnvirOment for Multiple Information Sources) Sistema per l’integrazione intelligente di sorgenti di dati eterogenee strutturate e semi-strutturate. Obiettivo: Integrare le informazioni fornendo uno schema concettuale globale che consenta all’utente di sottomettere una query e di ricevere una risposta unificata. Global Schema (GS) Query Mapping Local Schema Local Schema Local Schema RDB OODB file XML 3 CLASSI LOCALI DB1 DB2 DB3 AZIENDA COMPANY COMPANY INDIRIZZO ADDRESS CATEGORIA CATEGORY ADDRESS ABOUTUS DESCRIPTION NOME NAME COMPANYNAME TELEFONO TEL PHONE GS COMPANY ADDRESS CLASSE GLOBALE CATEGORY DESCRIPTION NAME PHONE MAPPING TABLES 4 MOMIS – Architettura Integration Integration Designer Designer SI-Designer • •SLIM SLIMWordNet WordNetinteraction interaction • •SIM ODB-Tools SIM ODB-Toolsvalidation validation • •ARTEMIS Clustering ARTEMIS Clustering • •TUNIM TUNIMMap. Map.table tabletuning tuning WordNet WordNet Global Schema Builder creates ODB-Tools ODB-Tools Global GlobalSchema Schema User User Application METADATA METADATAREPOSITORY REPOSITORY USER level QueryManager QueryManager Service level MOMIS mediator legenda User interaction CORBA interaction CORBAObject GUI User Software tools Wrapper Wrapper Wrapper Wrapper Wrapper Wrapper Wrapper Wrapper Relational Relational Source Source XML XML Source Source Object Object Source Source generic generic Source Source Data level 5 QUERY MANAGER Cos’è? E’ il modulo di gestione delle interrogazioni Come funziona? 1. Riceve in input una query dall’utente (query globale) 2. Grazie ad ODB-Tools ed alle mapping tables scompone la query globale in sotto-query (query locali) che interrogano le sorgenti 3. Memorizza i risultati delle query locali in un database di supporto 4. Unisce i risultati parziali e fornisce all’utente la risposta 6 QM - Architettura 7 ESECUZIONE QUERY (1) GS SELECT NAME, ADDRESS, DESCRIPTION FROM COMPANY WHERE DESCRIPTION LIKE ‘IMPORT’ COMPANY ADDRESS CATEGORY DESCRIPTION NAME PHONE SELECT NAME, ADDRESS, ABOUTUS FROM COMPANY WHERE ABOUTUS LIKE ‘IMPORT’ AZIENDA SELECT COMPANYNAME, ADDRESS, DESCRIPTION FROM COMPANY WHERE DESCRIPTION LIKE ‘IMPORT’ COMPANY COMPANY INDIRIZZO ADDRESS ADDRESS CATEGORIA CATEGORY DESCRIPTION NOME ABOUTUS COMPANYNAME TELEFONO NAME PHONE DB1 TEL DB3 DB2 8 ESECUZIONE QUERY (2) • Appena il QM inizia la sua esecuzione crea sul database di supporto delle tabelle che rispecchiano tutte le classi globali e locali • I risultati ottenuti dalle query locali sono inseriti nelle rispettive tabelle locali temporanee • Sulle tabelle in cui sono stati inseriti i dati, si effettua un’operazione di FULL OUTER JOIN, eseguendo la mapping query ADDRESS include tutti i record da entrambe le tabelle coinvolte COMPANY_DB3_COMPANY COMPANY_DB2_COMPANY ADDRESS DESCRIPTION COMPANYNAME CATEGORY ABOUTUS NOME TEL unendo quelli che hanno lo stesso join attribute PHONE Bologna 586 Import CASTORAMA 0516113011 Milano Import RAMOTEX 0828015393 London 101 Import RAMOTEX 880-5-801466 null Import Koramsa Corp +502 4396868 RESULT SET dopo il FULL OUTER JOIN NOME_1 NOME_2 ADDRESS_1 ADDRESS_2 DESCRIPTION_1 DESCRIPTION_2 CASTORAMA null Bologna null Import null RAMOTEX RAMOTEX London Milano Import Import null Koramsa Corp null null null Import ESECUZIONE QUERY (3) Il Result Set viene raffinato per poi essere inserito nella tabella globale temporanea e visualizzato all’utente tramite la final query RESULT SET dopo il FULL OUTER JOIN NOME_1 NOME_2 ADDRESS_1 ADDRESS_2 DESCRIPTION_1 DESCRIPTION_2 CASTORAMA null Bologna null Import null RAMOTEX RAMOTEX London Milano Import Import null Koramsa Corp null null null Import Resolution Function COMPANY ADDRESS CATEGORY DESCRIPTION NAME PHONE Bologna null Import CASTORAMA null London null Import RAMOTEX null null null Import Koramsa Corp null FINAL QUERY L’integrazione effettuata da MOMIS è VIRTUALE: NAME ADDRESS DESCRIPTION Koramsa Corp null Import i dati rimangono sempre nelle Bologna sorgenti, Import gli unici che vengono CASTORAMA RAMOTEX London Import copiati sono quelli necessari alla risoluzione della query globale 10 DATABASE DEL QM • Il DBMS di supporto scelto dai progettisti di MOMIS è stato Microsoft SQLServer • VINCOLI: DBMS COMMERCIALE PIATTAFORMA WINDOWS Obiettivo di sviluppo: rendere MOMIS un software opensource e aumentarne la portabilità! PostgreSQL: DBMS opensource il FULL OUTER JOIN funziona solo se i 2 flussi di dati da unire sono ordinati Oracle: DBMS commerciale, senza vincoli di piattaforma 11 ORACLE EXPRESS • XE è la versione free del più diffuso RDBMS commerciale ORACLE • Edition con alcuni limiti, ma per il resto analoga e perfettamente compatibile con le altre versioni • Piattaforme supportate da Oracle: – – – – – – • Linux Windows Solaris HP IBM Mac E’ il numero 1 su Linux con oltre l’80% del market share ORACLE e MOMIS ?? 12 MODULARITA’ • Codice di MOMIS scritto per un particolare database di supporto Obiettivo: consentire all’utente la scelta del database per il QM • L’implementazione degli statement SQL non sempre è perfettamente aderente allo standard e soprattutto DBMS differenti possono presentare dialetti differenti • Aggiunta nel codice di una gerarchia di classi, con la classe padre astratta e le classi figlie, che rappresentano i gestori dei DBMS, che specializzano i metodi DBMS SQLServer Oracle Nuovo DBMS Quando si deciderà di effettuare un ulteriore porting, sarà sufficiente inserire tra i figli della gerarchia DBMS, il modulo del nuovo DBMS contenente i metodi correttamente specializzati 13 DIFFERENZE IMPLEMENTATIVE • public String AccorciaNome(String { 30 caratteri Oracle non supporta identificativi connome) più di return nome; } DBMS SQLServer • • • Oracle SELECT…… Per definire i valori Se chiamiamo una numerici tabella si FROM table1 T identificativo usano: INT, FLOAT e DECIMAL “TableName” ilas suo L’uso delle virgolette ……….. può essere “TableName” o anchenegli TableName, rispettando il case Tipi di dato per i valori SELECT…….. public String nome) { Usa il tipo di AccorciaNome(String dato Se chiamiamo unaNUMBER tabella per FROM table1 T if (nome.length()>30) definire tutti i valori “TableName” il suo numerici unico identificativi …………. nome = nome.substring(0,26); identificativo è “TableName” return nome; numerici } Alias di tabella nella clausola FROM 14 CONCLUSIONI Creazione della gerarchia DBMS Aggiunta del modulo ORACLE Revisione del codice del Query Manager Sviluppi futuri: • Perfezionamento del modulo ORACLE • Aggiunta di ulteriori DBMS di supporto, in particolare open source 15