Basi di Dati Spaziali - Dipartimento di Matematica e ... · PDF file verso una o...
date post
22-May-2020Category
Documents
view
0download
0
Embed Size (px)
Transcript of Basi di Dati Spaziali - Dipartimento di Matematica e ... · PDF file verso una o...
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 allaalla distribuzionedistribuzione degli degli oggettioggetti ((rettangolirettangoli) ) sulsul pianopiano
•• Ad Ad ogniogni nodonodo èè associatoassociato un un rettangolorettangolo, , dettodetto Directory RectangleDirectory Rectangle (DR), (DR), cheche rappresentarappresenta l'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 collezionecollezione indicizzataindicizzata, , sisi percorrepercorre l'alberol'albero dalladalla radiceradice verso verso unauna o o pipiùù fogliefoglie, , verificandoverificando, per , per ogniogni Directory Rectangle Directory Rectangle incontratoincontrato, le , le relazionirelazioni didi sovrapposizionesovrapposizione 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 nodinodi sonosono organizzatiorganizzati in base in base allaalla relazionerelazione didi inclusioneinclusione::
–– ogniogni nodonodo fogliafoglia contienecontiene un un vettorevettore didi entry entry [MBB,OID] e [MBB,OID] e rappresentarappresenta un un contenitorecontenitore didi oggettioggetti
–– ogniogni nodonodo internointerno contienecontiene un un vettorevettore didi entry [DR,NODEID] e entry [DR,NODEID] e rappresentarappresenta la la pipiùù piccolapiccola area area rettangolarerettangolare (MBB) (MBB) cheche contienecontiene gligli oggettioggetti rappresentatirappresentati daidai corrispondenticorrispondenti nodinodi figlifigli
55
StrutturaStruttura delldell’’RR--alberoalbero
–– per per ogniogni nodonodo dell'alberodell'albero, ad , ad eccezioneeccezione delladella radiceradice, , ilil numeronumero 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 didi overlapping 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
2
77
EsempioEsempio 11
88
EsempioEsempio 22
RR--alberoalbero con m=2 ed M=4 (i con m=2 ed M=4 (i rettangolirettangoli delledelle fogliefoglie sonosono rappresentatirappresentati dada lineelinee punteggiatepunteggiate))
99
Inserimenti/cancellazioniInserimenti/cancellazioni
•• Le Le proprietproprietàà delldell’’RR--alberoalbero sonosono preservatepreservate dalledalle operazionioperazioni didi inserimentoinserimento e e cancellazionecancellazione
•• La La strutturastruttura sisi adattaadatta allaalla distribuzionedistribuzione deidei datidati: a un : a un grangran numeronumero didi oggettioggetti presentepresente in in unauna certacerta regioneregione spazialespaziale corrispondecorrisponde un un grangran numeronumero didi fogliefoglie ((vicinevicine) ) delldell’’RR--alberoalbero
1010
Un Un esempioesempio realereale
•• Directory rectangle Directory rectangle delledelle fogliefoglie didi un Run R--alberoalbero costruitocostruito per per raccogliereraccogliere i i datidati idrograficiidrografici dellodello StatoStato del Connecticutdel Connecticut
1111
DimensionamentoDimensionamento didi un Run R--alberoalbero
•• Il Il numeronumero massimomassimo M M didi entry in un entry in un nodonodo dipendedipende ovviamenteovviamente dalledalle dimensionidimensioni delldell’’entryentry e e delladella paginapagina
•• Come Come neinei BB++--alberialberi, M , M puòpuò assumereassumere un un valorevalore diversodiverso neinei nodinodi interniinterni e e neinei nodinodi fogliafoglia (OID (OID èè ll’’indirizzoindirizzo didi un record un record appartenenteappartenente ad ad unauna data data paginapagina ed ed èè, , didi normanorma, , pipiùù grandegrande didi NODEID, NODEID, indirizzoindirizzo didi unauna paginapagina))
•• La La sceltascelta del del valorevalore didi m m dipendedipende dalledalle strategiestrategie 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
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 PP SL = RSL = RTREETREETTRAVERSALRAVERSAL(root,P)(root,P) ##passopasso 2: 2: scorrescorre le le fogliefoglie e e determinadetermina le entry le entry ##cheche contengonocontengono PP forfor eacheach L L inin SL SL dodo
##scansionescansione entry entry nellanella fogliafoglia LL forfor 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 resultresult endend
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 nodonodo N = 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 PP forfor 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 resultresult endend
1616
InserimentoInserimento
••