universitÀ degli studi di catania facoltÀ di scienze matematiche, fisiche e naturali corso di...
TRANSCRIPT
UNIVERSITÀ DEGLI STUDI DI CATANIAFACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI
Corso di Laurea in Scienze dell’Informazione
Indici gerarchizzati per interrogazioni approssimate a database relazionali
Fabio Longo
Relatore: Ch.mo Prof. A. Ferro
Correlatore: Dott.ssa R. Giugno
Anno Accademico 1999-2000
Tesi di laurea
OBIETTIVI
• Creazione di un Web Server mSQL.
• Estensione dell’mSQL 2.0 con funzioni atte all’utilizzo completo di tali indici.
• Nuovo paradigma d’indicizzazione.
- Ricerche approssimate
- gerarchizzazione degli elementi coinvolti
nella ricerca
RICERCA APPROSSIMATA
1o 2o 3o no………………...
Funzione d(oi,oj) con i, j {1,2, …n} tale che renda (O,d) uno spazio metrico
xo
d(ox,on)
d(ox,o2)
d(ox,o3)d(ox,o1)
Problema: calcolare gli ok tali che d(ox,ok)t con t>0 k{1,2,3, …n}
MODELLI DI RICERCA APPROSSIMATA GIA’ STUDIATI
Modelli statici:
• FQ-tree (Fixed Query Tree)
• VP-tree (Vantage Point Tree)
• MVP-tree (Multiple Vantage Point Tree)
Modelli dinamici:
• M-tree (Metric Tree)
• Indici gerarchizzati
METODO DI K.OFLAZER
Notazione Vertex List Sequence: set di liste di vertici indicanti i singoli cammini dalla radice ad ognuna delle foglie dell’albero.
METODO DI K.OFLAZER
Sia Z=Z1, …,Zp una generica vertex list sequence.
Z[j] denota l’iniziale sottosequenza di j liste di vertici inclusa quella di posto j
dist(X[i],Y[j]) =
j * S Se i=0
i * S Se j=0
min(dist(X[i-1],Y[j-1]+C,dist(X[i-1],Y[j]+S,
dist(X[i],Y[j-1]+S) Se Xi e Yj differiscono solo per
l’etichetta del nodo.
min(dist(X[i-1],Y[j]),dist(X[i],Y[j-1]))+S Altrimenti
Dove C = costo in caso di differenti etichette
S = costo in caso di differenti strutture
METODO DI K.OFLAZER
Sforzo computazionale stimato per la ricerca di quei VLS che non distano da un altro VLS-query oltre un certa soglia t:
O(L2logLk1/ceiling(t/S))
Dove L = numero di foglie in ogni albero
k = numero degli alberi nella foresta
t = tolleranza
S = costo dell’aggiunta o cancellazione della foglia in un certo albero.
FORMALIZZAZIONE TEORICA DEL PROBLEMA
Ri:{Ti} i=1, …,n schema relazionale
Ri(A1:T1, A2:T2, …, Am:Tm) schema di relazione
Vincoli d’integrità:
• Y insieme di attributi NOT NULL
• X insieme di attributi tale da essere una chiave primaria per Ri:{Ti} i=1, …,n.
Vertex List Sequence formato da attributi di Ri:{Ti} i=1, …,n
T = Natural join tra gli schemi di relazione fra i quali attributi ne figura almeno
uno di Y.
FORMALIZZAZIONE TEORICA DEL PROBLEMA
• n-upla di una istanza di T si crei un VLS.
• Si immergano tutti i VLS generati in una struttura di tipo Trie.
• Applicazione del metodo di Oflazer per ricavare tutti i VLS del
Trie che distano da un dato VLS-query in input non oltre una
soglia t.
ESEMPIO: una semplice istanza.
Natural join: T[XY] X chiave primaria
Y={A1, A2, A3}
VLS=( (A1,A2) (A1,A3) ) dove A1, A2, A3Ri per certi i{1,2,…,n}
1A
2A 3A
ESEMPIO: una semplice istanza.
Creazione del VLS-query fissando i parametri:
• ax{a1, a2, a3, … }
• bx{b1, b2, b3, …}
• cx{c1, c2, c3, … }
API per l’estensione dell’mSQL 2.0 (C ansi)
Creazione del Trie
createTrie()
int createTrie ( sock , key , treeIndex)
int sock ;
char * key ;
char * treeIndex
Uso: costruisce il Trie relativo al database associato al proprio descrittore di socket sock, a partire dal VLS dato dalla stringa treeIndex, in cui tutti gli attributi ivi contenuti avranno la forma: “tabella.attributo”.
Esecuzione della Ricerca Approssimata
trieSelect()
m_result * trieSelect ( query_tree , t , c , s)
char * query_tree ;
int t ;
int c ;
int s ;
Uso: Calcola i VLS del trie creato da createTrie(), la cui distanza dall’VLS query_tree non eccede il valore della tolleranza t, e che tiene conto dei parametri c ed s.
Cardinalità dell’output
trieNumRows()
int trieNumRows ( result )
m_result * result ;
Uso: restituisce il numero delle righe coinvolte negli esiti di una ricerca approssimata, in base all’handle result di una precedente chiamata di trieSelect().
Fetch delle righe
trieFetchRow()
m_row * trieFetchRow ( result )
m_result * result ;
Uso: serve per accedere ai singoli campi di una riga, in base all’handle result di una precedente chiamata di trieSelect().
COSTRUZIONE DI UN INDICE GERARCHIZZATO
IDEA:
• Scegliere l’altezza dell’albero.
• Determinare quali dovranno essere gli
attributi che andranno ad occupare ognuno
dei livelli dell’albero.
• Determinare le parentele tra nodi di livelli differenti
rispettando i vincoli gerarchici definiti.
VINCOLI GERARCHICI
Definizione:
Utilità:
particolari restrizioni ai quali un albero è soggetto al momento di decidere, per un qualsiasi livello, chi dovrà essere il padre di un nuovo nodo tra quelli del livello soprastante.
fornire un criterio coerente, di cui un algoritmo non interattivo possa servirsi, per costruire il VLS che costituirà l’indice gerarchizzato.
VINCOLI GERARCHICI
Un vincolo gerarchico può essere espresso come una funzione discreta F tale che, su un attributo a:
- F(a)=b Se b nella gerarchia definibile dev’essere
necessariamente padre di a.
- F(a)=NULL Altrimenti
APPLICAZIONE: gestione di un database di alberghi
Scopo del progetto:
• Creazione di un sito Web nel quale un utente abbia la possibilità di scegliere un
albergo in un database, definendo le sue caratteristiche preferenziali ed il loro
grado d’importanza.
• Permettere all’utente di scegliere quale indice gerarchizzato utilizzare per la
ricerca (visualizzato in forma opportuna e comprensibile), o di crearne uno
nuovo secondo le sue preferenze attraverso una semplice interfaccia.
Espressivita’delle ricerche approssimate
Possibilita’di definire:
• Citta’ e quartiere dell’albergo
• Presenza di strutture aggiuntive quali: piscina, shop
store, campo da tennis, etc.
• Caratteristiche delle stanze singole, doppie e delle
suite, quali: prezzo, vista, etc.
• Caratteristiche di eventuali strutture annesse all’albergo,
quali: ristoranti, sale congressi, etc.
Esempio computazionale di ricerca approssimata
Esempio computazionale di ricerca approssimata
Esempio computazionale di ricerca approssimata
Esempio computazionale di ricerca approssimata
CONCLUSIONI
• Risultati: soddisfacenti
• Applicazione server testata su:
- Pentium 133Mhz, 16 Mb RAM, linux nella sua
distribuzione REDHAT 6.0
- AMD K6 333Mhz, 64 MB RAM, linux nella sua
distribuzione Mandrake 5.3
CONCLUSIONI
Algoritmo di creazione indici
assenza di significativi limiti per quel che riguarda:
• l’altezza dell’albero
• Il numero di attributi coinvolti nella ricerca approssimata
• I vincoli gerarchici ai quali l’indice possa essere soggettoFINE