|
|
R-stromy
Ji₧ n∞kolikrßt jsme v DatabßzovΘ abeced∞ zd∙raz≥ovali d∙le₧itost indexace po provoz relaΦnφ databßze. Podobn∞ je tomu i u databßzφ prostorov²ch objekt∙. Vzhledem ke geometrick²m vlastnostem t∞chto objekt∙ a hlavn∞ zvlßÜtnφ povaze prostorov²ch dotaz∙, vy₧aduje takovß indexace pon∞kud odliÜn² p°φstup. Nejznßm∞jÜφm technikou pro indexaci prostorov²ch objekt∙ jsou R-stromy navr₧enΘ Guttmanem v roce 1984. R-strom p°edstavuje jednoduchou modifikaci B-strom∙ znßm²ch z relaΦnφch databßzφ. Zßznamy v listov²ch uzlech R-stromu obsahujφ ukazatele k datov²m objekt∙m reprezentujφcφm prostorovΘ objekty. Technika pou₧φvß minimßlnφ ohraniΦujφcφ objekty, kterΘ naz²vßme minimßlnφ ohraniΦujφcφ vφcerozm∞rnΘ kostky (MOVK). Databßze d-rozm∞rn²ch prostorov²ch objekt∙ obsahuje n-tice reprezentujφcφ prostorovΘ objekty nap°. pomocφ jednoznaΦn²ch identifikßtor∙ a dalÜφch event. negeometrick²ch atribut∙. Vlastnφ indexace takov²ch objekt∙ je dßna pomocφ dvojic (I, identifikßtor n-tice), p°iΦem₧ I je MOVK ohraniΦujφcφ odpovφdajφcφ prostorov² objekt. Tyto zßznamy budeme naz²vat indexovΘ. MOVK mß tvar (I 0, I 1,..., I d-1), kde Ii je interval [ ai,bi] popisujφcφ ohraniΦenφ objektu v dimenzi i. NelistovΘ uzly obsahujφ zßznamy tvaru (I, ukazatel), p°iΦem₧ ukazatel ukazuje na podstrom v R-stromu takov², ₧e I pokr²vß vÜechny kostky, kterΘ se v n∞m vyskytujφ. Tyto zßznamy budeme naz²vat °φdφcφ. Na rozdφl od B-stromu nenφ striktn∞ dodr₧eno pravidlo o poloviΦnφm napln∞nφ uzl∙ v nejhorÜφm p°φpad∞. Je-li R-strom m-ßrnφ strom, pak m1 bude oznaΦovat parametr, pro kter² platφ m 1 £ m /2. Minimßlnφ poΦet nßslednφk∙ uzlu R-stromu bude m 1. R-strom je tedy m-ßrnφ strom, kter² mß nßsledujφcφ vlastnosti:
Z°ejm∞ pro E indexov²ch zßznam∙ je t°eba v nejhorÜφm p°φpad∞ hloubka R-stromu é logmEù -1, nejhorÜφ hodnota zapln∞nφ uzlu l je m1/m. P°φklad R-stromu pro m=3 ukazuje obrßzek 1. R-strom je struktura dynamickß, tj. je zalo₧ena na Üt∞penφ strßnek (pro operaci INSERT) a slΘvßnφ strßnek (pro operaci DELETE). Na rozdφl od B-strom∙ nenφ hledßnφ v R-stromu urΦeno jednou v∞tvφ. Proto₧e MOVK v jednotliv²ch podstromech se mohou p°ekr²vat, je mo₧nΘ, ₧e existuje vφce ne₧ jedna mo₧nost, jak pokraΦovat p°i prohledßvßnφ stromu z jednoho uzlu. Tφm je hledßnφ slo₧it∞jÜφ a veÜkerΘ optimalizace pou₧φvanΘ p°i konstrukci R-stromu jsou zalo₧eny na po₧adavku co nejvφce separovat ohraniΦujφcφ kostky, aby se omezil prostor vyhledßvßnφ. Z toho plynou specißlnφ po₧adavky na algoritmy typu INSERT, kde se realizujφ r∙znΘ heuristiky nabφzejφcφ vφcemΘn∞ uspokojivß °eÜenφ danΘho problΘmu.
I1 I2 I3 I4 I5 I6 I7 I8 I9 I10 I11 I12 I13 I14 I15 I16 I17 I18 I19 I1
I3 I9 I4 I11 I5 I13
I2 I8 I10 I14 I18 I12 I7 I19
I6 I16 I15 I7
Obr. 1 P°φklad R-stromu Rozd∞lenφ zßznam∙ do dvou uzl∙ bude d∞lßno tak, aby bylo co nejmΘn∞ pravd∞podobnΘ, ₧e bude pot°eba oba uzly p°i prohledßvßnφ zkouÜet. Proto₧e uzly jsou navÜt∞vovßny z uzlu-p°edch∙dce, je nutnΘ minimalizovat celkov² objem kostek v uzlech. P°φklad ÜpatnΘho a dobrΘho Üt∞penφ je znßzorn∞n na obrßzku 2.
Obr. 2 èpatnΘ a dobrΘ Üt∞penφ uzlu R-stromu Pro rozd∞lenφ uzl∙ je mo₧nΘ pou₧φt algoritmus uva₧ujφcφ vÜechny mo₧nosti. Hledß se globßlnφ minimum, p°iΦem₧ algoritmus mß exponencißlnφ slo₧itost. Guttman uvßdφ dalÜφ algoritmy, lineßrnφ a kvadratick², kterΘ pouze aproximujφ °eÜenφ. Zmφnφme zde kvadratick² algoritmus, kter² mß v experimentech lepÜφ chovßnφ ne₧ lineßrnφ. ProblΘm je rozd∞len na v²b∞r prvnφch kostek do uzl∙ a na p°ipojovßnφ dalÜφch. Vyberou se takovΘ dv∞ prvnφ kostky, kterΘ by m∞ly nejv∞tÜφ mrtv² prostor, kdyby pat°ily do jednΘ skupiny. V²b∞r dalÜφch kostek se °φdφ kritΘriem co nejmenÜφho p°φr∙stku, p°idßme-li kostku do skupiny. Takovß kostka se vybere a do takovΘ skupiny se p°i°adφ. Proto₧e tento postup m∙₧e vΘst k nerovnom∞rnΘmu zapl≥ovßnφ obou uzl∙, zkouÜφ se doplnit event. zbytek kostek do prßzdn∞jÜφho uzlu. P°i budovßnφ R-stromu dynamick²m zp∙sobem se pou₧φvaly nßsledujφcφ dva parametry, kterΘ byly minimalizovßny:
Existujφ vÜak dalÜφ mo₧nosti. Vhodn²m kritΘrium m∙₧e b²t nap°.
tj. v dvojrozm∞rnΘm prostoru obvod obdΘlnφk∙. Proto₧e nejmenÜφ obvod mß Φtverec, pokr²vajφcφ MOVK by mohly b²t Φtverce (krychle). Toho lze vyu₧φt v dotazech typu okno, kde okno je Φtverec. DalÜφm parametrem je pro minimalizaci m∙₧e b²t
Jde o to udr₧et nφzkou hloubku R-stromu, co₧ vede k ni₧Üφ cen∞ dotazu. Parametry se ovÜem ovliv≥uje netrivißlnφm zp∙sobem. Nap°. uplatn∞nφ prvnφch dvou parametr∙ vy₧aduje v∞tÜφ volnost v uzlech, co₧ vede k ni₧Üφmu vyu₧itφ pam∞ti. TakΘ kostky budou mΘn∞ ΦtvercovΘ. Naopak pou₧itφ Φtverc∙ (krychlφ) vede k lepÜφmu seskupovßnφ, tj. k efektivn∞ji vyu₧itΘ pam∞ti. ZkuÜenosti a anal²za chovßnφ R-strom∙ ukßzaly, ₧e lze nalΘzt °adu zlepÜenφ. Jedno z nich navrhl Greene, kter² p°i Üt∞penφ vybere jednu z os, provede °ez p°φmkou a Üt∞penφ provßdφ tak, ₧e vyu₧ije skupiny kostek tak, jak je urΦuje d∞lφcφ p°φmka. Vφce optimalizaΦnφch kritΘrii je zahrnuto v R* -stromech, kterΘ jsou strukturovanΘ stejn∞ jako R-stromy, liÜφ se pouze v algoritmech INSERT a DELETE. Obrßzek 3 ukazuje danou situaci.
p°epln∞n² uzel Üt∞penφ dle Guttmana
Üt∞penφ dle Greena Ü∞penφ v R* -stromech Obr. 3 R∙znΘ strategie Üt∞penφ uzlu R-stromu Je jasnΘ, ₧e R-strom slou₧φ hlavn∞ pro podporu prostorov²ch dotaz∙. Zkuste si zadat okno ve struktu°e na obrßzku 1, a hledat v n∞m mot²la. Budete-li mφt Üt∞stφ, R-strom vßs dovede do MOO I12. <seznam dφl∙ serißlu> <COMPUTERWORLD> |