Documente Academic
Documente Profesional
Documente Cultură
RAPORT GENERAL
multe capete egale cu infinit, indicnd astfel c obiectul se extinde n acea direcie la infinit. Nodurile interioare conin intrri de forma: (I, pointer_fiu) unde pointer_fiu este adresa unui nod fiu aflat pe un nivel mai jos n arborele R i I acoper toate dreptunghiurile corespunztoare intrrilor din nodul fiu. Fie M numrul maxim de intrri dintr-un nod i fie m M/2 un parametru care specific numrul minim de intrri dintr-un nod. Un arbore R satisface urmtoarele proprieti: Fiecare nod frunz conine ntre m i M intrri, exceptnd rdcina; Pentru fiecare intrare a indexului (I, identificator_tuplu)dintr-un nod frunz, I este cel mai mic dreptunghi care spaial conine obiectul n-dimensional reprezentat de tuplul indicat; Fiecare nod interior are ntre m i M fii, exceptnd rdcina; Pentru fiecare intrare (I, pointer_fiu) dintr-un nod interior, I este cel mai mic dreptunghi care spaial conine dreptunghiurile din nodul fiu; Nodul rdcin are cel puin doi fii, exceptnd cazul cnd este o frunz; Toate frunzele apar la acelai nivel. Observaie: nlimea unui arbore R care conine N intrri este cel mult |logmN|-1 deoarece factorul de ramificare la fiecare nod este cel puin m. Numrul maxim de noduri este
N N + 2 +... +1 . Cel mai ru caz de utilizare a spaiului din noduri, exceptnd m m
rdcina, este m/M, dar n general nodurile vor tinde s aib mai mult de m intrri, fapt care va duce la scderea nlimii arborelui i la mbuntirea utilizrii spaiului. Dac nodurile au mai mult de 3 sau 4 intrri, arborele va fi foarte lat si aproape tot spaiul este utilizat pentru nodurile frunz. n Figura 1.1, putem observa structura unui arbore R, att vizualizare arborescent ct i vizualizare la nivel de dreptunghiuri care se suprapun ntre ele.
n cele ce urmeaz, vom nota cum EI dreptunghiul corespunztor unei intrri E, i cu Ep vom nota identificator_tuplu sau pointer_fiu pentru aceeai intrare E a indexului. Observaie: Algoritmul de cutare descinde n arbore de la rdcin ctre frunze ntr-o manier similar cu cea din arborele B. Totui este posibil ca mai mult de un subarbore al aceluiai nod rdcin s fie vizitat, de aceea nu se poate garanta o performan n cel mai ru caz. Putem afirma c o operaie de cutare necesit cel puin un timp O(logmN). n schimb, algoritmii de actualizare menin arborele ntr-o form care permite algoritmului de cutare s elimine regiunile irelevante ale spaiului indexat i s examineze numai datele aflate n apropierea ariei de cutare. Algoritm Search. Dndu-se un arbore R cu rdcina T, s se gseasc toate nregistrrile din index ale cror dreptunghiuri se suprapun cu un dreptunghi cutat S.
1.[Se caut n subarbori] Dac T nu este frunz, se verific fiecare intrare E pentru a determina dac EI se suprapune cu S. Pentru toate intrrile care se suprapun, se apeleaz recursiv procedura Search pentru sub-arborele a crui rdcin este referit de Ep. 2.[Se caut n nodurile frunz] Dac T este frunz, se verific toate intrrile pentru a determina dac EI se suprapune cu S. Dac da, atunci s-a gsit o nregistrare dintre cele cutate.
Se apeleaz AdjustTree pentru L i pentru LL dac s-a efectuat o divizare. 4.[Arborele crete n nlime] Dac propagarea divizrii nodurilor a cauzat divizarea rdcinii, se creeaz o nou rdcin ai crei fii sunt cele dou noduri rezultate.
Algoritm ChooseLeaf. Selecteaz un nod frunz n care se va plasa noua intrare E a indexului.
1.[Iniializare] Seteaz N la nodul rdcin. 2.[Se verific dac este frunza] Dac N este frunz, return. 3.[Se alege sub-arborele] Dac N nu este frunz, fie F intrarea din N al crei dreptunghi FI are nevoie de cea mai mic extindere pentru a include EI. Dac exist mai multe astfel de intrri, se alege cea care are dreptunghiul cu aria cea mai mic. 4.[Se descinde pn cnd o frunz este atins] Se seteaz N la nodul fiu referit de Fp i se repet de la pasul 2.
Algoritm AdjustTree. Se urc n arbore de la o frunz L ctre rdcin, ajustnd dreptunghiurile acoperitoare i propagnd divizrile nodurilor acolo unde este necesar.
1.[Iniializare] Se seteaz N=L. Dac L a fost divizat anterior, se seteaz NN s fie al doilea nod rezultat n urma divizrii. 2.[Se verific condiia de terminare] Dac N este rdcina, stop. 3.[Se ajusteaz dreptunghiul acoperitor n intrarea printe] Fie P nodul printe al lui N, i fie EN a N-a intrare n P. Se ajusteaz ENI astfel nct s cuprind (cat mai strns) toate dreptunghiurile intrrilor din N. 4.[Se propag divizarea nodului n sus] Dac N are un partener NN rezultat dintr-o divizare anterioar, se creeaz o nou intrare ENN cu ENNp care refer NN i ENNI care cuprinde toate dreptunghiurile din NN. Se adaug ENN la P dac este spaiu. Altfel, se apeleaz SplitNode care produce P i PP coninnd ENN i toate intrrile vechi ale lui P. 5.[Se mut la nivelul urmtor] Se seteaz N=P i se seteaz NN=PP dac o divizare a avut loc. Se repet de la pasul 2.
6
Algoritm FindLeaf. Dndu-se un arbore R a crui rdcin este T, s se gseasc nodul frunz care conine nregistrarea E.
1.[Se caut n sub-arbori] Dac T nu este o frunz, verific fiecare intrare F din T pentru a determina dac FI se suprapune cu EI. Pentru fiecare astfel de intrare se apeleaz FidLeaf pentru arborele a crui rdcin este referit de Fp, pn cnd E este gsit sau toate nregistrrile au fost verificate. 2.[Se caut n noul frunz pentru a gsi nregistrarea] Dac T este o frunz, se verific fiecare intrare pentru a vedea dac este identic cu E, dac E a fost gsit se returneaz T.
Algoritm CondenseTree. Dndu-se un nod frunz L din care s-a ters o intrare, se elimin nodul dac are prea puine intrri i se realoc intrrile sale. Se propag eliminarea nodului n sus n arbore dac este necesar. Se ajusteaz toate dreptunghiurile acoperitoare pe drumul ctre rdcin, fcndu-le mai mici, dac este posibil.
1.[Iniializare] Se seteaz N=L. Se seteaz Q, mulimea nodurilor eliminate, la mulimea vid. 2.[Se gsete nregistrarea printe] Dac N este rdcina, mergi la pasul 6. Altfel, fie P printele lui N, i fie EN a N-a intrare din P. 3.[Se elimin nodul care are intrri sunt limita admis] Dac N are mai puin de m intrri, se terge EN din P i se adaug N la mulimea Q. 4.[Se ajusteaz dreptunghiul acoperitor]
7
Dac N nu a fost eliminat, se ajusteaz ENI pentru a cuprinde, ct mai strns, toate intrrile din N. 5.[Se deplaseaz un nivel n sus arbore] Se seteaz N=P i se repet de la pasul 2. 6.[Se reinsereaz intrrile orfane] Se reinsereaz toate intrrile nodurilor din mulimea Q. Intrrile din nodurile frunz eliminate sunt reinserate n frunzele arborelui aa cum este descris n algoritmul Insert, dar intrrile din nodurile interioare trebuie plasate mai sus n arbore, astfel ca frunzele din subarborii lor dependeni s fie la acelai nivel cu frunzele din arborele principal.
Observaie: Algoritmul CondenseTree putea fi implementat i altfel: nodul cu mai puin de m intrri s fie fuzionat cu unul dintre nodurile vecine pentru care creterea ariei ar fi fost minim, sau nodul s fie eliminat din arbore dar intrrile sale orfane s fie distribuite n nodurile vecine. Ambele variante alternative cauzeaz, de asemenea, divizarea nodurilor. Guttman [1] a ales tehnica reinserrii intrrilor orfane din dou motive: 1. este mai uor de implementat deoarece se poate utiliza algoritmul Insert, iar eficiena este comparabil ntruct paginile de care este nevoie n timpul reinserrii vor fi de obicei aceleai pagini vizitate pe parcursul cutrii anterioare deci se vor afla deja n memorie; 2. reinserarea rafineaz incremental structura spaial a arborelui i previne deteriorarea gradual care ar putea s apar dac fiecare intrare ar fi localizat permanent n acelai nod printe.
Figura 1.2. a) Divizare incorect b) Divizare corect. Cea mai intuitiv modalitate de a gsi aria minim pentru cele dou noduri rezultate n urma divizrii, este de a genera toate posibilele grupri i de a alege pe cea mai bun. Totui, numrul de posibiliti este aproximativ 2M-1 iar o valoare rezonabil pentru M (de exemplu 50), conduce la un numr prea mare de posibiliti. Vom numi aceast strategie algoritmul exhaustiv. n [1], au fost propui doi algoritmi noi pentru divizarea nodurilor unui arbore R.
Se aplic algoritmul PickSeeds pentru a alege cele dou intrri care vor fi primele elemente ale grupurilor. Se asigneaz fiecare la cte un grup. 2.[Se verific condiia de terminare] Dac toate intrrile au fost asignate, stop. Dac un grup are att de puine intrri astfel nct toate celelalte intrri trebuie asignate lui pentru a avea m intrri n acest grup, se asigneaz intrrile i stop. 3.[Se selecteaz intrrile care se asigneaz] Se apeleaz PickNext pentru a alege urmtoarea intrare care va fi asignat. Se adaug aceast intrare la grupul care i va mri aria dreptunghiului acoperitor cel mai puin. Se rezolv acest lucru prin adugarea nregistrrii la grupul cu aria cea mai mic, apoi la cel cu cel mai mic numr de intrri, apoi la oricare. Se repet de la pasul 2.
Algoritm PickSeeds. Selecteaz dou nregistrri ca fiind primele elemente ale celor dou grupuri.
1.[Se calculeaz ineficiena gruprii intrrilor mpreun] Pentru fiecare pereche de intrri E1 i E2, se compune un dreptunghi J incluznd E1I i E2I. Se calculeaz d= aria(J)aria(E1I)-aria(E2I) 2.[Se alege perechea care consum cel mai mult spaiu] Se alege perechea cu valoarea d cea mai mare.
Algoritm LinearPickSeeds. Selecteaz dou nregistrri ca fiind primele elemente ale celor dou grupuri.
1.[Se gsesc dreptunghiurile extreme de-a lungul tuturor dimensiunilor] De-a lungul fiecrei dimensiuni, se gsete intrarea al crei dreptunghi are cea mai mare nlime i cea al crei dreptunghi are cea mai mic lungime. 2.[Se ajusteaz forma blocului de dreptunghiuri] Se normalizeaz intrrile gsite prin divizarea cu limea ntregului set de-a lungul dimensiunii corespunztoare. 3.[Se selecteaz perechea aflat cel mai mult la extreme] Se alege perechea cu cea mai mare valoare normalizat de-a lungul oricrei dimensiuni.
Pentru m, numrul minim de intrri dintr-un nod, s-au testat 3 valori: M/2, M/3 i 2. Toate testele au utilizat date bidimensionale (dar, structura arborelui i algoritmii suport orice numr de dimensiuni).
11
Primul test de performan vizeaz costul n timp CPU pentru o operaie de inserare, msurat ca funcie de dimensiunea paginii indexului. S-a lucrat cu un arbore ce conine 1057 dreptunghiuri de date [1]. S-a pornit iniial de la un arbore R vid, i sau inserat toate intrrile prin apelul algoritmului Insert pentru fiecare intrare. Performana algoritmului Insert a fost msurat doar pentru ultimele 10% din intrri, cnd arborele a fost aproape de dimensiunea final. Rezultatele experimentale se pot observa n Figura 1.3. Algoritmul exhaustiv, a crui complexitate crete exponenial cu dimensiunea paginii, este foarte lent pentru pagini de dimensiune mare. Algoritmul liniar este cel mai rapid, aa cum era de ateptat. Cu algoritmul liniar timpul CPU crete extrem de ncet odat cu creterea dimensiunii paginii, ceea ce sugereaz c divizarea nodurilor a fost responsabil numai pentru o mic parte din costul inserrii nregistrrilor. Costul mai mic al inserrilor, obinut pentru o cerin mai strict a echilibrului n nlime al arborelui (m=M/2), reflect c atunci cnd un grup devine plin, toi algoritmii de divizare plaseaz elementele rmase n cellalt grup fr a face alte comparaii.
Figura 1.3. Costul CPU pentru inserarea nregistrrilor n index. [1] Al doilea test de performan msoar performana algoritmului Search, aplicat pentru cutarea unor dreptunghiuri de numere aleatoare. S-a lucrat pe arborele construit la etapa anterioar de inserare i s-au evaluat 100 de cutri, fiecare cutare regsind aproximativ 5% din date. Rezultatele se pot observa n Figurile 1.4 i 1.5. Performana cutrii datelor indexate este aproape aceeai, pentru toi algoritmii de divizare i parametrii de umplere a nodurilor considerai. Algoritmul exhaustiv produce o structur a indexului puin mai bun, rezultnd n utilizarea mai puinor pagini ale indexului i a unui cost CPU mai mic, dar toate celelalte situaii evaluate
12
difer doar cu cel mult 10% fa de acest caz. Putem afirma c toi algoritmii produc o performan acceptabil.
Figura 1.4. Pagini ale indexului utilizate pentru efectuarea operaiei de cutare. [1]
Figura 1.5. Costul CPU pentru efectuarea operaiei de cutare. [1] Al treilea test de performan vizeaz costul tergerii unei nregistrri din index vezi Figura 1.6. S-a ters, n cadrul testului, a fiecare zecea nregistrare indexat
13
(deci s-au ters 10% din nregistrri). Performana algoritmului Delete este puternic afectat de parametrul m numrul minim de intrri dintr-un nod. Cnd un nod are mai puin de m intrri, acestea trebuie reinserate, iar reinserarea cauzeaz uneori divizarea nodurilor. Cu ct cerinele de umplere a nodurilor sunt mai stricte cu att nodurile vor risca sa aib mai des sub m intrri i aceste intrri orfane s fie mai numeroase. Mai mult, divizrille vor fi mai frecvente pentru c nodurile vor tinde s fie mai pline.
Figura 1.6. Costul CPU pentru efectuarea operaiei de tergere. [1] De asemenea, s-a urmrit i evaluarea eficienei utilizrii spaiului de stocare pentru structura de index. Figura 1.7 arat spaiul de stocare ocupat de index ca funcie de algoritmul de divizare, criteriul de umplere a nodurilor i dimensiunea unei pagini a indexului. n general, aa cum era de ateptat, rezultatele arat c indexul este cu att mai mic cu ct este mai strict criteriul de umplere a nodurilor. Cel mai puin dens index consum cu aproape 50% mai mult spaiu dect cel mai dens. Mai mult, n [1] se afirm c toate rezultatele pentru m=M/2 i m=M/3 variaz unele de altele doar cu maxim 15%.
14
Figura 1.7. Eficiena utilizrii spaiului. [1] Un al doilea rnd de experimente vizeaz performana arborelui R ca funcie de cantitatea de date din index. Au fost efectuate aceleai secvene de operaii ca i mai sus, dar pentru diverse valori ale numrului de nregistrri din index: 1057, 2238, 3295 i respectiv 4559 dreptunghiuri de date [1]. n efectuarea testelor, au fost alese dou combinaii de algoritm de divizare i criteriu de umplere a nodurilor: algoritmul liniar cu m=2 i algoritmul de cost ptratic cu m=M/3, ambele cu o dimensiune a paginii de index de 1024 octei (M=50). Figura 1.8 arat cum afecteaz dimensiunea arborelui performana operaiilor de inserare i tergere. Ambele configuraii testate, produc arbori cu dou nivele pentru 1057 nregistrri i arbori cu trei nivele pentru celelalte cazuri. Putem observa n figur c n cazul algoritmului ptratic costul inserrilor este aproape constant, exceptnd situaia cnd arborele crete n nlime, de la dou la trei nivele, i pot apare divizri ale nodurilor. Algoritmul liniar determin un cost constant al inserrilor n toate situaiile, ceea ce arat din nou faptul c divizrile, n cazul aplicrii acestui algoritm, determin doar o mic parte din costul total al inserrilor. Nici o divizare nu a avut loc n cadrul operaiilor de tergere pentru configuraia liniar, deoarece criteriul de umplere a nodurilor este foarte relaxat iar numrul de articole indexate este mic. Ca rezultat curba graficului arat doar un mic salt acolo unde crete numrul de nivele ale arborelui. Pentru configuraia de cost ptratic, curba graficului arat c au avut loc cteva divizri ale nodurilor determinate de operaiile de tergere. n concluzie, putem afirma c operaiile de inserare i tergere au un cost CPU independent de limea arborelui dar afectat de nlimea arborelui, care crete ncet odat cu creterea numrului de articole indexate.
15
Figura 1.8. Costul CPU pentru operaiile de inserare i tergere vs. cantitatea de date. [1] Figurile 1.9 i 1.10 confirm c cele dou configuraii testate au aproape aceeai performan pentru operaiile de cutare. Fiecare operaie de cutare regsete ntre 3% i 6% din date. Tendina de coborre a curbelor graficului se datoreaz faptului c, costul procesrii nodurilor unui arbore mai nalt devine mai puin semnificativ pe msur ce cantitatea de date regsit la fiecare cutare crete. Creterea numrului de nivele ale arborelui mpiedic coborrea costului ntre primul i al doilea punct din grafic. Costul CPU mic, mai puin de 150 microsecunde pentru cutarea unei nregistrri, n cazul unor cantiti mari de date, arat clar c indexul este foarte eficient n restrngerea cutrilor la subarbori mici.
16
Figura 1.9. Performana operaiei de cutare vs. cantitatea de date. Pagini ale indexului utilizate. [1]
Figura 1.10. Performana operaiei de cutare vs. cantitatea de date. Costul CPU. [1] n final, s observm Figura 1.11 care msoar spaiul ocupat de index n funcie de cantitatea de date indexate. Liniile drepte reflect faptul c aproape tot spaiul din index este ocupat de nodurile frunz, al cror numr variaz liniar cu cantitatea de date indexate. Pentru configuraia liniar, spaiul ocupat de arborele R a fost de aproximativ 40 octei per articol indexat n nodurile frunz, i numai de 20
17
octei per articol din nodurile interioare [1]. Pentru configuraia de cost ptratic, valoarea a fost de 33 octei per articol din nodurile interioare.
Figura 1.11. Spaiul necesar pentru arborele R vs. cantitatea de date. [1]
1.1.7 Concluzii
Arborele R poate indexa obiecte spaiale multi-dimensionale. Nodurile care corespund paginilor pe disc de dimensiune acceptabil (de exemplu 1024 octei) au valori ale lui M care produc o bun performan. Se poate utiliza i ca structura de index pentru memoria principal, dar cu un numr mai mic de noduri. Performana CPU este comparabil, dar nu va fi nici un cost I/O. Algoritmul liniar de divizare a nodurilor a demonstrat o bun performan pentru toate situaiile evaluate experimental. Este rapid, iar calitatea divizrilor care nu este cu mult mai slab dect n cazul algoritmului de cost ptratic, nu afecteaz considerabil performana arborelui.
I.2
Arbori M
n ultimii ani, necesitatea de a manipula diverse tipuri de date stocate n baze de date voluminoase a crescut drastic. Printre ncercrile cercettorilor de a mbunti tehnicile de manipulare a datelor multimedia, un rol dominant l au metodele de
18
extragere bazat pe coninut a datelor multimedia. n particular, s-au propus mai multe tehnici de indexare, capabile s suporte interogri bazate pe similariate. n mod tipic, aplicaiile multimedia necesit calcularea unor funcii distan ntre vectori multi-dimensionali ce descriu caracteristicile datelor multimedia cum ar fi form, textur, culoare, sunet. Pentru indexarea unor astfel de date, s-au propus diverse metode SAM (spacial access methods), ncepnd cu arborele-R (R-tree) propus de A. Guttman n 1984 i varianii si (R+-tree propus de Faloutsos i alii n 1987, R*-tree propus de Beckmann i alii n 1990). Metodele de indexare SAM sunt limitate ns de respectarea a dou condiii: 1. obiectele sunt reprezentate de valori caracteristice ntr-un spaiu vectorial multi-dimensional; 2. similaritatea ntre oricare dou obiecte trebuie s se bazeze pe o funcie care nu introduce nici o corelare ntre valorile caracteristice. Mai exact, trebuie utilizat o metric Lp, cum ar fi distana euclidian. n cadrul metodelor SAM, se acord o mare importan minimizrii costului operaiilor de I/O, i nu reducerii numrului de calcule ale distanelor. O alt abordare mai general a structurilor de index pentru date multimedia se bazeaz pe arbori metrici (VP-tree propus de Chiueh 1994, GNAT propus de Brin 1995, MVP-tree propus de Bozkaya i Ozsoyoglu 1997, M-tree propus de Ciaccia i alii 1997). Pentru a organiza spaiul de cutare, arborii metrici consider numai distanele relative ntre obiecte (spre deosebire de metodele SAM care consider poziii relative ntr-un spaiu vectorial), iar pentru a micora spaiul de cutare funcia utilizat pentru calcularea distanelor este o metric deci respect proprietatea de inegalitate a triunghiului. Aceti arbori ncearc s minimizeze numrul de calcule ale distanelor necesare rezolvrii unei interogri. n continuare vom prezenta cteva concepte fundamentale utilizate n contextul proiectrii structurilor de index amintite mai sus. Indexarea spaiului de cutare presupune furnizarea unui suport eficient pentru rezolvarea interogrilor bazate pe similaritate. Interogri bazate pe similaritate Sunt acele interogri care au ca scop gsirea n baza de date a obiectelor care sunt similare cu un obiect de referin ( query object), similaritatea ntre obiecte fiind msurat de o funcie specific d, care este metric. Exist dou tipuri de interogri bazate pe similaritate: range query (interogareraz) i k nearest neighbors query (interogare-cei mai apropiai k vecini). Definiie (range query) Fie un obiect interogare Q D i o distan de cutare maxim r(Q). Interogarea-raz range(Q,r(Q)) selecteaz toate obiectele indexate Oj pentru care d(Oj,Q)r(Q).
19
Definiie (k nearest neighbors query - K-NN) Fie un obiect interogare Q D i un numr ntreg k 1. Interogarea K-NN NN(Q,k) selecteaz k obiecte indexate care au cea mai mic distan fa de Q. Spaiu metric Formal, un spaiu metric este o pereche M=(D, d), unde D este un domeniu de valori caracteristice cheile de indexare d este o funcie (distan) cu urmtoarele proprieti: 1. d(Ox, Oy) = d(Oy, Ox) (simetrie) 2. d(Ox, Oy) > 0 (Ox Oy) i d(Ox, Ox)= 0 (pozitivitate) 3. d(Ox, Oy) d(Ox, Oz)+ d(Oz, Oy) (inegalitatea triunghiului)
d1, ..., dn sunt distanele de la centrul nodului la centrul fiecrui fiu. Un nod frunz este reprezentat n Fig. 1-b), unde: child1, ..., childn sunt pointeri ctre obiecte; c1, ..., cn sunt cheile de indexare ale obiectelor; d1, ..., dn sunt distanele de la centrul nodului la cheile de indexare ale obiectelor.
Fig. 1.1: Structur de index bazat pe conceptul de sfer Att nodurile interne ct i cele frunz, sunt dimensionate ca pagini pe disc, deci pentru a putea scrie sau citi un nod este nevoie exact de o operaie I/O. Mai mult, numrul de fii ai nodului index este funcie de parametrul de ocupare al unei pagini. Iniializarea unui arbore metric bazat pe conceptul de sfer presupune o partiionare ierarhic a datelor. Dac iniializarea se efectueaz prin inserri repetate (manier greedy) obinndu-se o partiionare a datelor bottom-up, atunci o inserare are o complexitate n timp de O(log n), iar timpul total de iniializare este O(nlog n). Arborele M, propus de P. Ciaccia, P. Zezula i M. Patella n 1997, combin att principiile arborilor metrici ct i cele ale metodelor SAM, furniznd optimizri ale performanei att la nivelul CPU (calcularea distanelor) ct i la nivelul costurilor operaiilor I/O. Arborele M este un arbore metric paginat, echilibrat, i capabil s indexeze fiiere de date dinamice. Arborele M extinde indexarea i pentru situaiile cnd se pot indexa obiecte utiliznd valori caracteristice comparate printr-o funcie distan, care fie nu se ncadreaz ntr-un spaiu vectorial, fie nu utilizeaz o metric Lp. Singura constrngere impus este ca distana utilizat s fie o metric. Arborele M partiioneaz obiectele pe baza distanelor relative, msurate de o funcie distan specific d, i stocheaz aceste obiecte n nodurile sale. Deci, este complet parametrizat de metrica d.
21
O intrare pentru un obiect al bazei de date Oj stocat ntr-un nod frunz are o structur similar cu cea a unui obiect de rutare, dar fr a conine raza de acoperire (este 0), iar cmpul pointer reine un identificator oid pentru obiectul actual. Acest identificator poate fi utilizat pentru a furniza acces la ntregul obiect posibil rezident ntr-un fiier de date separat. Oj oid(Oj ) d(Oj ,P(Oj)) obiectul bazei de date (valoarea sa caracteristic) identificator al obiectului distana de la Oj la printele su
de la nodul rdcin al arborelui i recursiv se traverseaz toate drumurile care nu pot fi excluse i care conduc ctre obiectele ce satisfac inegalitatea de mai sus.
RangeQuery(N:node, Q:query-object, r(Q):search_radius) { let Op, be the parent object of node N; if N is not a leaf then { Or, in N do: if |d(Op,Q) - d(Or,Op)| r(Q) + r(Or) then { Compute d(Or,Q); if d(Or,Q) r(Q) + r(Or) then RangeQuery (*ptr(T(Or)),Q,r(Q)); } } else { Oj, in N do: if d(Op,Q) - d(Oj,Op)| r(Q) then { Compute d(Oj,Q) ; if d(Oj,Q) r(Q) then Add oid(Oj) to the result ; } } }
Deoarece atunci cnd se acceseaz nodul N, distana dintre Q i Op, printele lui N, a fost deja calculat, este posibil s se renune la cutarea ntr-un sub-arbore fr a se calcula nici o alt nou distan. Algoritmul se bazeaz pe urmtoarele leme. Lema 1 Dac d(Or,Q) > r(Q) + r(Or), atunci pentru fiecare obiect Oj n T(Or) avem d(Oj,Q) > r(Q). Deci T(Or) poate fi exclus din aria cutrilor. Demonstraie: Avem datorit inegalitii triunghiului d(Oj,Q) d(Or,Q) - d(Oj, Or). Din definiia razei de acoperire avem d(Oj, Or) r(Or). Rezult de aici, d(Oj,Q) d(Or,Q) - r(Or). Prin ipotez, d(Or,Q) - r(Or) >r(Q). Deci, obinem d(Oj,Q) > r(Q). Pentru a aplica Lema 1, trebuie calculat distana d(Or,Q). Acest lucru se poate evita folosind urmtorul rezultat.
23
Lema 2 Dac |d(Op,Q) - d(Or,Op)| > r(Q) + r(Or), atunci d(Or,Q) > r(Q) + r(Or). Demonstraie: Rezult imediat din urmtoarele inegaliti ale triunghiului: d(Or,Q) d(Op,Q) - d(Or,Op) (Fig. 2 -a) d(Or,Q) d(Or,Op) - d(Op,Q) (Fig. 2 -b)
Fig. 1.2: Lema 2 aplicat pentru a elimina calcularea distanelor Folosindu-se principiul celor dou leme att pentru nodurile interne ct i pentru cele frunz, s-a artat experimental c la procesarea unei interogri-raz, se salveaz pn la 40% din costul CPU pentru calculul distanelor. Singurul caz unde este necesar calcularea tuturor distanelor, este pentru nodul rdcin al arborelui M, nod pentru care Op este nedefinit. Interogri k-NN (k nearest neighbors) Algoritmul K-NN_Search gsete primii k cei mai aporpiai vecini ai obiectul interogare Q (presupunndu-se c cel putin k obiecte sunt indexate in arborele M). Algoritmul utilizeaz dou structuri globale: o coad de prioriti PR, i un vector NN de k elemente care la sfritul execuiei va conine rezultatul (se folosete tehnica de lucru branch-and-bound). n PR se rein pointeri ctre sub-arborii activi, adic sub-arborii unde se pot gsi obiecte care se ncadreaz n rspuns. De asemenea, mpreun cu pointer-ul ctre rdcina sub-arborelui T(Or) se mai reine i valoarea dmin(T(Or)) care reprezint limita minim a distanei oricrui obiect din T(Or) pn la Q. dmin(T(Or)) = max {d(Or,Q) - r(Or), 0} Deoarece raza de cutare este distana dintre Q i k-vecinul cel mai apropiat curent (criteriul de micorare a spaiului cutrii este dinamic), ordinea n care nodurile
24
sunt vizitate afecteaz performana. Funcia ChooseNode extrage din PR urmtorul nod ce va fi examinat, acesta fiind nodul pentru care dmin este minim.
ChooseNode(PR:priority_queue) :node { let dmin(T(Or*)) = min{ dmin(T(Or))} considering all the entries in PR; Remove entry [ptr(T(Or*)), dmin(T(Or*))] from PR; return * ptr(T(Or*)); }
La sfritul execuiei algoritmului K-NN_Search, intrarea a i-a din vectorul NN va fi NN[i]=[oid(Oj),d(Oj,Q)], unde Oj este al i-lea cel mai apropiat vecin al lui Q. Vom nota cu di valoarea distanei din intrarea a i-a a vectorului NN. Astfel, dk este cea mai mare valoare a distanei din NN i joac rolul unei raze de cutare dinamice, ntruct orice sub-arbore pentru care dmin(T(Or)) > dk poate fi eliminat din aria cutrilor. Intrrile lui NN sunt iniial setate la NN[i]=[-,], i=1,,k. Ideea algoritmului K-NN_Search este de a calcula pentru fiecare sub-arbore T(Or) i o limit superioar dmax(T(Or)) a distanei oricrui obiect din T(Or) pn la Q. dmax(T(Or)) = d(Or,Q) + r(Or) De exemplu, fie k=1 i avem doi sub-arbori T(Or1) i T(Or2). Presupunnd c dmax(T(Or1))=5 i dmin(T(Or2))=7 atunci T(Or2) poate fi eliminat cu siguran din spaiul cutrii. Valorile dmax se insereaz n vectorul NN la poziiile corespunztoare, lsnd numai cmpul oid nedefinit pentru nceput.
k-NNSearch(T:root_node, Q:query_object, k:integer) { PR = [T,_]; for i = 1 to k do: NN[i] = [_,]; while PR 0 do: { Next_Node = ChooseNode(PR); k-NN_NodeSearch(Next_Node,Q, k); } }
Metoda k-NN_NodeSearch implementeaz partea fundamental a algoritmului. Pentru un nod intern, se determin nti sub-arborii activi i se insereaz n coada PR. Apoi, daca este cazul, se apeleaz funcia NN_Update care efectueaz o inserare ordonat n vectorul NN i primete napoi o valoare (posibil nou) a lui dk. Apoi aceast valoare este utilizat pentru a terge din PR toi sub-arborii pentru care dmin > dk. La fel se procedeaz i n cazul nodurilor frunz. Se aplic, de asemenea, i
25
optimizrile pentru reducerea numrului de calcule ale distanelor prin utilizarea distanelor pre-calculate din obiectul printe.
k-NN_NodeSearch(N:node, Q:query_object, k: integer) { let Op, be the parent object of node N; if N is not a leaf then { Or, in N do: if |d(Op,Q) - d(Or,Op)| dk + r(Or) then { Compute d(Or,Q); if dmin(T(Or)) dk then { Add [ptr(T(Or)), dmin(T(Or))] to PR; if dmax(T(Or)) < dk then { dk = NN_Update([_,dmax(T(Or))]) ; Remove from PR all entries for which dmin(T(Or)) > dk; } } } } else /* N is a leaf */ { Oj, in N do: if |d(Op,Q) - d(Oj,Op)| dk then { Compute d(Oj,Q); if d(Oj,Q) dk then { dk = NN_Update([oid(Oj), d(Oj,Q)]) ; Remove from PR all entries for which dmin(T(Oj)) > dk; } } } }
Algoritmul Insert descinde recursiv n arbore pentru a localiza frunza cea mai adecvat pentru acomodarea noului obiect On, posibil declannd i o operaie de divizare dac frunza este plin. Modalitatea de alegere a frunzei unde se va face inserarea este urmtoarea: se coboar la fiecare nivel al arborelui de-a lungul unui subarbore T(Or) pentru care nu este nevoie de nici o mrire a razei de acoperire ( d(Or ,On) r(Or)). Dac exist mai muli sub-arbori cu aceast proprietate, se alege cel pentru care obiectul On este cel mai aproape de Or. Dac nu exist nici un obiect de rutare astfel ca d(Or,On)r(Or), atunci se opteaz pentru minimizarea creterii razei de acoperire d(Or,On) - r(Or). Fie Nin mulimea de obiecte de rutare pentru care nu este nevoie de o mrire a razei de acoperire. Determinarea acestei mulimi poate fi optimizat prin aplicarea Lemei 2 astfel. Se substituie On cu Q i se seteaz r(On)=r(Q)=0 obinnd: Dac |d(Op , On) d(Or , Op)| > r(Or) atunci d(Or , On) > r(Or), din care rezult c Or N in . Aceast optimizare nu se poate aplica nodului rdcin.
Insert(N:node, entry(On):M-tree_entry) { let, NE be the set of entries in node N; if N is not a leaf then { let Nin = entries such that d(Or,On) r(Or); if Nin 0 then let entry(Or*) Nin :d(Or*,On) is minimum; else { let entry(Or*) NE :d(Or*,On) - r(Or*) is minimum; let r(Or*) = d(Or*,On); } Insert(*ptr(T(Or*)),entry(On)) ; } else /* N is a leaf */ { if N is not full then Store entry in N else Split(N,entry(On)) ;
} }
promovndu-se ctre nodul printe Np dou obiecte de rutare care s refere aceste dou noduri. Atunci cnd rdcina este divizat, o nou rdcin este creat i arborele M crete cu un nivel.
Split(N:node; E:M-tree_entry) { let NE = entries of node N U {E}; if N is not the root then let Op, be the parent of N, stored in Np node; Allocate a new node N; Promote(NE, Op1, Op2); Partition(NE, Op1, Op2, N1, N2); Store N1s entries in N and N2s entries in N; if N is the current root then { Allocate a new root node, Np ; Store entry(Op1) and entry(Op2) in Np ; } else { Replace entry(Op) with entry(Op1) in Np ; if node Np is full then Split (Np, entry(Op2)) else Store entry(Op2) in Np ; } }
Metoda Promote alege, conform unui anume criteriu, dou obiecte de rutare, Op1 i Op2, care vor fi inserate n nodul printe Np. Metoda Partition divide intrrile nodului plin (mulimea NE) n dou submulimi disjuncte N1 i N2, care sunt apoi stocate n nodurile N i respectiv N. Implementarea specific a metodelor Promote i Partition definete ceea ce vom numi politica de divizare (split policy). Arborele M ofer posibilitatea implementrii unor politici de divizare alternative, cu scopul de a regla performana structurii de index n funcie de specificul aplicaiei. Indiferent de politica de divizare utilizat, se pstreaz acceai semantic a razei de acoperire. Astfel, dac nodul divizat este frunz, atunci raza de acoperire a obiectului promovat Op1 este setat la
r (O p1 ) = max{d (O j , O p1 ) | O j N1 }
Acest lucru garanteaz c d(Oj, Op1) r(Op1) pentru orice obiect din T(Op1).
Politici de divizare
28
O politic de divizare ideal ar trebui s promoveze obiectele Op1 i Op2 n nodul printe i s partiioneze celelalte obiecte, astfel nct cele dou regiuni obinute s aib fiecare volum minim iar zona lor de suprapunere s fie minim. Pe lng aceste cerine, care sunt standard i pentru metodele SAM, trebuie luat n considerare i costul CPU (posibil mare) necesar calculrii distanelor. Iat cum au fost proiectate politicile de divizare pentru arborele M. Alegerea obiectelor de rutare Metoda Promote determin, dndu-se o mulime de intrri NE, dou obiecte care s fie promovate i stocate n nodul printe. Algoritmii specifici considerai n cadrul proiectrii arborelui M, pot fi clasificai nti conform criteriului de confirmare a obiectului printe original n rolul su. Definiie O politic de divizare confirmat alege drept unul dintre obiectele promovate, sa spunem Op1, chiar obiectul Op care este obiectul printe al nodului divizat. Adic, o politic de divizare confirmat extrage o regiune, centrat n jurul celui deal doilea obiect de rutare Op2, din regiunea care va rmne n continuare centrat n jurul lui Op. n general, aceast tehnic simplific execuia operaiei de divizare a unui nod i reduce numrul de calcule ale distanelor. n continuare, vom descrie pe scurt numai cteva alternative de implementare ale metodei Promote, dintre cele evaluate experimental de creatorii arborelui M. se consider toate posibilele perechi de obiecte i dup partiionarea mulimii de intrri, se promoveaz n nodul printe perechea de obiecte pentru care suma razelor de acoperire r(Op1)+ r(Op2) este minim. la fel ca mai sus, se consider toate posibilele perechi de obiecte, dar se utilizeaz numai distanele pre-calculate stocate deja n arbore. Pentru versiunea confirmat, unde Op1=Op, algoritmul determin Op2 ca fiind cel mai ndeprtat obiect de Op, adic d(Op2, Op)= max{d (O j , O p )}
j
cele dou obiecte care vor fi promovate n nodul printe, sunt selectate ntr-o ordine aleatoare. Dei nu este o politic foarte bun, este n schimb foarte rapid, iar performana sa poate fi utilizat ca referin pentru alte politici de divizare. metoda aleatoare de mai sus, dar iterat pentru un eantion de obiecte de dimensiune s>1. Pentru fiecare s(s-1)/2 pereche de obiecte din eantion, intrrile sunt distribuite i potenialele raze de acoperire stabilite. Se selecteaz apoi, perechea pentru care maximul celor dou raze de acoperire este minim. Pentru versiunea confirmat, numai s distribuii diferite sunt ncercate.
Distribuia intrrilor
29
Dndu-se o mulime de intrri NE i dou obiecte de rutare Op1 i Op2, se pune problema partiionrii eficiente a lui NE n dou submulimi N1 i N2. Pentru aceasta, sau considerat dou strategii de baz. Prima se bazeaz pe ideea decompoziiei de tip hiperplan generalizat i conduce la divizri ne-echilibrate, n timp ce a doua obine o distribuie echilibrat. Le vom descrie pe scurt. Hiperplan generalizat (generalized hyperplane). Se asigneaz fiecare obiect O j NE celui mai apropiat obiect de rutare: dac d(Oj,Op1) d(Oj,Op2) atunci asigneaz Oj lui N1, altfel asigneaz Oj lui N2. Echilibrat (balanced). Se calculeaz d(Oj,Op1) i d(Oj,Op2) pentru toate obiectele O j NE . Repet urmtorii pai pn cnd NE este vid: - asigneaz lui N1 cel mai apropiat vecin al lui Op1 n NE dup care acesta este ters din NE; - asigneaz lui N2 cel mai apropiat vecin al lui Op2 n NE dup care acesta este ters din NE; S-a artat c, n funcie de distribuia datelor i de modul cum sunt alese obiectele de rutare, exist cazuri cnd o politic de divizare ne-echilibrat poate conduce la o mai bun partiionare a obiectelor, datorit gradului adiional de libertate ce se obine.
30
Figura 1.3. O mulime de date eantion utilizat n experimente Politici de divizare echilibrate vs. politici de divizare neechilibrate Vom compara pentru nceput performana implementrilor pentru cele dou variante de distribuie a intrarilor ntr-un nod: hiperplanul generalizat i divizarea echilibrat. Tabelul 1.1 prezint overhead-ul unei politici echilibrate n raport cu cea neechilibrat, pentru procesarea interogrilor-raz cu dimensiunea Dim 0.04 (Dim = 2, 10) pe 104 obiecte. Rezultate similare au fost de asemenea obinute pentru dimensiuni mai mari. n tabel, la fel ca i n celelalte figuri, o politic confirmat de divizare este identificat de sufixul 1, n timp ce 2 desemneaz o politic neconfirmat. Prima valoare n fiecare pereche de intrare se refer la calculul distanelor (costul CPU) i a doua valoare la paginile citite de pe disc (costurile I/O). Cea mai important observaie este c varianta echilibrat conduce la un overhead considerabil al CPU, mrind de asemenea costurile I/O. Ca un exemplu, pentru mulimi de date 2-D, utilizarea variantei echilibrate n locul hiperplanului generalizat cu politica RANDOM_1 conduce la un arbore M pentru care volumul acoperitor este de 4.60 ori mai mare. Din cauza acestor rezultate, n continuare, toate politicile de divizare vor fi bazate pe hiperplanul generalizat.
RANDOM_1 SAMPLING_1 M_LB_DIST_1 RANDOM_2 m_RAD_2
Dim
overheadul
4.60
4.38
31
3.90
4.07
1.69
=2
Dim =10
Tabelul 1.1: Politici de divizare echilibrate vs. politici de divizare neechilibrate: CPU, I/O i volumul overhead-urilor Efectul Dimensionalitii Vom cerceta cum va fi influenat performana arborelui M prin creterea dimensionalitii mulimii de date. Numrul de obiecte indexate este 10 4 n toate graficele. Figura 1.4 arat c toate politicile de divizare cu excepia lui m_RAD_2 i mM_RAD_2 calculeaz aproape acelai numr de distane pentru construcia arborelui, i acest numr descrete cu creterea lui Dim. Explicaia este c, prin creterea lui Dim se va reduce capacitatea nodului, care are un efect benefic asupra numrului de distane calculate de algoritmii de inserie i divizare. Reducia este n mod particular evident pentru m_RAD_2 i mM_RAD_2, al cror cost CPU de divizare crete cu ptratul capacitii nodului.
Costurile I/O, prezentate n Figura 1.5, au o tendin invers i cresc cu dimensionalitatea spaiului. Aceasta poate fi nc o dat explicat prin reducerea capacitii nodului. Cea mai rapid politic de divizare este RANDOM_2 i cea mai nceat este, fr s surprind, m_RAD_2.
Figura 1.5. Costurile I/O pentru construirea arborelui M Figura 1.6 arat urmtoarele: calitatea construciei arborelui, msurat prin media volumului acoperit per pagin, depinde de complexitatea politicii de divizare i, totodat, criteriul politicii ieftine M_LB_DIST_1 este ntr-adevr suficient de eficient.
Performana pe procesarea interogrii 10-NN, considernd att I/O ct i selectivitatea distanei, este prezentat n Figurile 1.7 i 1.8, respectiv selectivitatea distanei este raportul distanelor calculate la numrul total de obiecte.
Figura 1.8. Selectivitatea distanei pentru interogrile10-NN Asupra acestor rezultate pot fi fcute anumite observaii interesante. Prima, politicile bazate pe promoii ne-confirmate au performane mai bune dect politicile confirmate, cum ar fi la costurile I/O, n special la dimensiuni mari unde ele salveaz
34
pn la 25% din costurile I/O. Aceast performan poate fi atribuit unui clustering mai bun al obiectelor pe care l pot obine aceste politici. Costurile I/O cresc cu dimensionalitatea n principal din cauza capacitii reduse a paginii, care conduce la arbori mai largi. Pentru intervalul considerat al valorilor lui Dim, capacitatea nodului variaz printr-un factor de 10, care aproape coincide cu raportul costurilor I/O la Dim = 50 pe costurile I/O la Dim = 5. n ceea ce privete selectivitatea distanei, diferene apar numai la valori mari ale lui Dim, i favorizeaz mM_RAD_2 i m_RAD_2, care prezint numai o degradare moderat a performanei. Deoarece aceste dou politici au aceeai complexitate i datorit rezultatelor de mai sus, m_RAD_2 este eliminat din analizele urmtoare. Scalabilitatea O alt provocare major n proiectarea arborilor M presupunea asigurarea scalabilitii performanei n raport cu mrimea mulimii indexate de date. Aceasta implic att aspecte ale construirii eficiente a arborelui ct i a unei bune performane la interogri de similaritate. Tabelul 1.2 prezint numrul mediu al calculelor distanei i al operaiilor I/O per obiect inserat, pentru mulimi de date 2-D a cror mrime variaz n intervalul 10 4 105. Rezultatele se refer la politica RANDOM_2, dar de asemenea au fost observate tendine similare pentru alte politici. Creterea moderat a numrului mediu de calcule ale distanei depinde att de creterea nlimii arborelui ct i de creterea densitii obiectelor indexate n interiorul clusterelor. Aceasta este cauzat de faptul c numrul clusterelor a fost pstrat fixat la 10, fr s se in cont de mrimea mulimii de date. numrul de obiecte (x 1 104) media numrului de 45.0 calcule ale distanei media numrului de I/O 8.9
2 49.6 9.3
3 53.6 9.4
4 57.5 9.5
5 61.4 9.6
6 65.0 9.6
7 68.7 9.6
8 72.2 9.6
9 73.6 9.7
10 74.4 9.8
Tabelul 1.2. Media numrului de calcule ale distanei i ale I/O pentru construcia arborelui M (politica de divizare RANDOM_2) Figurile 1.9 i 1.10 arat c, costurile de cutare 10-NN att pentru I/O ct i pentru CPU (calculele distanei) cresc logaritmic cu numrul de obiecte, ceea ce demonstreaz c arborele M are o bun scalabilitate cu mrimea mulimii datelor i c algoritmii de management dinamic nu deterioreaz calitatea cutrii. Trebuie s subliniem c o astfel de comportare este specific numai arborelui M, n timp ce alte metrici de arbore cunoscute sunt intrinsec statice.
35
n raport cu comportamentul relativ al politicilor de divizare, figurile arat c politicile ieftine (e.g. RANDOM i M_LB_DIST_1) sunt penalizate de capacitatea mare a nodului (M = 60) care apare cnd indexm puncte 2-D. ntr-adevr, cu ct este mai mare M, cu att sunt mai eficiente politicile complexe de divizare. Aceasta se ntmpl pentru c numrul de alternative pentru promoia obiectelor crete cu M 2, astfel pentru valori mari ale lui M probabilitatea ca politicile ieftine s realizeze o bun alegere descrete considerabil.
Compararea ntre arborele M i arborele R* Ultimul set de experimente pe care l prezentm compar arborele M cu arborele R*. Implementarea arborelui R* utilizat este, de asemenea, cea disponibil n pachetul GiST. Nu vom investiga n profunzime avantajele i dezavantajele celor dou structuri, mai degrab vom furniza cteva rezultate de referin obinute dintr-o metod de acces care este bine cunoscut i larg utilizat n sistemele de baze de date. n plus, dei arborele M are intrinsec un domeniu ntins de aplicabilitate, n [1] s-a considerat important s se evalueze performana sa relativ pe domenii tradiionale unde i alte metode de acces pot fi utilizate la fel de bine. Rezultatele din Figurile 1.11 i 1.12 compar costurile I/O i CPU, respectiv, pentru a construi arborele R* i arborele M, ultimul numai pentru politicile RANDOM_2, M_LB_DIST_1 i mM_RAD_2.
37
Figura 1.12 Calculele distanei pentru construirea arborelui M i a arborelui R* Tendina graficelor pentru arborele R* confirm ceea ce deja a fost observat despre influena capacitii nodului (vezi Figurile 1.4 i 1.5). Graficele evideniaz performanele diferite ale arborilor M i arborilor R* n termeni de cost CPU, n timp ce ambele structuri au costuri de construcie similare I/O. Figurile 1.13 i 1.14 prezint costul de cutare pentru interogriraz pe domenii ptratice cu mrimea Dim 0.01 . Se poate observa c, costul I/O pentru arborele R* este mai mare dect acela pentru toate variantele de arbore M. n dorina de a prezenta o comparaie imparial pentru costurile CPU, Figura 1.14 arat de asemenea, pentru fiecare politic de divizare i un grafic (etichetat (non opt)) n care optimizarea pentru reducerea numrului de calcule ale distanei nu este aplicat. Graficele arat c aceast optimizare este foarte eficient, salvnd pn la 40% din numrul de calcule ale distanei (rezultate similare au fost obinute pentru interogri NN). S observm c, chiar i fr o astfel de optimizare, arborele M este aproape totdeauna mai eficient dect arborele R*.
38
Figura 1.14. Selectivitatea distanei pentru interogri raz Din aceste rezultate care, reamintim, sunt departe de a furniza o comparaie detaliat a arborilor M i a arborilor R*, putem n mod evident observa c arborele M este o metod de acces competitiv n cazul indexrii datelor din spaii vectoriale.
1.2.7 Concluzii
Arborele M este o structur de index cu urmtoarele proprieti: este paginat, echilibrat, dinamic, rezident pe disc; poate indexa mulimi de date care aparin unor spaii metrice generice;
39
este, de asemenea, adecvat i pentru indexarea datelor din spaii vectoriale multi-dimensionale; permite efectuarea interogrilor bazate pe similaritate; execuia interogrilor este optimizat pentru a reduce att costul operaiilor de I/O, ct i costul CPU; furnizeaz mai multe politici de divizare a nodurilor, permind reglarea performanei n funcie de domeniul aplicativ.
Bibliografie
[1] A. Guttman, R-trees: A Dynamic Index Structure For Spatial Searching , ACM 1984 [2] T. Sellis, N. Roussopoulos, C. Faloutsos, The R+-tree: A Dynamic Index For Multi-Dimensional Objects, Proc. of the 13th VLDB Conference, 1987 [3] N. Beckmann, H. P. Kriegel, R. Schneider, B. Seegar , The R*-tree: An Efficient and Robust Access method for Points and Rectangles, ACM 1990 [4] K. A. Ross, I. Sitzmann, P. J. Stuckey , Cost-based Unbalanced R-Trees, IEEE 2001 [5] P. Ciaccia, M. Patella, P. Zezula, M-Tree: An Efficient Access Method for Similarity Search in Metric Spaces, Proc. of the 23rd VLDB Conference, 1997 [6] X. Zhou, G. Wang, J. Xu Yu, G. Yu, M+-Tree: A New Dynamical Multidimensional Index for Metric Spaces, Proc. of the 14th Australian Database Conference, 2003 [7] P. Ciaccia, A. Nanni, M. Patella, A Query-sensitive Cost Model for Similarity Queries with M-tree, Proc. of the 10th Australian Database Conference, 1999
40