Indici gerarchizzati per interrogazioni

annuncio pubblicitario
UNIVERSITÀ DEGLI STUDI DI CATANIA
FACOLTÀ DI SCIENZE MATEMATICHE, FISICHE E NATURALI
Corso di Laurea in Scienze dell’Informazione
Fabio Longo
Indici gerarchizzati per interrogazioni approssimate a
database relazionali
Tesi di laurea
Relatore: Ch.mo Prof. A. Ferro
Correlatore: Dott.ssa R. Giugno
Anno Accademico 1999-2000
OBIETTIVI
• Nuovo paradigma d’indicizzazione.
- Ricerche approssimate
- gerarchizzazione degli elementi coinvolti
nella ricerca
• Estensione dell’mSQL 2.0 con funzioni atte
all’utilizzo completo di tali indici.
• Creazione di un Web Server mSQL.
RICERCA APPROSSIMATA
x
o
d(ox,o1)
d(ox,o3)
d(ox,on)
d(ox,o2)
o
1
o
2
o
3
………………...
o
n
Funzione d(oi,oj) con i, j {1,2, …n} tale che renda (O,d) uno spazio metrico
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
Dove C = costo in caso di differenti etichette
S = costo in caso di differenti strutture
Altrimenti
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.
Y={A1, A2, A3}
VLS=( (A1,A2) (A1,A3) )
dove A1, A2, A3Ri per certi i{1,2,…,n}
A1
A2
Natural join: T[XY]
A3
X chiave primaria
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
Esecuzione
Cardinalità
Fetch
delledel
righe
della
dell’output
Trie
Ricerca Approssimata
createTrie()
trieSelect()
trieNumRows()
trieFetchRow()
m_result
int
m_row
createTrie
trieNumRows
* trieFetchRow
* trieSelect
( sock
( result
, (key
query_tree
( result
,) treeIndex)
) , t , c , s)
int
char
m_result
* query_tree
sock
* result
;
;;
char
int
t ; * key ;
Uso: serve
Uso:
restituisce
per accedere
il numero
ai delle
singoli
campi
di unanegli
riga, esiti
in base
di una
all’handle
ricercaresult di
charrighe
int
c ;*coinvolte
treeIndex
approssimata,
una
precedenteinchiamata
base all’handle
di trieSelect().
result di una precedente chiamata di
int
s;
trieSelect().
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
Uso: Calcola i VLS del trie creato da createTrie(), la cui distanza dall’VLS
attributi ivi contenuti avranno la forma: “tabella.attributo”.
query_tree non eccede il valore della tolleranza t, e che tiene conto dei parametri
c ed s.
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:
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.
Utilità:
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 soggetto
FINE
Scarica