R-tree
Gli r-tree sono alberi paginati e bilanciati dove ogni nodo corrisponde a una regione triangolare detta minimal bounding box (MMB) che contiene tutte le regioni figlie
L’utilizzo dello storage da parte di un nodo varia dal a un valore minimo inferiore al (parametro tunabile)
Le foglie dell’albero sono entry nella forma (key, RID)
, dove il valore di chiave contiene le coordinate
possibile contenere anche oggetti con un estensione spaziale
I nodi interni dell’albero si presentano nella forma (MBB, PID)
, dove la chiave sono le coordinate della minimal bounding box
Concetto di MBB
La minima bounding box e definita come la regione hyper-rettangolare minima che contiene un set di punti
Per definirla e sufficiente conoscere le coordinate di due vertici opposti
R-tree vs b+tree
B+tree | R-tree |
---|---|
bilanciato e paginato | bilanciato e paginato |
i dati sono contenuti nelle foglie | i dati sono contenuti nelle foglie |
le foglie sono ordinate | non esiste l’ordine |
i dati sono organizzati in intervalli monodimensionali | i dati sono organizzati in intervalli multidimensionali |
la ricerca puntuale segue un solo percorso dell’albero | la ricerca puntuale può seguire strade diverse all’interno dell’albero |
Ricerca con r-tree
La ricerca con un r-tree consiste nel trovare tutti i punti che fanno parte della bounding box della query di ricerca
Per implementare la ricerca e necessario implementare le API previste dalla specifica GiST
Consistent(E,q)
ritorna true solo seE
eq
hanno intersezione non nullaUnion(P)
l’output e la MMB che contiene tutte le entryPenalty(E1,E2)
Se il punto si trova dentro la bounding box la penalty e0
altrimenti e data dal aumento di dimensione della bounding box stessaPicksplit(P)
in output vengono fornite le entry e l’output e un set di due bounding box con cardinalità inferiore, lo split viene deciso minimizzando l’area complessiva delle due MBB
minimizzare la somma complessiva e un problema Np-hard