Paikkatiedon käsittely 5. Paikkatiedon indeksointi

Samankaltaiset tiedostot
Paikkatiedon hallinta ja analyysi 4. Paikkatiedon indeksointi

Paikkatiedon hallinta ja analyysi 4. Paikkatiedon indeksointi (jatkoa)

Algoritmit 2. Luento 6 Ke Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö

Paikkatiedon käsittely 6. Kyselyn käsittely

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 5 Ti Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö

v 1 v 2 v 3 v 4 d lapsisolmua d 1 avainta lapsen v i alipuun avaimet k i 1 ja k i k 0 =, k d = Sisäsolmuissa vähint. yksi avain vähint.

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 1. Luento 7 Ti Timo Männikkö

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Pinot, jonot, yleisemmin sekvenssit: kokoelma peräkkäisiä alkioita (lineaarinen järjestys) Yleisempi tilanne: alkioiden hierarkia

58131 Tietorakenteet (kevät 2009) Harjoitus 6, ratkaisuja (Antti Laaksonen)

Paikkatiedon käsittely 12. Yhteenveto

Hakupuut. tässä luvussa tarkastelemme puita tiedon tallennusrakenteina

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 2. Luento 7 Ti Timo Männikkö

Binäärihaun vertailujärjestys

Luku 8. Aluekyselyt. 8.1 Summataulukko

Miten käydä läpi puun alkiot (traversal)?

Algoritmit 1. Luento 5 Ti Timo Männikkö

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

AVL-puut. eräs tapa tasapainottaa binäärihakupuu siten, että korkeus on O(log n) kun puussa on n avainta

Algoritmit 2. Luento 3 Ti Timo Männikkö

Algoritmit 2. Luento 4 To Timo Männikkö

Algoritmit 2. Luento 3 Ti Timo Männikkö

B + -puut. Kerttu Pollari-Malmi

ALGORITMIT 1 DEMOVASTAUKSET KEVÄT 2012

A TIETORAKENTEET JA ALGORITMIT

! 7! = N! x 8. x x 4 x + 1 = 6.

Algoritmit 2. Luento 4 Ke Timo Männikkö

Algoritmit 2. Luento 9 Ti Timo Männikkö

Paikkatiedon hallinta ja analyysi 5. Kyselyn käsittely

V. V. Vazirani: Approximation Algorithms, luvut 3-4 Matti Kääriäinen

58131 Tietorakenteet ja algoritmit (syksy 2015) Toinen välikoe, malliratkaisut

Algoritmit 1. Luento 6 Ke Timo Männikkö

TKT20001 Tietorakenteet ja algoritmit Erilliskoe , malliratkaisut (Jyrki Kivinen)

Datatähti 2019 loppu

Hakemistorakenteet. R & G Chapter Tietokannan hallinta, kevät 2006, Jan 1

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Hakemistotyypeistä. Hakemistorakenteet. Hakemiston toteutuksesta. Hakemiston toteutuksesta

Algoritmit 1. Luento 12 Ke Timo Männikkö

Algoritmit 1. Luento 12 Ti Timo Männikkö

58131 Tietorakenteet (kevät 2008) 1. kurssikoe, ratkaisuja

Tehtävän V.1 ratkaisuehdotus Tietorakenteet, syksy 2003

Johdatus graafiteoriaan

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

lähtokohta: kahden O(h) korkuisen keon yhdistäminen uudella juurella vie O(h) operaatiota vrt. RemoveMinElem() keossa

811312A Tietorakenteet ja algoritmit, , Harjoitus 5, Ratkaisu

Tietokannan indeksointi: B puun ja hajautusindeksin tehokkuus

A TIETORAKENTEET JA ALGORITMIT KORVAAVAT HARJOITUSTEHTÄVÄT 3, DEADLINE KLO 12:00

PN-puu. Helsinki Seminaari: Tietokannat nyt HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Hajautusrakenteet. R&G Chapter Tietokannan hallinta, kevät 2006, Jan 1

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Pikalajittelu: valitaan ns. pivot-alkio esim. pivot = oikeanpuoleisin

Olkoon seuraavaksi G 2 sellainen tasan n solmua sisältävä suunnattu verkko,

58131 Tietorakenteet (kevät 2009) Harjoitus 9, ratkaisuja (Antti Laaksonen)

7. Tasapainoitetut hakupuut

= = = 1 3.

Tekijä MAA2 Polynomifunktiot ja -yhtälöt = Vastaus a)

D B. Harvat hakemistot. Harvat hakemistot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Kierros 4: Binäärihakupuut

D B. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa. Poistot. B+ -puun tasapainotus poistossa. B+ -puun tasapainotus poistossa

Hilbertin aksioomat ja tarvittavat määritelmät Tiivistelmä Geometria-luentomonisteesta Heikki Pitkänen

Ohjelmoinnin peruskurssi Y1

Hajautusrakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet. Hajautukseen perustuvat tiedostorakenteet

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

Algoritmi on periaatteellisella tasolla seuraava:

Mukautuvat järjestämisalgoritmit

Paikkatiedon käsittely 4. Diskreettiä geometriaa

Algoritmit 2. Luento 10 To Timo Männikkö

Lisätään avainarvo 6, joka mahtuu lehtitasolle:

Algoritmit 2. Luento 9 Ti Timo Männikkö

58131 Tietorakenteet ja algoritmit (kevät 2014) Uusinta- ja erilliskoe, , vastauksia

3. Hakupuut. B-puu on hakupuun laji, joka sopii mm. tietokantasovelluksiin, joissa rakenne on talletettu kiintolevylle eikä keskusmuistiin.

CS-A1140 Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit - syksy

4 Yleinen potenssifunktio ja polynomifunktio

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Injektio. Funktiota sanotaan injektioksi, mikäli lähtöjoukon eri alkiot kuvautuvat maalijoukon eri alkioille. Esim.

4 Tehokkuus ja algoritmien suunnittelu

1. (a) Seuraava algoritmi tutkii, onko jokin luku taulukossa monta kertaa:

v 8 v 9 v 5 C v 3 v 4

Algoritmit 2. Luento 13 Ti Timo Männikkö

D B. Tietokannan hallinta kertaus

811312A Tietorakenteet ja algoritmit, , Harjoitus 7, ratkaisu

811312A Tietorakenteet ja algoritmit III Lajittelualgoritmeista

14 Tasapainotetut puurakenteet

Ei-yhteydettömät kielet [Sipser luku 2.3]

Numeeriset menetelmät

Tekijä Pitkä matematiikka

Lisätään avainarvo 1, joka mahtuu lehtitasolle:

Algoritmit 2. Demot Timo Männikkö

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

1.1 Tavallinen binäärihakupuu

Transkriptio:

HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Paikkatiedon käsittely 5. Paikkatiedon indeksointi Antti Leino antti.leino@cs.helsinki.fi 29.1.2007 Tietojenkäsittelytieteen laitos

Mistä on kyse? Indeksoinnin tarkoituksena on nopeuttaa tietokantahakuja Perinteisessä tietokannassa indeksointi perustuu hakuavaimeen Avainkentässä oltava arvo Eri tietueilla eri avaimet Muillekin kentille voi tehdä indeksejä Arvo voi olla tyhjä Indeksi antaa viitteen osumatietueiden hakuavaimiin Hakuehtona tyypillisesti yhtäsuuruus tai arvoväli

Järjestys Tavanomaisten relaatiotietokannan tietotyyppien arvoalue on täysin järjestetty On olemassa relaatio a,b : (a b) (b a) a,b,c : (a b) (b c) a c a,b : (a b) (b a) a = b Indeksin rakentaminen täysin järjestetyille tietotyypeille on ollut tunnettua jo pitkään Tavanomainen ratkaisu B-puu

B-puu Kohteen löytämiseen riittää tasan yhden polun kulkeminen Kaikki polut juuresta lehtiin yhtä pitkiä Jokainen sivu (paitsi juuri) aina vähintään puolillaan Puun koko O(n) Haku, lisäys ja poisto vievät O( log n) ajan

Mutta kun ei B-puu sopii mainiosti täysin järjestetyn datan indeksointiin Paikkatieto ei olekaan Mikä neuvoksi? Laaditaan 2-ulotteiselle tiedolle 1-ulotteinen järjestys Yleistetään B-puu sellaisen aineiston indeksointiin, joka ei ole tällä tapaa järjestetty Käytännössä jälkimmäinen vaihtoehto yleensä parempi

Ratkaisu 1: tilan täyttävät käyrät Käyrä, jonka fraktaalidimensio = 2 Jatkuva käyrä, joka täyttää koko avaruuden Ensimmäisenä esitteli Giuseppe Peano (1890) Yleisesti käytössä David Hilbertin (1891) esittämä Verraten yleinen myös Z-käyrä (useita riippumattomia esittäjiä 1980-luvulla)

Miksi tilan täyttävä käyrä? Linearisoi moniulotteisen avaruuden Tämän jälkeen indeksointi helppoa Toivottavia ominaisuuksia: Lähekkäisyyden säilyminen: jos pisteet lähellä toisiaan 2-ulotteisessa avaruudessa, lähekkäin myös käyrällä Helppo muunnos 2- ja 1-ulotteisten koordinaattien välillä Nämä ominaisuudet ikävä kyllä ristiriitaisia Hilbertin käyrä säilyttää lähekkäisyyden melko hyvin Z-käyrällä pisteen sijainti on helposti laskettavissa koordinaateista

Z-järjestys Rasteripisteen järjestysnumero helposti laskettavissa Bittilimitys: otetaan bittejä vuorotellen (binäärimuotoisesta) x- ja y-koordinaatista Esimerkiksi (2 10,1 10 ) = (10 2,01 2 ) 1001 2 = 9 10

Indeksointi z-järjestyksen avulla Indeksointiavaimena näppärä käytää alkupään bittejä Tyhjä jono: koko avaruus Parillinen määrä bittejä = neliö Pariton määrä bittejä = kaksi päällekkäistä neliötä Kaikkia suorakulmioita ei voi esittää

Kohteen approksimointi Aluekohde approksimoidaan niiden Z-arvojen joukkona, jotka yhdessä kattavat kohteen Tässä siis {0011, 001, 0110, 100, 110000} Approksimaation rakeisuus käy suoraan ilmi pisimmän z-arvon pituudesta

Z-approksimoinin ominaisuuksia Alue, jonka z-arvo on z a sisältyy alueeseen, jonka z-arvo on z b, täsmälleen silloin, kun z b on z a :n alkuosa Z-arvojen aakkosjärjestys = niiden osoittamien alueiden järjestys z-käyrällä Peräkkäisten Z-arvojen osoittamat alueet voivat olla kaukana toisistaan

Kysely z-approksimoidusta indeksistä Tehtävä: haetaan kohteet, jotka ovat hakuehtonelikulmion kattamalla alueella Haetaan indeksisolmut, jotka kattavat hakuehdon Aloita avaruuden alkupisteestä Etsi ensimmäinen hakunelikulmioon osuva z-arvo ja lisää indeksisivu hakutulokseen Jatka hakua ensimmäisestä tämän sivun jälkeisestä z-arvosta

Z-alueiden haku Hakuehto: (2 x 5) (1 y 5) Haetaan ensimmäinen piste, joka on hakualueella Haetaan vuorotellen ensimmäinen kulloisenkin indeksiruudun jälkeinen piste, joka on hakualueella Nämä määrittävät indeksiruudut, joita hakualue leikkaa: {0010, 0011, 0110, 10000, 100011, 1001, 1100}

Seuraavan osuman etsintä Lähtötilanne: ollaan hakualueen ulkopuolella Etsi merkitsevin muutettava bitti Jos se muuttuu 1 0, ollaan tässä suunnassa alueen yläpuolella Valitse muista koordinaateista vähiten merkitsevä äskeistä merkitsevämpi bitti, jota voidaan kasvattaa joutumatta alueen ulkopuolelle Jos se muuttuu 0 1, ollaan alueen alapuolella Valitse tämä bitti Aseta valittu bitti 1:ksi Nollaa kaikki vähemmän merkitsevät bitit Kasvata kunkin koordinaatin tuottamia bittejä, kunnes piste on hakualueella

Seuraavan osuman etsintä: esimerkki (000,000) (010,000) (010,001) = 001001 (010,010) = 001100 hakualueella (000,100) (010,100) = 011000 (010,110) (100,000) (100,001) = 100001 (101,000) (101,001) = 100011 (100, 010) = 100100 hakualueella (110,000) (100,100) = 110000

Hilbertin käyrä Vierekkäiset käyrän pisteet ovat vierekkäisiä myös lähtöavaruudessa Mahdollistaa hiukan monipuolisemman lohkojaon Toisaalta pisteen sijainnin laskeminen monimutkaista Perusalgoritmi puurakenteen avulla

Sijainti Hilbertin käyrällä Laskettavissa puun avulla: joka tasolla jaetaan jäljellä oleva alue neljään osaan Puurakenteen käyttö algoritmin osana hankalaa Tasojen määrän lisääminen kasvattaa puun kokoa

Sijaintipuu tilakoneena Sijaintia Hilbertin käyrällä osoittava puu esitettävissä myös tilakoneena Melko pian tilakoneen koko jää puun kokoa pienemmäksi

Esimerkki pisteen sijainnin laskennasta Koordinaattien 1. bitit (1, 0), so. oikea alaneljännes Juurisolmusta saadaan avaimen biteiksi 11 Siirrytään puussa 2. tasolle (1, 0):n osoittamaa haaraa Koordinattien 2. bitit (1, 1), so. oikea yläneljännes Tästä solmusta saadaan avaimen biteiksi 00 Ollaan lehtisolmussa, avain 1100 2 = 12 10

Kysely Hilbertin käyrään perustuvasta indeksistä Tehtävänä etsiä ne hakemistosivut, jotka hakualue leikkaa Hakemiston sivut eivät välttämättä nelikulmioita Perusalgoritmi kuten z-käyrän tapauksessa Seuraavan osuman etsintä erilainen

Seuraavan osuman etsintä Hiukan hankalahkoa, koska käyrä erisuuntainen eri puolilla Iteratiivisesti: joka kierroksella rajoitutaan pienempään alipuuhun Rajoitetaan etsintä niihin alipuihin, jotka leikkaavat hakualueen Jokaisen iteraatiokierroksen lopussa katsotaan, oliko löydetty osuma aiemmin käyrällä kuin edellisillä kierroksilla löydetty Jos osumia ei löytynyt, kiivetään puussa ylöspäin, kunnes löytyy Jos tämäkään ei auta, seuraavaa osumaa ei ole

Osuman etsintä: esimerkki Ensimmäinen osuma: Löydetään vasen alaneljännes: avaimeen 00 Sen oikea yläneljännes: avaimeen 10 0010 Tämä sisältyy kokonaan hakualueeseen: valitaan sen ensimmäinen piste 001000 2 = 8 10 Osuma sisältyy sivuun 1, joka käsittää Hilbertin käyrän pisteet 0 17

Ratkaisu 2: R-puut Peruslähtökohta: modifioidaan B-puuta Tavoitteena indeksirakenne, joka toimii n-ulotteisella datalla, missä n > 1 Kutakin kohdetta approksimoidaan sen minimisuorakulmiolla (minimum bounding rectangle, MBR) Koordinaattiakselien suuntainen Helppo muodostaa: kohteen nurkkapisteiden kustakin koordinaatista pienin ja suurin Minimisuorakulmioiden keskinäiset suhteet helppo laskea

R-puu»Suorakulmiopuu» (rectangle tree) Tasapainoinen puu Lehtisivuissa (MBR, oid), missä oid on kohteen tunniste ja MBR sen minimisuorakulmio Muissa solmuissa (DR, p), missä p on lapsisivu ja DR suorakulmio, joka peittää kaikki p:stä alkavan alipuun kohteet Suorakulmiot voivat mennä osittain päällekkäin

R-puu

R-puun ominaisuuksia Kaikki polut juurista lehtiin yhtä pitkiä Juurta lukuunottamatta kussakin solmussa enintään M ja vähintään m tietuetta, missä m M/2 Jos juuri ei ole samalla lehti, siinä on vähintään kaksi tietuetta Kaikki lehdet ovat samalla tasolla Puun korkeus enintään log m N +1

Haku R-puusta Haarautumasolmussa: käy läpi kaikki solmun tietueet Jos tietueen minimisuorakulmio leikkaa hakualuetta, hae edelleen tästä alipuusta Lehtisolmussa: käy läpi kaikki solmun tietueet Jos tietueen minimisuorakulmio leikkaa hakualuetta, lisää tietue hakutulokseen

Esimerkkihaku R-puusta Juuren lapsista a, b ja d leikkaavat hakualueen a:n lapsista kohteet 7, 11 ja 16 leikkaavat b:n lapsista kohde 2 leikkaa d:n lapsista kohde 10 leikkaa Kohteet 2, 7, 10, 11 ja 16 leikkaavat hakualueen

Kohteen lisäys R-puuhun Aloita juuresta Valitse kulloisenkin solmun lapsista sopiva alipuu, kunnes olet lehtisolmussa Jos solmu ei ole täysi, lisää solmu siihen Jos solmu on täysi, halkaise se Järjestä puu uudelleen tästä solmusta ylöspäin

Alipuun valinta Etsi ne solmun lapset, joiden suorakulmiota kohteen lisääminen kasvattaisi vähiten Jos tällaisia lapsia löytyi vain yksi, valitse se Jos tällaisia löytyi useita, valitse se, jonka oma suorakulmio on pienin

Puun uudelleenjärjestäminen Lähde liikkeelle vasta lisätystä solmusta Päivitä sen äitisolmussa näkyvä minimisuorakulmio kattamaan solmuun nyt kuuluvat kohteet Järjestä uudelleen puu äitisolmusta ylöspäin

Solmun halkaiseminen Jaa halkaistavan solmun alkiot ja lisättävä uusi alkio kahdeksi solmuksi Lisää näin syntynyt uusi solmu alkuperäisen äitisolmuun Jos äitisolmu oli täynnä, halkaise sekin Päivitä halkaistujen solmujen suorakulmiot

Solmun halkaisutavan valinta Perustavoite: minimiotava todennäköisyys, että pitäisi tutkia molemmat alipuut Tämä riippuu siitä, leikkaako solmun minimisuorakulmio hakualuetta Siispä minimoitava sekä suorakulmioiden yhteenlaskettu ala että niiden leikkauksen ala Nämä vaatimukset joskus ristiriitaiset

Solmun halkaisutavan valinta Valitse uusien solmujen siemeniksi se alkiopari, jonka kattavassa suorakulmiossa on mahdollisimman paljon tyhjää tilaa Jaa muut alkiot solmuihin: Jos jäljellä on niin vähän alkioita, että ne on lisättävä jompaankumpaan uusista solmuista, lisää ne sinne Muutoin valitse alkio, joka kasvattaisi jommankumman solmun alaa vähiten ja lisää se sinne. Aikavaativuus O (N 2 ) Olemassa myös lineaarisessa ajassa toimiva algoritmi, mutta sen jako ei yhtä hyvä

Kohteen poistaminen R-puusta Kohdetta poistettaessa on pidettävä huoli siitä, että puu pysyy tasapainossa Jos kohteen sisältävä solmu kutistuisi liiaksi, puu on tiivistettävä Etsi lehti Poista kohde siitä Järjestä uudelleen puu tästä solmusta ylöspäin Tiivistä puu tarvittaessa

Lehden etsiminen Jos ollaan haarautumasolmussa, jatka hakua kaikista niistä lapsisolmuista, joiden suorakulmiot kattavat kohteen Jos ollaan lehtisolmussa, johon kohde kuuluu, totea lehden löytyneen

Puun tiivistys kohteen poiston jälkeen Poista vajaat solmut puusta: Jos ei olla juuressa ja solmun koko < m, Merkitse solmun kaikki lapset orvoiksi Poista solmu äidistään Järjestä uudelleen puu äidistä alkaen Tee sama vajaiden solmujen poisto-operaatio äidille Lisää orvot solmut puuhun

Kohteiden lisäysjärjestys R-puun avulla toteutetun hakemiston tehokkuus riippuu kohteiden lisäysjärjestyksestä Huonossa järjestyksessä lisätyt kohteet tuottavat huonon hakemiston Ratkaisu: R*-puu

R*-puu R-puun muunnelma, jossa hiukan erilainen algoritmi solmun halkaisuun Tavoitteena minimoida Solmujen päällekkäisyys Solmun peittämä pinta-ala Solmun kattaman suorakulmion reuna Myös tallennustilan käyttö Tietorakenteet ja hakualgoritmit samat kuin R-puussa

Solmun halkaisu R*-puussa R-puu lähtee rakentamaan uusia solmuja kahden toisistaan kauimpana olevan alkion ympärille R*-puu jakaa alkiojoukon koordinaattiakselin suuntaisesti Joukko jaetaan kunkin akselin suuntaisesti kahtia niin, että kummankin puoliskon koko m Näistä jaoista valitaan paras Jaettavat kohteet R-puu R*-puu

Kohteen lisäys R*-puuhun Halkaisualgoritmin lisäksi toinen parannus Ennen halkaisua sijoitetaan sen»huonoimmat» alkiot uudelleen Lasketaan kunkin alkion keskipiste Lasketaan sen etäisyys solmun minimisuorakulmion keskipisteestä Poistetaan puusta ne 30 % solmuista, joilla tämä etäisyys on pisin Lisätään ne uudelleen Jos sama solmu vuotaa yli toisen kerran saman kohteenlisäysoperaation aikana, se halkaistaan

Pakotettu uudelleenlisäys Uudelleenlisäys korjaa huonon lisäysjärjestyksen vaikutusta Lähtötilanne Ylivuoto R-puu R*-puu

R+-puu Saman tason solmujen suorakulmiot erillisiä Haarautumasolmun minimisuorakulmio kattaa sen lapsisolmujen minimisuorakulmiot Lehtisolmun suorakulmio joko sisältää kohteen minimisuorakulmion tai leikkaa sitä Kukin avaruuden piste yhden polun kautta Aluekyselyissä etu ei välttämättä aivan selvä Puun koko suurempi kuin R- ja R*-puissa Hakutuloksen jälkikäsittelyssä varmistettava, että kukin kohde mukana korkeintaan kerran

GiST: yleistetty hakupuu Tavoitteena yleiskäyttöinen hakupuu: sama toiminnallisuus kuin B- ja R-puilla ja vielä lisääkin B-puusta tuttuja ominaisuuksia Juurisolmussa on vähintään kaksi alkiota, ellei se ole myös lehti Juurta lukuun ottamatta solmussa m M alkiota, missä m on välillä 2 M 2 Kaikki lehdet ovat samalla tasolla Viimeistään R-puusta tuttua Lehtisolmun alkioon liittyy ehto p, joka pätee solmun osoittamaan tietokantamonikkoon

GiST-puun uutuus Haarautumasolmun alkioon liittyy ehto p, joka pätee koko alipuuhun mutta alipuun solmuissa olevalle ehdolle p ei välttämättä päde p p Väljempi muotoilu kuin aiemmissa puissa Riittää, että ehto erottaa samasta solmusta alkavat alipuut toisistaan Ylemmillä tasoilla käytetyt ehdot pätevät koko alipuuhun, joten niitä ei enää tarvitse toistaa

GiST-puun määrittely Puussa esitettävältä olioluokalta edellytetään kuutta metodia Consistent (E,q): epätosi, jos ehto q ja solmussa E oleva ehto eivät voi päteä yhtä aikaa Union (P): palauttaa predikaatin r, joka pätee kaikille joukkoon P kuuluvista solmuista alkaville alipuille Compress (E): palauttaa alkion E, jossa oleva ehto on jollakin tapaa pakattu alkion E ehdon esitys Decompress (E): palauttaa jonkin sellaisen alkion E, että Compress (E ) = E

GiST-puun määrittely, osa 2 Penalty (E 1,E 2 ): palauttaa kustannuksen E 1 :n lisäämisestä alipuuhun, jonka juuri on E 2 Käytetään alkion lisäyskohdan ja solmun halkaisusuunnan määrittämiseen Esim. R-puussa Penalty (E 1,E 2 ) = area ( mbr (E 1 E 2 )) area ( mbr (E 1 )) PickSplit (P): jakaa alkiojoukon kahteen vähintään m alkiota sisältävään osaan Jakokriteeri usein sukua Penalty :lle Ei kuitenkaan välttämättä

Haku GiST-puusta Lehtisolmussa käy läpi kaikki sen alkiot Jos Consistent (alkio, hakuehto), lisää alkio hakutulokseen Haarautumasolmussa käy läpi kaikki sen alkiot Jos Consistent (alkio, hakuehto), hae edelleen siitä alkavasta alipuusta Lineaariselle datalle tehokkaampi B-puumainen haku Kohteen lisäys ja solmun halkaisu vastaavilla algoritmeilla kuin R-puussa

Entä meillä? PostgreSQL:ssä toteutettu B-, R- ja GiST-puu Periaatteessa B-/R-puu yhtä tehokas kuin vastaava GiST-puu Käytännössä otettava huomioon toteutuksen tehokkuus Perinteiset tietotyypit kannattaa indeksoida B-puun avulla Paikkatiedon indeksointiin GiST parempi kuin R-puu