1 Introduzione

Questa tesi affronta il problema relativo alla distribuzione di query SQL in una rete di database eterogenei con morfologia nota solo parzialmente [fig.1.1]. Il modello di utilizzo può essere dato da un ricercatore che gestisce le sue ricerche tramite un DBMS locale alla sua macchina, e che collabora con altri ricercatori che lavorano ad argomenti analoghi. Poniamo il caso che per un suo lavoro voglia consultare la sua base dati; non avendo trovato la risposta in locale decide di proporre il quesito ad altri ricercatori, che a loro volta chiederanno ad altri ricercatori e così via…

1.1 Obiettivo della tesi

Questo lavoro si propone di automatizzare il percorso appena citato, si vuole cioè distribuire la query sulla rete partendo da una ristretta cerchia di riferimenti ai vari nodi ed esploderla se necessario su tutti i siti componenti il sistema. Non si vuole realizzare un vero e proprio sistema distribuito, ma piuttosto un sistema che permetta di reperire dati dai vari siti. Non esiste quindi alcuna politica che riguarda la gestione della duplicazione delle informazioni nella base di dati distribuita, dato che non si conoscono tutti i siti del sistema. L` inserimento dei dati si effettua solo sul database locale; la query deve poter essere risolta da tutti i nodi della rete diviene naturale l’adozione di un modello di dati omogeneo con frammentazione orizzontale. Il sistema è quindi rivolto a quelle organizzazioni che utilizzano la stessa struttura di dati su vari siti e che hanno la necessità di reperire i dati dalla rete in modo trasparente.

 

 

 

1.2 Le soluzioni individuate

Dall’analisi del problema si è individuata la necessità di sviluppare due tipi di applicativi, il client che si occupa di recuperare la query dall’utente e il server che intercetta le richieste del client, le processa ed eventualmente le indirizza verso altri server della rete.

Per realizzare questo tipo di sistema sono state individuati due tipi di soluzione, una che si avvale della programmazione client/server tradizionale e una che utilizza la tecnologia degli agenti mobili.

 

1.2.1 Soluzione con tecnologia client/server tradizionale

Questo tipo di soluzione prevede la realizzazione di un sistema client/server in grado di intercettare le query che provengono dai vari siti, processarle ed eventualmente instradarle sugli altri nodi della rete [fig. 1.2.1].

Una normale sessione del server può essere così schematizzata:

 

 

 

 

 

 

Fig. 1.2.1 Architettura del sistema

Per garantire queste funzionalità è necessario progettare un protocollo che permetta di discriminare le diverse situazioni che si possono incontrare.

 

1.2.2 Soluzione con tecnologia ad agenti mobili

Anche questa soluzione, come già detto, prevede la realizzazione di un client che rileva le richieste dell’utente e di un server che elabora la query ma in questo caso invece di trasferire i dati della sola query verrà trasferito il programma vero e proprio che si occuperà di interrogare il database locale. Essenzialmente si tratta di trasferire un segmento eseguibile tra i vari nodi della rete [fig. 1.2.2]. Per questo tipo di soluzione è necessario progettare i seguenti tre diversi elementi software:

 

 

Fig. 1.2.2 Architettura del sistema

1.3 Scelta di progettazione

L’obiettivo di realizzare un sistema altamente integrabile ha influito notevolmente sulla scelta della soluzione che utilizza gli agenti mobili: infatti un sistema realizzato con detta tecnologia risulta essere più gestibile di un sistema progettato e realizzato con il paradigma client/server. La tecnologia ad agenti si basa sullo sviluppo di programmi autonomi che migrano sulla rete componente il sistema e divengono disponibili solo nel momento in cui vi è la necessità reale di utilizzarli, questo porta alla realizzazione di server leggeri che intercettano i vari robot e li eseguono.

Tale scelta prevede la realizzazione di un tool di interrogazione e descrizione remota di un database della rete; volendo realizzare questo tool con una soluzione classica sarebbe stato necessario aggiungere un componente apposito per la funzione appena descritta al server. Detto componente avrebbe sicuramente utilizzato delle risorse anche nei momenti di inoperatività, anche se utilizzato solo raramente avrebbe così appesantito il sistema. Con la soluzione che prevede l’utilizzo degli agenti mobili tutte le funzionalità aggiuntive possono essere sviluppate ed aggiunte secondo la logica degli agenti: per ogni funzione aggiuntiva è infatti necessario progettare e realizzare solo l’agente che si occupa di detto scopo senza modificare le caratteristiche del server. Il robot aggiuntivo viene eseguito sul server solo nel momento in cui è serve e normalmente non occupa risorse del sistema quando non viene utilizzato.

Questo tipo di paradigma di programmazione richiama la filosofia del progetto Java [bib.8] di puntare allo snellimento delle stazioni di lavoro che attualmente vedono molte delle risorse impiegate per programmi sotto utilizzati.