Facoltà di Ingegneria dell'Informazione, Informatica e Statistica
Corso di Laurea in Tecnologie Informatiche
Cattedra di Basi di Dati II
Progettazione
di
un
framework
avanzato
di
gestione
e
interrogazione basato su agenti di query per applicazioni a
database distribuiti ed eterogenei relativi al portale efficienza
energetica 55%: MQSystem.
Relatore
Prof.ssa Marina MOSCARINI
Tesina di
Francesca GIORDANO
(691022)
Correlatore
Prof. Flavio FONTANA
A/A 2011/2012
1. Dominio Applicativo
2. Progetto
2.1 Framework
2.2 Data base
2.3 Interfaccia utente
3. Ambiente di sviluppo
4. Sistema MQSystem
5. Risultati
6. Futuri sviluppi
1.1
Introduzione
• La progettazione del framework è orientata alle dichiarazioni di incentivi pubblici,
della legge 27 dicembre 2006 n. 296, per il miglioramento dell'efficienza energetica
degli edifici.
• Gli applicativi web con i rispettivi database sviluppati dall’ENEA, Centro Ricerche
Casaccia, per conto dell’Agenzia delle Entrate e dei Ministeri competenti, relativi alle
richieste inviate dai cittadini nel periodo 2007 – 2012, per usufruire di agevolazioni
fiscali nella misura del 55%, sono 5, il 2009 non è presente poiché sviluppato da una
ditta esterna.
Obiettivo
• Scopo iniziale era creare un sistema di interrogazione sui tali database distribuiti.
• L’analisi dei 5 database ha messo in evidenza la
loro strutturata eterogeneità dovuta
alle successive modifiche della legge
e del susseguirsi, negli anni, di diversi gruppi di
sviluppo. Di conseguenza tale disuniformità
non consentiva la formulazione
di query standard.
Obiettivo ultimo: creare un sistema che permetta la gestione di un database risultato
di più database etero/omogenei per formulare, in modo diretto rispetto alle sorgenti
coinvolte, interrogazioni semplici e complesse.
1.2
Informazioni di partenza
Documentazione e applicativi messi a disposizione dallo «Usability&Media Lab» ENEA
(Centro Ricerche CASACCIA ) per il tirocinio:
• I siti web per la gestione delle dichiarazioni degli anni 2010 - 2012.
• Documentazione tecnica sui database relativi ad ogni applicativo web realizzati nel
periodo 2007-2012 e i riferimenti on line sulla legge relativa all’efficienza energetica
55%.
• I 5 database originali «copia».
Le informazioni gestite dai database sono raggruppabili in
ANAGRAFICA – BENEFICIARIO, IMMOBILE, INTERVENTO e ALTRO.
1.3
Esempio pagina web di inserimento dati per una tipologia di intervento (Allegato F)
1.4
Tabelle del database: finanziaria 2007
Dichiarazioni
Anagrafica/Istat
Servizio
1.5
Tabelle del database: finanziaria 2008
Anagrafica/Istat
Dichiarazioni
Servizio
1.6
Struttura del database: finanziaria2010
Dichiarazioni
Anagrafica/Istat
Servizio
1.7
Riepilogo classi di omogeneità dei database analizzati
Progettazione
FRAMEWORK
ANALIZZA
Db Esterni
INTERROGA
Estrae
Db Risultato
interno
•
MQSystem: Management Query System – sistema che gestisce l’analisi, l’estrazione e
l’integrazione «pseudo intelligente» dei dati memorizzati nelle diverse sorgenti creando
un database globale integrato con un’interfaccia di interrogazione.
•
Archiettura di MQSystem: organizzata in tre livelli
il livello database (tutti);
il livello intermedio ('framework');
l’interfaccia utente (‘interface’).
PRESENTATION
FRAMEWORK
DATABASE
2.1.1
Architettura funzionale
A
C
B
D
G
E
F
2.1.2
Funzionamento
• Il Core System è strutturato da una serie di agenti, ognuno con un compito
specifico e in comunicazione tra di loro.
• Agenti:
A
SYSFramework (SYS)
Classi per l'implementazione di configurazione
dell'applicazione.
B
DataAccess (DA)
Classi di accesso ai dati.
C
AgentContent (AGC)
Classi per il controllo di contenuto delle tabelle. Utilizza
tabelle di appoggio e GoogleMapsAPI.
D
DBs
Classi di gestione database esterni e database interno.
E
RegisterUsers (RUs)
Classi di autenticazione e informazione degli utenti.
F
ManagementDataSource
Classi per il confronto/analisi, estrazione database esterni.
(MDS)
G
Query (Qs)
Classi per la creazione, esecuzione e salvataggio delle
query sul database estratto.
2.1.3
Gestione ANALIZZA (Analyzer):
Confronta in modo automatico e semi-automatico coppie di sorgenti
dati;
Estrae un set di dati creando un merge tra le coppie di sorgenti
analizzati;
Salva il confronto in formato XML in una tabella risultato, salva
l’estrazione in un data base risultato, salva il contenuto di ogni tabella
ottenuta dall’estrazione in appositi file di tipo xml.
ANALYZER
2.1.4
ANALYZER -> Confronta:
ANALYZER
Preleva struttura
database Master
(*) NON TROVATO è l’esito della
tabella che MQSystem restituisce
Preleva struttura
database Slave
SOLO SE la seguente ricerca ha esito
negativo: il sistema cerca tra tutte le
tabelle del DB Slave quella che ha lo
stesso numero di colonne della tabella
Master. Se esiste procede come se la
Tabella è stata trovata altrimenti segna
che non è presente.
Per ogni tabella del DB
Master
CERCA
tra le tabelle del
DB Slave
per
NOMENCLATURA
Si
Tabella
trovata?
Es. Confronto nomenclatura:
tab. Master -> ALLEGATOA
tab. Slave -> ALLEGATOA
ALLEGATOA == ALLEGATOA?
oppure
tab. Master -> UTENTI
if tab. Slave -> UTENTE
UTENTE(inizia per)UTEN?
(CodiceFiscale.CheckCodiceFiscale
(Contenuto))
return
TipologiaContenuto.CodiceFiscale;
Es. Confronto ALIAS:
…
tab. Master -> RICHIESTE1
If (VerifyType.IsValidMail
Alias -> PRQ
(Contenuto))
tab. Slave -> PRQ
return TipologiaContenuto.Mail;
PRQ == PRQ(Alias di RICHIESTE1)?
…
if (ControllaCittà(Contenuto))
return TipologiaContenuto.Citta;
….
No
CONTROLLA se esiste
tra le tabelle dello
Slave una che si chiama
come l’ALIAS associato
alla tabella Master
Tabella
trovata
?
Per ogni colonna della tabella
Master trovata confronto
l’esistenza tra le colonne della
tabella Slave di Riferimento
per NOMENCLATURA e ALIAS
Colonna
trovata
?
Si
No
Controllo
CONTENUTO
della colonna (lavora
sui primi 15 record)
Si
No
NON TROVATO (*)
FINE
Confronta la tipologia
delle colonne Master
con quelle della
colonne Slave
Esito tabelle
Esito
colonna
2.1.5
ANALYZER -> Estrae:
ANALYZER
Esito database Master
Esito database Slave
Per ogni tabella
da Estrarre
Esiste tabella
master con
riferimento
tabella slave?
No
Si
Crea CHIAVE unica per tutte
e due le tabelle
Per ogni tabella preleva il
contenuto dai rispettivi
database esterni.
FINE
Salva CONFRONTO e
ESTRAZIONE nel Db
risultato interno
Salva Contenuto
in File XML
Crea CHIAVE unica per
singola tabella
2.1.6
Esempio XML contenente il risultato del confronto
• L’Esito del confronto viene memorizzato in una apposita tabella del sistema
(DSANALYZER) in formato XML per permettere ulteriori confronti.
<DSRESULT >
<DataSource>
<idConnessione>0</idConnessione>
<Descrizione>Finanziaria 2010 - Finanziaria
2011</Descrizione>
<DBName>finanziaria2010 - finanziaria2011</DBName>
</DataSource>
<Tabelle>
<Tabella>
<DB_NAME />
<NOME>ALLEGATOA</NOME>
<STATO />
<ISSERVIZIO>false</ISSERVIZIO>
<TABELLA_RIF>ALLEGATOA</TABELLA_RIF>
<IS_FOREIGNKEY>false</IS_FOREIGNKEY>
<ESITO>UGUALE</ESITO>
<COLORE />
<ALIAS />
<ORDINE>0</ORDINE>
<ID_CONNESSIONI>1</ID_CONNESSIONI>
<ID_CONNESSIONI>2</ID_CONNESSIONI>
<Colonne>
<Colonna>
<NOMECOLONNA>ID</NOMECOLONNA>
<ALIASCOLONNA />
<ESITOCOLONNA>UGUALE</ESITOCOLONNA>
<COLONNA_RIF>ID</COLONNA_RIF>
…..
2.1.7
Esempio FILE XML contenente i dati della tabella estratta
• L’estrazione, dei database esterni, viene memorizzata in apposite tabelle del
sistema sotto forma di mapping.
• Il contenuto delle tabelle estratte, invece, viene memorizzato in file in
formato xml salvati in una cartella locale del server raggruppati per database.
Il percorso contenente i file è il
seguente:
C://«MQSystem»/nome database
esterno che conteneva fisicamente
la tabella/
Il nome di ogni file xml è creato nel
seguente modo:
«DB» + chiave associata alla tabella
estratta + identificativo dell’utente
che ha estratto la tabella + «.xml»
<?xml version="1.0" standalone="yes" ?>
<NewDataSet>
<Table>
<ID>1</ID>
<tipocaldaia>caldaia ad acqua calda standard</tipocaldaia>
<costante>0.8</costante>
</Table>
<Table>
<ID>2</ID>
<tipocaldaia>caldaia ad acqua calda standard a gasolio</tipocaldaia>
<costante>0.7</costante>
</Table>
<Table>
<ID>3</ID>
<tipocaldaia>caldaia ad acqua calda a bassa temperatura</tipocaldaia>
<costante>0.8</costante>
</Table>
<Table>
<ID>4</ID>
<tipocaldaia>caldaia a gas a condensazione</tipocaldaia>
<costante>0.9</costante>
</Table>
….
</NewDataSet>
2.1.8
Gestione QUERY (QUERY BUILDER):
Crea query in base ai database estratti;
Esegue tali query utilizzando i file xml;
Salva le query nel sistema per essere utilizzate anche da altri utenti.
2.1.9
QUERY -> Creazione:
Stringa SQL
Estrae dalla stringa SQL:
Colonne
Tabelle
Condizioni
Per ogni nome tabella accede sul
DB interno per prelevare la CHIAVE
identificativa (creata
dall’estrazione)
Per ogni nome colonna accede sul
DB interno per prelevare la colonna
di riferimento se esiste (creata
dall’estrazione)
FINE
Restituisce
oggetto Query
Aggiunge
Condizione
2.1.10
QUERY -> Esecuzione:
Oggetto
QUERY
Per ogni tabella
identificata da una
CHIAVE preleva il file
XML
Per ogni File XML
legge ed esegue il
MERGE tra tutti quelli
prelevati creando una
tabella temporanea
Esegue lo script della Query filtrando
eventualmente per la condizione
inserita nella select.
FINE
Restituisce
risultato
2.2.1
Definizione
• Meta-entità usate dal sistema MQSystem: sono 4
RegisterUsers
DBs
Content
Query
• Ogni database è utilizzato da uno specifico agente del framework.
E
D
C
G
2.2.2
Schema E-R
RegisterUsers: Tabelle gestione utenti
DBs: Tabelle gestione database esterni e database risultato
D
E
Content: Tabelle di servizio
QUERY: Tabelle gestione query
C
DBs
D
C
Cont
RUs
E
Qs
G
G
2.3.1
Struttura del prototipo del sistema
Struttura principale della Home Page del sito Web:
1 - Intestazione
2 - Menu di navigazione orizzontale
3 - Menu di navigazione verticale
4 - HOME PAGE del sito contenente 2
sottomenu: 1 per accedere all’interno del
sistema (Area Riservata) e 2 per che
mostra un form di invio e-mail.
Struttura dell’Area Riservata:
1 - Menu dinamico creato in base
al profilo dell’utente che accede
funzionalità previste dal sistema
2 – Area che contiene la specifica
pagina web invocata dal menu
2
1
2.3.2
Creazione dinamica del menu di navigazione
Menu dinamico: mostra in base al profilo dell’utente, una serie di sezioni,
AREE, contenente dei link a specifiche pagine web ognuna con una diversa
funzionalità.
AREA
LINK alle pagine
Profilo Utente
• Windows Server 2008 installato su una macchina virtuale, messa a disposizione
dall’ENEA Cento Ricerche CASACCIA, configurata con Hyper-V che gestisce
diversi server della rete ENEA situati nella sala calcolo e raggiungibili da remoto
con un collegamento VPN.
• Piattaforma di sviluppo
denominato Visual Studio.
con l’ambiente di sviluppo integrato
• Componenti installati sul server per lo sviluppo
del sistema.
4.1
Prototipo Web del sistema
Pagina principale del sistema web MQSystem,
intitolato WEBSYS_4_QUERING, suddivisa in
tre sezioni che la contraddistinguono:
1. Home
2. Area Personale
3. Contattaci
Area Personale:
Pagina di Login per
l’autenticazione
4.2
Area riservata:
menu di navigazione per il
profilo Amministratore di
sistema
Data bases->Analyzer:
confronta due sorgenti dati per
procedere con l’estrazione e la
creazione del data base finale.
4.3
Esito confronto tabelle
Il sistema dopo il confronto mostra il risultato raggruppandolo per tabelle.
L’esito che viene mostrato a video per ogni singola entità è il seguente:
Nome tabella (eventuale alias) (esito => tabella di riferimento).
Esiti possibili:
UGUALE
SIMILE
SOTTOINSIEME
SOVRAINSIEME
DIVERSI
NON TROVATO
4.4
Esito confronto colonne
Selezionando la tabella dal risultato l’applicazione mostra:
l’esito delle colonne: Nome colonna (eventuale alias) (esito => colonna di
riferimento);
la tipologia della colonna analizzata dal framework.
Esiti possibili:
UGUALE
SIMILE
DIVERSI
NON TROVATO
4.4
Databases -> QBuilder
Presenta due sezioni:
1. Costruttore delle query.
2. Lista di query che l’utente
ha creato, salvato nel
sistema e che
eventualmente ha
aggiunto tra i preferiti.
1
2
4.5
Crea nuova Query
Vengono presentate due
menu a tendina:
Data base contenente le
sorgenti dati estratte,
Tabelle contenente le
tabelle del data base
selezionato.
La casella di testo, SQL
SCRIPT, si valorizzerà in
automatico con la query
che l’utente incomincerà a
costruire nel momento in
cui verrà selezionata la
tabella appropriata con le
relative colonne.
4.6
Esempi di Query
Esempio interrogazione sulla tabella UTENTI
registrati nell’anno 2008 per accedere
all’applicativo web Finanziaria2008.
Query semplice
Esempio conteggio quanti beneficiario di Sesso
maschile hanno fatto richiesta di intervento
negli anni 2010 – 2011 – Query per statistica
4.7
Esempi di Query utilizzando per due database diversi lo stesso SCRIPT SQL
Database selezionato 2007 –
viene creata la query
selezionando le colonne
dall’apposita lista e dopo aver
digitato
otteniamo il
risultato di 78683 record
Database selezionato 2008 –
Inseriamo nella casella di testo
SQL SCRIPT la query del database
2007.
Dopo aver digitato
otteniamo il risultato di 80000
record per la tabella relativa alle
richieste del 2008.
5.1
Sintesi
• Il sistema MQSystem è stato realizzato per integrare l’utilizzo di diversi
DBMS entrando nel merito della semantica delle informazioni e della
sintassi delle stesse al fine di gestire i dati in modo standardizzato in un
unico ambiente di sintesi per facilitarne l’analisi e le interrogazioni.
• MQSystem è stato progettato per migliorare le prestazioni di applicazioni
basate sui database eterogenei e distribuiti. Attraverso i file xml
contenente il contenuto di ogni tabella importata è possibile gestire
backup e interrogazioni veloci senza andare ad intaccare i database
esterni i cui dati sono in continuo cambiamento ed evitando
rallentamenti ai sistemi che li utilizzano.
• Un Tool, con ovvie, limitazioni ma di sicuro aiuto e di sicuro interesse dal
punto di vista applicativo, per strutturare database di grandi dimensioni
che si sono differenziati nel tempo a causa di modifiche circa le
informazioni richieste.
5.2
Considerazioni
• Il sistema MQSystem ha lavorato su un numero consistente di dati.
Solo per l’anno 2010 , attraverso dei report fatti dall’ENEA Centro
Ricerche Casaccia, sono stati rilevati un numero di pratiche per un
totale pari a 405.626;
• Per facilitare lo sviluppo del sistema e per non appesantire il lavoro della
CPU e della RAM sul server si è lavorato su dati filtrati e ridotti.
• Il sistema MQSystem, tuttavia, ha permesso attraverso delle semplici
interrogazioni di ottenere dei risultati statistici.
5.3
Statistiche effettuate dall’ENEA per l’anno 2010
Filtri adoperati
per la ricerca:
Statistica sui Benefici fiscali (Risparmio Energetico, Costo investimento, 55%) richiesti classificati per comma:
5.4
Statistiche effettuate dall’ENEA per l’anno 2010
Filtri adoperati
per la ricerca:
Statistica sui Risparmio Energetico e Totale dei costi sugli Immobili classificati per Anno di
Costruzione e filtrati per provincia di Roma
5.5
Esempi di statistiche effettuate con il sistema per ogni database estratto
Query
• Tipologia dell’Utenza
• Tipi di Immobile
• Risparmio Energetico
• Totale dei costi
I futuri sviluppi del sistema sono molteplici, si potrà ampliare:
• La gestione delle connessioni e degli utenti dei data base importati;
• La gestione del recupero dei dati considerando un dizionario completo delle
parole scritto anche in varie lingue;
• Le funzioni specifiche per la gestione distribuita di molteplici database da
utilizzare con DBMS più evoluti;
• La gestione avanzata di parametrizzazione delle query;
• La gestione di salvataggio di tabelle di dimensioni molto grandi in più file xml e
gestire tale suddivisione;
Si potrà, invece, migliorare la velocità di risposta del sistema creando un Web
Service (un servizio web), tra l’interfaccia web e il framework , gestendo metodi
asincroni.
Fine della presentazione!
Grazie per l’attenzione.