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
Scarica

import - DBGroup - Università degli studi di Modena e Reggio Emilia