basi di dati spaziali - dipartimento di matematica e ...donatella.gubiani/... · verso una o...

8
1 Corso Corso di di Basi di Dati Spaziali Basi di Dati Spaziali Angelo Montanari Angelo Montanari Donatella Gubiani Donatella Gubiani La progettazione fisica: La progettazione fisica: gli indici spaziali gli indici spaziali - 2 2 Indici Indici data data- driven driven Gli Gli indici indici data data-driven driven si si adattano adattano alla alla distribuzione distribuzione degli degli oggetti oggetti (rettangoli rettangoli) ) sul sul piano piano Ad Ad ogni ogni nodo nodo è associato associato un un rettangolo rettangolo, , detto detto Directory Rectangle Directory Rectangle (DR), (DR), che che rappresenta rappresenta l'MBB l'MBB dei dei rettangoli rettangoli dei dei nodi nodi figli figli (o degli (o degli oggetti oggetti ad ad esso esso associati associati) Per Per accedere accedere ad un ad un rettangolo rettangolo della della collezione collezione indicizzata indicizzata, , si si percorre percorre l'albero l'albero dalla dalla radice radice verso verso una una o o pi più foglie foglie, , verificando verificando, per , per ogni ogni Directory Rectangle Directory Rectangle incontrato incontrato, le , le relazioni relazioni di di sovrapposizione sovrapposizione o o di di inclusione inclusione 3 Tipologie Tipologie di di indici indici La La struttura struttura originaria originaria R-alberi alberi Diverse Diverse varianti varianti, , tra tra le le quali quali R* R*-alberi alberi R + -alberi alberi 4 R- alberi alberi Sono Sono una una estensione estensione multidimensionale multidimensionale dei dei B + - alberi alberi (struttura struttura ad ad albero albero bilanciata bilanciata e e paginata paginata) Ogni Ogni nodo nodo rappresenta rappresenta un un rettangolo rettangolo. I . I nodi nodi sono sono organizzati organizzati in base in base alla alla relazione relazione di di inclusione inclusione: ogni ogni nodo nodo foglia foglia contiene contiene un un vettore vettore di di entry entry [MBB,OID] e [MBB,OID] e rappresenta rappresenta un un contenitore contenitore di di oggetti oggetti ogni ogni nodo nodo interno interno contiene contiene un un vettore vettore di di entry [DR,NODEID] e entry [DR,NODEID] e rappresenta rappresenta la la pi più piccola piccola area area rettangolare rettangolare (MBB) (MBB) che che contiene contiene gli gli oggetti oggetti rappresentati rappresentati dai dai corrispondenti corrispondenti nodi nodi figli figli 5 Struttura Struttura dell dell’R- albero albero per per ogni ogni nodo nodo dell'albero dell'albero, ad , ad eccezione eccezione della della radice radice, , il il numero numero di di entry entry è compreso compreso fra fra m ed M con m m ed M con m [0,M/2] [0,M/2] ogni ogni nodo nodo interno interno N N contiene contiene entry entry della della forma forma [DR,NODEID], dove DR [DR,NODEID], dove DR è un Directory Rectangle un Directory Rectangle di di un un nodo nodo figlio figlio di di N e NODEID N e NODEID è l’ indirizzo indirizzo della della pagina pagina corrispondente corrispondente ogni ogni nodo nodo foglia foglia N N contiene contiene entry entry della della forma forma [MBB,OID], dove MBB [MBB,OID], dove MBB è un minimal bounding box un minimal bounding box della della geometria geometria dell dell’oggetto oggetto memorizzato memorizzato all all’ indirizzo indirizzo OID OID la la radice radice ha ha almeno almeno due entry ( due entry (assumendo assumendo che che l’ albero albero contenga contenga almeno almeno due entry) due entry) tutte tutte le le foglie foglie si si trovano trovano alla alla stessa stessa profondit profondità 6 Regioni Regioni : clipping : clipping vs. overlapping vs. overlapping Dato Dato un un poligono poligono, , gli gli R-alberi alberi assegnano assegnano tale tale poligono poligono ad ad una una regione regione in base in base alla alla tecnica tecnica di di overlapping overlapping delle delle regioni regioni A A differenza differenza di di quanto quanto accade accade nei nei metodi metodi space space- driven, un driven, un poligono poligono è assegnato assegnato ad ad una una sola sola regione regione. Le . Le regioni regioni dell dell’ indice indice possono possono, , però però, , sovrapporsi sovrapporsi

Upload: others

Post on 22-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

1

Corso Corso di di

Basi di Dati SpazialiBasi di Dati Spaziali

Angelo Montanari Angelo Montanari

Donatella GubianiDonatella Gubiani

La progettazione fisica: La progettazione fisica:

gli indici spaziali gli indici spaziali -- 22

22

IndiciIndici datadata--drivendriven•• GliGli indiciindici datadata--driven driven sisi adattanoadattano allaalladistribuzionedistribuzione degli degli oggettioggetti ((rettangolirettangoli) ) sulsulpianopiano

•• Ad Ad ogniogni nodonodo èè associatoassociato un un rettangolorettangolo, , dettodettoDirectory RectangleDirectory Rectangle (DR), (DR), cheche rappresentarappresental'MBBl'MBB deidei rettangolirettangoli deidei nodinodi figlifigli (o degli (o degli oggettioggetti ad ad essoesso associatiassociati))

•• Per Per accedereaccedere ad un ad un rettangolorettangolo delladella collezionecollezioneindicizzataindicizzata, , sisi percorrepercorre l'alberol'albero dalladalla radiceradiceverso verso unauna o o pipiùù fogliefoglie, , verificandoverificando, per , per ogniogniDirectory Rectangle Directory Rectangle incontratoincontrato, le , le relazionirelazioni didisovrapposizionesovrapposizione o o didi inclusioneinclusione

33

TipologieTipologie didi indiciindici

•• La La strutturastruttura originariaoriginaria

RR--alberialberi

•• Diverse Diverse variantivarianti, , tratra le le qualiquali

R*R*--alberialberi

RR++--alberialberi

44

RR--alberialberi•• SonoSono unauna estensioneestensione multidimensionale multidimensionale deidei BB++--alberialberi ((strutturastruttura ad ad alberoalbero bilanciatabilanciata e e paginatapaginata))

•• OgniOgni nodonodo rappresentarappresenta un un rettangolorettangolo. I . I nodinodisonosono organizzatiorganizzati in base in base allaalla relazionerelazione didiinclusioneinclusione::

–– ogniogni nodonodo fogliafoglia contienecontiene un un vettorevettore didi entry entry [MBB,OID] e [MBB,OID] e rappresentarappresenta un un contenitorecontenitore didioggettioggetti

–– ogniogni nodonodo internointerno contienecontiene un un vettorevettore didientry [DR,NODEID] e entry [DR,NODEID] e rappresentarappresenta la la pipiùùpiccolapiccola area area rettangolarerettangolare (MBB) (MBB) cheche contienecontienegligli oggettioggetti rappresentatirappresentati daidai corrispondenticorrispondentinodinodi figlifigli

55

StrutturaStruttura delldell’’RR--alberoalbero

–– per per ogniogni nodonodo dell'alberodell'albero, ad , ad eccezioneeccezione delladella radiceradice, , ililnumeronumero didi entry entry èè compresocompreso frafra m ed M con m m ed M con m ∈∈[0,M/2][0,M/2]

–– ogniogni nodonodo internointerno N N contienecontiene entry entry delladella forma forma

[DR,NODEID], dove DR [DR,NODEID], dove DR èè un Directory Rectangle un Directory Rectangle didi un un

nodonodo figliofiglio didi N e NODEID N e NODEID èè ll’’indirizzoindirizzo delladella paginapagina

corrispondentecorrispondente

–– ogniogni nodonodo fogliafoglia N N contienecontiene entry entry delladella forma forma

[MBB,OID], dove MBB [MBB,OID], dove MBB èè un minimal bounding box un minimal bounding box delladella

geometriageometria delldell’’oggettooggetto memorizzatomemorizzato allall’’indirizzoindirizzo OIDOID

–– la la radiceradice ha ha almenoalmeno due entry (due entry (assumendoassumendo cheche ll’’alberoalbero

contengacontenga almenoalmeno due entry)due entry)

–– tuttetutte le le fogliefoglie sisi trovanotrovano allaalla stessastessa profonditprofonditàà

66

RegioniRegioni: clipping : clipping vs. overlappingvs. overlapping

•• DatoDato un un poligonopoligono, , gligli RR--alberialberi assegnanoassegnano tale tale poligonopoligono ad ad unauna regioneregione in base in base allaalla tecnicatecnica didioverlapping overlapping delledelle regioniregioni

•• A A differenzadifferenza didi quantoquanto accadeaccade neinei metodimetodi spacespace--driven, un driven, un poligonopoligono èè assegnatoassegnato ad ad unauna sola sola regioneregione. Le . Le regioniregioni delldell’’indiceindice possonopossono, , peròperò, , sovrapporsisovrapporsi

Page 2: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

2

77

EsempioEsempio 11

88

EsempioEsempio 22

RR--alberoalbero con m=2 ed M=4 (i con m=2 ed M=4 (i rettangolirettangoli delledellefogliefoglie sonosono rappresentatirappresentati dada lineelinee punteggiatepunteggiate))

99

Inserimenti/cancellazioniInserimenti/cancellazioni

•• Le Le proprietproprietàà delldell’’RR--alberoalbero sonosono preservatepreservatedalledalle operazionioperazioni didi inserimentoinserimento e e cancellazionecancellazione

•• La La strutturastruttura sisi adattaadatta allaalla distribuzionedistribuzione deideidatidati: a un : a un grangran numeronumero didi oggettioggetti presentepresente in in unauna certacerta regioneregione spazialespaziale corrispondecorrisponde un un grangrannumeronumero didi fogliefoglie ((vicinevicine) ) delldell’’RR--alberoalbero

1010

Un Un esempioesempio realereale

•• Directory rectangle Directory rectangle delledelle fogliefoglie didi un Run R--alberoalberocostruitocostruito per per raccogliereraccogliere i i datidati idrograficiidrografici dellodelloStatoStato del Connecticutdel Connecticut

1111

DimensionamentoDimensionamentodidi un Run R--alberoalbero

•• Il Il numeronumero massimomassimo M M didi entry in un entry in un nodonododipendedipende ovviamenteovviamente dalledalle dimensionidimensioni delldell’’entryentrye e delladella paginapagina

•• Come Come neinei BB++--alberialberi, M , M puòpuò assumereassumere un un valorevalorediversodiverso neinei nodinodi interniinterni e e neinei nodinodi fogliafoglia (OID (OID èèll’’indirizzoindirizzo didi un record un record appartenenteappartenente ad ad unaunadata data paginapagina ed ed èè, , didi normanorma, , pipiùù grandegrande didiNODEID, NODEID, indirizzoindirizzo didi unauna paginapagina))

•• La La sceltascelta del del valorevalore didi m m dipendedipende dalledallestrategiestrategie didi splitting splitting deidei nodinodi

1212

Point query in un RPoint query in un R--alberoalbero•• VieneViene eseguitaeseguita in due in due passipassi::

–– PRIMO PASSO: PRIMO PASSO: selezionaseleziona tuttitutti i i figlifigli delladella radiceradice

ilil cui Directory Rectangle cui Directory Rectangle contienecontiene ilil puntopunto P. P.

RipeteRipete tale tale operazioneoperazione per per tuttitutti nodinodi individuatiindividuati, ,

ad ad ogniogni livellolivello, , finofino a a raggiungereraggiungere ilil livellolivello delledelle

fogliefoglie

In In ogniogni nodonodo internointerno visitatovisitato N, N, sisi possonopossono

presentarepresentare due due situazionisituazioni::

•• se non se non esisteesiste alcunaalcuna entry entry ilil cui cui rettangolorettangolo

contengacontenga P, la P, la ricercaricerca terminatermina (P (P cadecade nellonello

spaziospazio mortomorto del del nodonodo))

•• se P se P èè contenutocontenuto nelnel rettangolorettangolo didi unauna o o pipiùù entry, entry,

sisi visitavisita il/iil/i corrispondente/icorrispondente/i sottoalbero/isottoalbero/i

Page 3: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

3

1313

Point query in un RPoint query in un R--alberoalbero -- 2 2 –– SECONDO PASSO: SECONDO PASSO: l'insiemel'insieme delledelle fogliefoglie individuate individuate al al terminetermine del primo del primo passopasso vieneviene esaminatoesaminato per per stabilirestabilire se se ilil loroloro MBB MBB contienecontiene PP

NOTA.NOTA. Le window query Le window query sonosono moltomolto similisimili allealle point point query (query (dettaglidettagli omessiomessi))

1414

Point query: Point query: algoritmoalgoritmo -- 1 1 RTRT--PPOINTOINTQQUERYUERY ((P:point):set(oidP:point):set(oid))

beginbegin

result = result = ∅∅##passopasso 1: 1: attraversaattraversa l'alberol'albero dalladalla radiceradice e e calcolacalcola#SL, #SL, insiemeinsieme delledelle fogliefoglie ilil cui DR cui DR contienecontiene PPSL = RSL = RTREETREETTRAVERSALRAVERSAL(root,P)(root,P)##passopasso 2: 2: scorrescorre le le fogliefoglie e e determinadetermina le entry le entry ##cheche contengonocontengono PPforfor eacheach L L inin SL SL dodo

##scansionescansione entry entry nellanella fogliafoglia LLforfor eacheach e e inin L L dodo

ifif ((e.mbbe.mbb contains P) contains P) then then result+= {result+= {e.oide.oid}}end forend for

end forend for

returnreturn resultresultendend

1515

Point query: Point query: algoritmoalgoritmo -- 2 2 RRTREETREETTRAVERSALRAVERSAL ((nodeid:PageIDnodeid:PageID, P:point): set of leaves, P:point): set of leaves

beginbegin

result = result = ∅∅##restituiscerestituisce la la paginapagina associataassociata al al nodonodoN = N = RREADEADPPAGEAGE(nodeid(nodeid))ifif (N is a leaf) (N is a leaf) thenthen returnreturn {N}{N}elseelse

##scorrescorre le entry le entry didi N e N e visitavisita quellequelle##cheche contengonocontengono PPforfor eacheach e e inin N N dodo

ifif ((e.dre.dr contains P) contains P) thenthen

result+= result+= RRTREETREETTRAVERSALRAVERSAL(e.nodeid,P(e.nodeid,P))end ifend if

end forend for

end ifend if

returnreturn resultresultendend

1616

InserimentoInserimento

•• GliGli RR--alberialberi sonosono unauna strutturastruttura didiindicizzazioneindicizzazione dinamicadinamica gestitagestita in in modomodoanalogoanalogo aiai BB++--alberialberi

•• InserimentoInserimento: : sisi scendescende lungolungo ll’’alberoalberoscegliendoscegliendo ad ad ogniogni nodonodo ilil nodonodo figliofigliocorrispondentecorrispondente allaalla regioneregione cheche soddisfasoddisfaparticolariparticolari critericriteri (ad (ad esempioesempio, minor , minor incrementoincremento didi area)area)

•• SaturazioneSaturazione didi unauna fogliafoglia: : sisi esegueesegueunun’’operazioneoperazione didi split split cheche propagapropaga le le modifichemodifiche al al livellolivello superioresuperiore

1717

PiPiùù in in dettagliodettaglio.. .. -- 11

•• Per Per inserireinserire un un oggettooggetto in un Rin un R--alberoalbero sisi attraversaattraversal'alberol'albero a a partirepartire dalladalla radiceradice finofino a a raggiungereraggiungere unaunafogliafoglia ((funzionefunzione IINSERTNSERT))

•• Ad Ad ogniogni livellolivello ((nodinodi interniinterni), ), sisi selezionaseleziona un un nodonodo figliofigliotale tale cheche ll’’allargamentoallargamento del del suosuo DR DR necessarionecessario per per contenerecontenere ll’’MBBMBB delldell’’oggettooggetto dada inserireinserire risultirisulti minimominimo((funzionefunzione CCHOOSEHOOSESSUBTREEUBTREE); tale ); tale allargamentoallargamento èè nullonullo se se ll’’MBBMBB èè contenutocontenuto nelnel DRDR

•• RaggiuntaRaggiunta unauna fogliafoglia, , sisi possonopossono presentarepresentare due due situazionisituazioni::

–– fogliafoglia non non pienapiena: : unauna nuovanuova entry [MBB,OID] entry [MBB,OID] vieneviene

aggiuntaaggiunta allaalla paginapagina associataassociata allaalla fogliafoglia; se ; se ilil DR DR

delladella fogliafoglia vava allargatoallargato, , bisognabisogna propagarepropagare tale tale

allargamentoallargamento verso verso ll’’altoalto ((funzionefunzione AADJUSTDJUSTPPATHATH). ). NelNel

casocaso peggiorepeggiore, , finofino allaalla radiceradice1818

PiPiùù in in dettagliodettaglio.. .. -- 22

–– fogliafoglia l l pienapiena: : devedeve essereessere effettuatoeffettuato unouno split split

((funzionefunzione SSPLITPLIT). ). VieneViene creatacreata unauna nuovanuova fogliafoglia ll’’ e le e le

M+1 entry M+1 entry vannovanno distribuitedistribuite tratra l e ll e l’’. . TerminatoTerminato lo lo

split, split, vava aggiornataaggiornata ll’’entryentry didi l l nelnel nodonodo genitoregenitore f e f e

vava inseritainserita in f in f unauna nuovanuova entry per lentry per l’’ ((funzionefunzione

SSPLITPLITAANDNDAADJUSTDJUST). Tale ). Tale inserimentoinserimento puòpuò provocareprovocare lo lo

splitting splitting didi f (se f (se pienopieno). ). NelNel casocaso peggiorepeggiore, lo , lo

splitting splitting puòpuò propagarsipropagarsi finofino allaalla radiceradice

incrementandoincrementando didi 1 la 1 la profonditprofonditàà delldell’’alberoalbero

Page 4: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

4

1919

EsempioEsempio 11

InserimentoInserimento del del rettangolorettangolo 15 (15 (assumiamoassumiamo M=4)M=4)

2020

EsempioEsempio 22

InserimentoInserimento del del rettangolorettangolo 16 (16 16 (16 vava inseritoinseritonellanella fogliafoglia b b cheche risultarisulta essereessere gigiàà pienapiena; ; unaunanuovanuova entry entry vava inseritainserita ancheanche nelnel genitoregenitore didi b b

cheche risultarisulta essereessere a a suasua voltavolta gigiàà pienopieno..)..)

2121

Insert: Insert: algoritmoalgoritmoIINSERTNSERT (e: (e: LeafEntryLeafEntry) )

beginbegin

##inizializzainizializza la la ricercaricerca dalladalla radiceradicenode = rootnode = root##scegliesceglie un un percorsopercorsowhilewhile (node is not a leaf) (node is not a leaf) dodo

node = Cnode = CHOOSEHOOSESSUBTREEUBTREE(node,e)(node,e)end whileend while

##inserisceinserisce nellanella fogliafogliaIINSERTNSERTIINNLLEAFEAF(node,e)(node,e)##eseguiesegui lo split e lo split e sistemasistema ll’’alberoalbero se la se la fogliafoglia vava in in #overflow, #overflow, altrimentialtrimenti sistemasistema ilil percorsopercorsoifif (node overflows) (node overflows) thenthen SSPLITPLITAANDNDAADJUSTDJUST (node)(node)else else AADJUSTDJUSTPPATHATH (node)(node)end ifend if

end end

2222

AdjustPathAdjustPath: : algoritmoalgoritmoAADJUSTPATHDJUSTPATH (node: Node) (node: Node)

beginbegin

ifif (node is root) (node is root) then returnthen return

elseelse

##trovatrova ilil genitoregenitore del del nodonodoparent = Gparent = GETETPPARENTARENT(node)(node)##sistemasistema ll’’entryentry del del nodonodo genitoregenitoreifif (A(ADJUSTDJUSTEENTRYNTRY ((parent,[node.mbb,node.idparent,[node.mbb,node.id]) ])

thenthen

#entry #entry modificatamodificata: : sistemasistema ilil genitoregenitoreAADJUSTDJUSTPPATHATH (parent)(parent)

end ifend if

end ifend if

endend

2323

SplitAndAdjustSplitAndAdjust: : algoritmoalgoritmoSSPLITPLITAANDNDAADJUSTDJUST (node: Node) (node: Node)

beginbegin

##creacrea un un nuovonuovo nodonodo e e distribuiscedistribuisce le entryle entry

newnew--node = Snode = SPLITPLIT (node)(node)

ifif (node is root) (node is root) then then

CCREATEREATENNEWEWRROOTOOT (node,new(node,new--node)node)elseelse

##trovatrova ilil genitoregenitore

parent = Gparent = GETETPPARENTARENT(node)(node)

##sistemasistema ll’’entryentry del del nodonodo genitoregenitore

AADJUSTDJUSTEENTRYNTRY ((parent,[node.mbb,node.idparent,[node.mbb,node.id]) ])

##inserisceinserisce ilil nuovonuovo nodonodo nelnel genitoregenitoreIINSERTNSERTNNODEODE (parent, [new(parent, [new--node.mbb,newnode.mbb,new--node.idnode.id]) ])

##sistemasistema ll’’entryentry del del nodonodo genitoregenitore

ifif (parent overflows) (parent overflows) thenthen SSPLITPLITAANDNDAADJUSTDJUST(parent)(parent)

else else AADJUSTDJUSTPPATHATH (parent)(parent)

end ifend if

end ifend if

endend 2424

StrategieStrategie didi splitsplit

•• OgniOgni strategiastrategia cheche rispettirispetti ilil vincolovincolo didi non non avereaveremenomeno didi m entry per m entry per nodonodo èè accettabileaccettabile

•• RequisitiRequisiti fondamentalifondamentali (non (non sempresempre compatibilicompatibili):):•• minimizzareminimizzare area (a)area (a)

•• minimizzareminimizzare la la sovrapposizionesovrapposizione (b)(b)

Page 5: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

5

2525

PerchPerchéé ridurreridurre ll’’areaarea??

•• La La minimizzazioneminimizzazione delldell’’areaarea riduceriducegligli spazispazi mortimorti ((sisi vedaveda ll’’algoritmoalgoritmoper le point query)per le point query)

2626

PerchPerchéé ridurreridurre le le sovrapposizionisovrapposizioni??

•• La La presenzapresenza didi regioniregioni sovrappostesovrappostecreacrea deidei problemiproblemi nellanella ricercaricerca didiunouno o o pipiùù poligonipoligoni cheche contengonocontengonoun un puntopunto datodato

––Non Non èè notonoto a priori in a priori in qualequale regioneregionedelldell’’indiceindice un un poligonopoligono èè statostato inseritoinseritoe e bisognabisogna, , quindiquindi, , analizzareanalizzare diversidiversisottoalberisottoalberi

2727

CancellazioniCancellazioni

•• La La cancellazionecancellazione didi unun’’entryentry e e dada un Run R--alberoalbero èè effettuataeffettuata in 3 in 3 passipassi::

•• PASSO 1. PASSO 1. TrovareTrovare la la fogliafoglia L L cheche contienecontiene ee

•• PASSO 2. PASSO 2. RimuovereRimuovere e e dada LL

•• PASSO 3. PASSO 3. RiorganizzareRiorganizzare ll’’alberoalbero, se , se necessarionecessario..

I I passipassi 1 e 2 1 e 2 sonosono similisimili a a passipassi vistivisti in in precedenzaprecedenza. Il . Il passopasso 3 3 èè pipiùù complicatocomplicato. . SoluzioneSoluzione semplicesemplice: : cancellarecancellare ilil nodonodo e e inserireinserire nuovamentenuovamente le le restantirestanti mm--1 entry.1 entry.

2828

Delete: Delete: algoritmoalgoritmo

DDELETEELETE (e: (e: LeafEntryLeafEntry) )

beginbegin

##trovatrova la la fogliafoglia contenentecontenente ee

L = FL = FINDINDLLEAFEAF (e)(e)

##rimuoverimuove le entry e le entry e riorganizzariorganizza ll’’alberoalbero

##partendopartendo dada L ed e;L ed e;

##ilil risultatorisultato èè un un insiemeinsieme Q Q didi nodinodi

Q = RQ = REORGANIZEEORGANIZE (L,e)(L,e)

##reinseriscereinserisce le entry le entry neinei nodinodi didi QQ

RREINSERTEINSERT (Q)(Q)

endend

2929

Reorganize: Reorganize: algoritmoalgoritmoRREORGANIZEEORGANIZE (N:Node, e: Entry): set of node entries (N:Node, e: Entry): set of node entries

beginbegin

Q = Q = ∅∅

##rimuoverimuove e e dada NNN = N N = N –– {e}{e}

ifif (N is not root) (N is not root) thenthen

ifif (|N|<m) (|N|<m) thenthen

Q = Q U {N}Q = Q U {N}

##recuperarecupera ilil genitoregenitore e lo e lo riorganizzariorganizzaF = GF = GETETPPARENTARENT(N)(N)

Q = Q U RQ = Q U REORGANIZEEORGANIZE(F,entry of N in F)(F,entry of N in F)

elseelse

#N #N modificatomodificato: : sistemasistema ilil percorsopercorso

AADJUSTDJUSTPPATHATH(N) (N)

end ifend if

end ifend if

returnreturn QQ

endend

3030

SullSull’’ordineordine didi inserimentoinserimento

•• La La qualitqualitàà delldell’’indiceindice dipendedipende fortementefortementedalldall’’ordineordine didi inserimentoinserimento ((rettangolirettangoli distribuitidistribuitiin in modomodo random random possonopossono provocareprovocare fortifortisovrapposizionisovrapposizioni didi nodinodi e e infeliciinfelici collocazionicollocazionidelledelle entry). Si entry). Si vedaveda, ad , ad esempioesempio, la , la collocazionecollocazione del del rettangolorettangolo 4 al 4 al passopasso b b ((sprecospreco didi spaziospazio))

Page 6: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

6

3131

R*R*--alberialberi e Packed Re Packed R--alberialberi

•• R*R*--alberialberi e packed Re packed R--alberialberi costituisconocostituiscono 2 2 tentativitentativi didi superaresuperare i i limitilimiti delldell’’organizzazioneorganizzazionespazialespaziale degli Rdegli R--alberialberi in in presenzapresenza didi inserzioniinserzionirandomrandom

•• R*R*--alberialberi: : sfruttanosfruttano ilil reinserimentoreinserimento delledelleentry per entry per miglioraremigliorare ilil clustering degli MBBclustering degli MBB

•• Packed RPacked R--alberialberi: : eseguonoeseguono un preun pre--processing processing didi un un datodato insiemeinsieme didi rettangolirettangoli per per determinaredeterminare ilil migliormiglior ordineordine didi inserimentoinserimento

3232

R*R*--alberialberi

•• R*R*--alberialberi realizzanorealizzano diversidiversi miglioramentimiglioramentiallall’’algoritmoalgoritmo didi inserimentoinserimento degli Rdegli R--alberialberi

•• ParametriParametri consideraticonsiderati::•• perimetroperimetro del Directory Rectangle del Directory Rectangle didi un un nodonodo

•• sovrapposizionesovrapposizione deidei nodinodi

•• area area copertacoperta dada un un nodonodo

3333

MiglioramentoMiglioramento delledellestrategiestrategie didi splitting splitting

•• (a) (a) nodonodo in in situazionesituazione didi overflow; (b) split overflow; (b) split delldell’’RR--alberoalbero ((definiscedefinisce la la partizionepartizione a a partirepartiredalledalle due entry due entry pipiùù lontanelontane); (c) split ); (c) split delldell’’RR**--alberoalbero ((esegueesegue lo split lo split lungolungo unouno deidei due due assiassi))

3434

UtilizzoUtilizzo forzatoforzato didi strategiestrategiedidi reinserimentoreinserimento

•• ReinserireReinserire alcunealcune entry entry ogniogni qualvoltaqualvolta sisi verificaverifica un un overflow in un overflow in un nodonodo. . NellNell’’esempioesempio, , ll’’inserimentoinserimento didi 8 8 causacausa un overflow (a). un overflow (a). AnzichAnzichéé limitarsilimitarsi ad ad unaunariorganizzazioneriorganizzazione locale (b), locale (b), sisi reinseriscereinseriscepreliminarmentepreliminarmente in v in v ilil nodonodo 4 4 cheche provocaprovoca la la maggiormaggiorquantitquantitàà didi spaziospazio mortomorto (c)(c)

3535

RR--alberialberi vs. R*vs. R*--alberialberi

•• ConfrontoConfronto tratra RR--alberialberi e R*e R*--alberialberi ((StatoStato del del Connecticut)Connecticut)

3636

RR--alberialberi vs. packed Rvs. packed R--alberialberi

•• Se la Se la collezionecollezione deidei rettangolirettangoli èè stabile stabile nelnel tempo, tempo, sisipuòpuò eseguireeseguire un preun pre--processing processing deidei datidati prima prima didicrearecreare ll’’RR--alberoalbero ((ordinareordinare i i rettangolirettangoli in base in base allaallaloroloro posizioneposizione per per massimizzaremassimizzare ll’’occupazioneoccupazione deideinodinodi delldell’’RR--alberoalbero))

Page 7: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

7

3737

RR++--alberialberi•• ObiettivoObiettivo: : ridurreridurre i i problemiproblemi cheche nascononasconodalladalla presenzapresenza didi sovrapposizionisovrapposizioni frafra le le regioniregioni

•• LL’’ideaidea èè quellaquella didi::–– eseguireeseguire ilil clipping clipping delledelle regioniregioni in in modomodo dadaottenereottenere regioniregioni cheche non non sisi sovrappongonosovrappongono

–– replicarereplicare ll’’associazioneassociazione ad un MBR in ad un MBR in ogniogniregioneregione didi livellolivello superioresuperiore cheche lo lo contienecontiene

•• Un RUn R++--alberoalbero occupaoccupa normalmentenormalmente pipiùùspaziospazio didi un Run R--alberoalbero, ma , ma tendetende a a miglioraremigliorare le le prestazioniprestazioni in in ricercaricerca. . RichiedeRichiede algoritmialgoritmi pipiùù complessicomplessi per per ll’’aggiornamentoaggiornamento delladella strutturastruttura

3838

RR++--alberialberi: un : un esempioesempio

3939

RR--alberialberi vs. Rvs. R++--alberialberi

4040

OperazioniOperazioni suglisugli RR++--alberialberi

•• Clipping in Clipping in sottorettangolisottorettangoli (a)(a)

•• DeadllockDeadllock (b)(b)

•• PropagazionePropagazione downward downward didi unouno split (c)split (c)

4141

ProgettazioneProgettazione fisicafisica -- 11

•• PROBLEMA: Come PROBLEMA: Come suddivideresuddividere e e memorizzarememorizzare gligli insiemiinsiemi didi valorivalorigeometricigeometrici presentipresenti in in unauna base base didi datidatigeograficageografica??

•• OSSERVAZIONI:OSSERVAZIONI:–– Non Non èè possibilepossibile costruirecostruire un'unicaun'unica strutturastruttura datidatididi tipotipo topologicotopologico e/o un e/o un unicounico indiceindice spazialespazialeper per tuttitutti i i datidati contenuticontenuti nelnel sistemasistema

–– Non Non èè sempresempre utile utile costruirecostruire unauna strutturastrutturatopologica/indicetopologica/indice per per ogniogni attributoattributo didi tipotipoPOINT, LINE o POLYGON POINT, LINE o POLYGON contenutocontenuto in in unaunarelazionerelazione ((tabellatabella))

4242

ProgettazioneProgettazione fisicafisica -- 22

•• SOLUZIONE: SOLUZIONE: SuddivisioneSuddivisione delladellabase base didi datidati in in stratistrati ((layerlayer):):

–– Per i Per i datidati del del medesimomedesimo stratostrato vienevienemantenutamantenuta unauna strutturastruttura topologicatopologicae/o e/o indiceindice spazialespaziale

––Non Non esisteesiste topologia/indicetopologia/indice tratra stratistratidiversidiversi

Page 8: Basi di Dati Spaziali - Dipartimento di Matematica e ...donatella.gubiani/... · verso una o piùfoglie , verificando , per ogni Directory Rectangle incontrato , le relazioni di sovrapposizione

8

4343

ProgettazioneProgettazione fisicafisica -- 33

•• VincoliVincoli tratra StratiStrati e e AttributiAttributi con con dominiodominiogeometricogeometrico in in unouno schema:schema:–– ogniogni stratostrato presentepresente in in unouno schema schema contienecontiene solo i solo i valorivalori geometricigeometrici didi unouno o o pipiùù attributiattributi geometricigeometriciappartenentiappartenenti a a relazionirelazioni dellodello schemaschema

–– i i valorivalori didi un un attributoattributo geometricogeometrico sonosono contenuticontenuti in in unouno e un sol e un sol stratostrato

•• DaDa ciòciò derivaderiva cheche::–– in in unouno schema schema cheche presentipresenti relazionirelazioni ((tabelletabelle) con ) con attributiattributi geometricigeometrici devedeve essereessere presentepresente almenoalmeno unounostratostrato

–– in in unouno schema schema cheche presentipresenti relazionirelazioni ((tabelletabelle) con ) con attributiattributi geometricigeometrici, , vava indicataindicata la la corrispondenzacorrispondenzaattributoattributo geometrico/stratogeometrico/strato

4444

EsempioEsempio -- 11

Relazioni

BOSCO (Tipo: STRING, Pg: POLYGON)

PRATO (Pascolo: BOOLEAN, Pg: POLYGON)

Strati

S_MONTAGNA ({POLYGON})

Mapping Attributi geometrici/Strati

BOSCO.Pg . S_MONTAGNA

PASCOLO.Pg . S_MONTAGNA

4545

EsempioEsempio -- 22