Indici -dimensionali
Nati per soddisfare query che coinvolgono molteplici attributi, tra cui
- query puntuali
- query finestra
- nearest neighbor query
Limiti del b+tree
Supponendo di avere una window query su due attributi del tipo
SELECT * FROM table as T
WHERE T.A > 10
AND T.A < 20
AND T.B > 10
AND T.B < 20
In questo caso e possibile utilizzare un indice b+tree su entrambi gli attributi oppure 2 indici monodimensionali su i due attributi
In entrambi i casi si compie del lavoro inutile perché i punti spazialmente vicini non sono posti nelle stesse foglie
Indicizzamento spaziale
Per affrontare il problema sono state proposte una marea di strutture dati ma il concetto resta lo stesso, mappare record spazialmente vicini nelle stesse pagine
K-d-tree
Struttura mantenuta in memoria centrale non paginata e non bilanciata, dove ogni nodo rappresenta uno split sul valore mediana dell’attributo con la maggiore varianza
K-d-tree ricerca
In caso di ricerca si visitano tutti i rami dell’albero che contengono regioni che si intersecano con la regione definita dalla query
dato che l'albero non e bilanciato sono necessarie operazioni di ribilanciamento periodiche
le eliminazioni sono estremamente complicate
Paginando il k-d-tree: k-d-B-tree
E la versione paginata del K-d-tree dove ogni nodo corrisponde a un iper-rettangolo dello spazio ottenuto come unione delle regioni figlie
K-d-B-tree: overflow
In caso di overflow si partizionano i nodi padri fino a risalire alla root
non e sempre possibile mantenere il bilanciamento durante l'operazione di split
hB-tree
Variante del k-d-B-tree in cui le regioni possono contenere buchi, questo migliora la situazione in caso di split di un data block la differenza e data dal fatto che un nodo può essere referenziato da più separazioni
hB-tree: split
In caso di split della root i nodi figli vengono splittati come segue
Excell
Tecnica basata su una hash directory fatta a griglia -dimensionale dove ogni cella corrisponde a una datapage ma non e vero il contrario, estendendo il concetto di extendible hashing al caso multidimensionale.
Excell: split
In caso di split ci sono due casistiche:
- split di una datapage referenziata da due celle della directory, in questo caso e sufficiente aggiornare le referenze della directory
- split di una datapage referenziata da una cella della directory in questo caso si raddoppia la dimensione della griglia
tutte le problematiche e considerazioni fatte per l' extendible hashing restano valide
Grid file
Versione generalizzata del Excell, dove gli intervalli hanno dimensione variabile,
Mono-dimensional sorting
Si basa sul concetto di linearizzare lo spazio n dimensionale per mezzo delle cosiddette space-filling curves
In questo caso preservare l'ordine locale risulta quasi impossibile