FI102424B - Menetelmä muistin toteuttamiseksi - Google Patents

Menetelmä muistin toteuttamiseksi Download PDF

Info

Publication number
FI102424B
FI102424B FI971065A FI971065A FI102424B FI 102424 B FI102424 B FI 102424B FI 971065 A FI971065 A FI 971065A FI 971065 A FI971065 A FI 971065A FI 102424 B FI102424 B FI 102424B
Authority
FI
Finland
Prior art keywords
node
nodes
bits
compressed
address
Prior art date
Application number
FI971065A
Other languages
English (en)
Swedish (sv)
Other versions
FI971065A (fi
FI971065A0 (fi
FI102424B1 (fi
Inventor
Matti Tikkanen
Jukka-Pekka Iivonen
Original Assignee
Nokia Telecommunications Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nokia Telecommunications Oy filed Critical Nokia Telecommunications Oy
Priority to FI971065A priority Critical patent/FI102424B1/fi
Publication of FI971065A0 publication Critical patent/FI971065A0/fi
Priority to DE69831246T priority patent/DE69831246T2/de
Priority to PCT/FI1998/000190 priority patent/WO1998041931A1/fi
Priority to AU66238/98A priority patent/AU6623898A/en
Priority to EP98908121A priority patent/EP1008063B1/en
Publication of FI971065A publication Critical patent/FI971065A/fi
Application granted granted Critical
Publication of FI102424B publication Critical patent/FI102424B/fi
Publication of FI102424B1 publication Critical patent/FI102424B1/fi
Priority to US09/390,526 priority patent/US6499032B1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/953Organization of data
    • Y10S707/956Hierarchical
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)

Description

102424
Menetelmä muistin toteuttamiseksi Keksinnön ala
Keksintö liittyy yleisesti assosiatiivisen muistin toteuttamiseen, erityi-5 sesti digitaaliseen trie-rakenteeseen perustuvan assosiatiivisen muistin toteuttamiseen. Keksinnön mukainen ratkaisu on tarkoitettu käytettäväksi lähinnä keskusmuistitietokantojen yhteydessä. Sopivia sovelluskohteita ovat erityisesti sellaiset tietokannat, joissa tehdään paljon hakuja, mutta joissa on hakuihin verrattuna vähän lisäyksiä tai poistoja. Tällaisia sovelluskohteita ovat esim. 10 matkaviestinverkkojen kotirekisterit (HLR, Home Location Register) ja kartta-sovelluksissa käytettävät GIS-järjestelmät (Geographical Information Systems).
Keksinnön tausta 15 Keksinnön mukainen periaate pohjautuu sinänsä tunnettuun yksi ulotteiseen hakemistorakenteeseen, jota kutsutaan nimellä digitaalinen trie (engl. digital trie, sana “trie” tulee englannin kielen sanasta “retrieval”). Digitaalisia trie-rakenteita voidaan toteuttaa kahden tyyppisinä: sellaisina, joissa on sankoja (bucket trie) ja sellaisina, joissa ei ole sankoja.
20 Sangollinen digitaalinen trie-rakenne on puumainen rakenne, jossa ; on kahdenlaisia solmuja: sankoja ja trie-solmuja. Sangoksi kutsutaan tässä . . ·. vaiheessa tietorakennetta, joka sisältää joukon tietoyksikköjä tai joukon osoit- timia tietoyksiköihin tai joukon hakuavain/osoitin-pareja (joukkoon voi kuulua • · _ vain yksi tietoyksikkö, yksi osoitin tai yksi avain/osoitin-pari). Trie-solmu on • · ,·. 25 puolestaan hakua ohjaava taulukko, jonka koko on kaksi potenssiin k (2k) • ·· alkiota. Jos trie-solmun alkio on käytössä, se osoittaa joko hakemistopuun * · · seuraavalla tasolla olevaan trie-solmuun tai sankoon. Muutoin alkio on vapaa (tyhjä).
Tietokantaan kohdistuva haku etenee tutkimalla hakuavainta (joka on « · · *\ * 30 esim. matkaviestinverkon tai puhelinkeskuksen tilaajatietokannan tapauksessa • « » • tyypillisesti se binääriluku, joka vastaa tilaajan puhelinnumeroa) k bittiä kerral- .· taan. Tutkittavat bitit valitaan siten, että rakenteen ylimmällä tasolla (ensimmäisessä trie-solmussa) tutkitaan k:ta eniten vasemmalla olevia bittiä, ! · rakenteen toisella tasolla vasemmalta lukien seuraavia k:ta bittiä, jne. Tutkitta- • « 35 vat bitit tulkitaan etumerkittömänä kaksijärjestelmän lukuna, jota käytetään 102424 2 suoraan trie-solmun sisältämän alkiotaulukon indeksinä, joka osoittaa tietyn alkion taulukosta. Jos indeksin mukainen alkio ei ole käytössä, haku päättyy epäonnistuneena. Jos alkio osoittaa seuraavalla tasolla olevaan trie-solmuun, siellä tutkitaan edellä kuvatulla tavalla k:ta seuraavaa bittiä, jotka on irrotettu 5 hakuavaimesta. Vertailun perusteella haaraudutaan trie-solmussa edelleen joko seuraavalla tasolla olevaan trie-solmuun tai sankoon. Jos alkio osoittaa avaimen sisältävään sankoon, talletettua avainta verrataan hakuavaimeen. Koko hakuavaimen vertailu tapahtuu siten vasta haun saavuttaessa sangon. Avainten ollessa samat haku on onnistunut, ja haluttu tietoyksikkö saadaan 10 sangon osoittimen osoittamasta muistiosoitteesta. Avainten ollessa erisuuret haku päättyy epäonnistuneena.
Sangottomassa trie-rakenteessa ei ole sankoja, vaan viittaus tietoyksikköön tapahtuu puumaisessa hierarkiassa alimmalla tasolla olevasta trie-solmusta, jota kutsutaan lehtisolmuksi. Sangoista poiketen sangottoman 15 rakenteen lehtisolmut eivät voi sisältää tietoyksikköjä, vaan ainoastaan osoittimia tietoyksiköihin. Myös sangollisessa rakenteessa on lehtisolmuja, joten trie-solmuista lehtisolmuja ovat sellaiset solmut, jotka sisältävät ainakin yhden osoittimen sankoon (sangollinen rakenne) tai tietoyksikköön (sangoton rakenne). Trien muut solmut ovat sisäsolmuja. Trie-solmut voivat siis olla joko si-20 säsolmuja tai lehtisolmuja. Sankojen avulla saadaan hakemistorakenteen muokkaustarvetta lykättyä ajallisesti, koska sankoihin saadaan mahtumaan paljon osoittimia/tietoyksiköitä ennen kuin kyseinen tarve syntyy.
.' Keksinnön mukaista ratkaisua voidaan soveltaa sekä sangolliseen
• I
että sangottomaan rakenteeseen. Jatkossa käytetään kuitenkin esimerkkeinä 25 sangollisia rakenteita.
/:·. Kuviossa 1 on esitetty esimerkki digitaalisesta trie-rakenteesta, jossa Λ · · * avaimen pituus on 4 bittiä ja k=2, jolloin siis .kussakin trie-solmussa on 22=4 al- ... kiota ja kullakin tasolla: tutkitaan-kahta avaimesta irrotettua bittiä. Sankoja on • · · merkitty viitemerkeillä A, B, C, D...H...M, N, O ja P. Sanko on siis sellainen sol-30 mu, josta ei enää osoiteta puun alemmalle tasolle. Trie-solmuja on kuviossa 1 * · · : ’merkitty viitemerkeillä IN1 ...IN5 ja trie-solmun alkioita viitemerkeillä NE.
* « ·
Kuvion 1 mukaisessa esimerkkitapauksessa ovat esitettyjen sanko-jen hakuavaimet seuraavat: A=0000, B=0001, C=0010,..., H=0111,... ja
t F
; P=1111. Kuhunkin sankoon on tässä tapauksessa talletettu osoitin siihen 35 tietokannan SD muistipaikkaan, josta varsinainen data, esim. kyseisen tilaajan 3 102424 puhelinnumero sekä muut kyseistä tilaajaa koskevat tiedot löytyvät. Tietokannassa voi varsinainen tiiaajadata olla talletettuna esim. peräkkäis-tiedostoksi kuviossa esitettyyn tapaan. Esim. tietueen H hakuavaimen perusteella tapahtuu haku irrottamalla hakuavaimesta ensin kaksi vasem-5 manpuoleisinta bittiä (01) ja tulkitsemalla ne, jolloin päädytään solmun IN1 toiseen alkioon, joka sisältää osoittimen seuraavalla tasolla olevaan solmuun IN3. Tällä tasolla irrotetaan hakuavaimesta seuraavat kaksi bittiä (11), jolloin päädytään ko. solmun neljänteen alkioon, joka osoittaa tietueeseen H.
Osoittimen asemesta sanko voi sisältää (hakuavaimen lisäksi) varsi-10 naisen datatietueen (josta käytetään myös yleisempää nimitystä tietoyksikkö). Näin ollen esim. tilaajaa A koskevat tiedot (kuvio 1) voivat olla sangossa A, tilaajaa B koskevat tiedot sangossa B, jne. Assosiatiivisen muistin ensimmäisessä suoritusmuodossa sankoon on siis talletettu avain-osoitin-pari ja toisessa suoritusmuodossa avain ja varsinainen data, joskaan avain ei ole välttä-15 mätön.
Hakuavain voi olla myös moniulotteinen. Toisin sanoen, hakuavain voi koostua useasta attribuutista (esim. tilaajan sukunimi ja yksi tai useampi etunimi). Tällainen moniulotteinen trie-rakenne on kuvattu kansainvälisessä patenttihakemuksessa PCT/FI95/00319 (julkaisunumero WO 95/34155). 20 Kyseisessä rakenteessa suoritetaan osoitelaskentaa siten, että kustakin di-; mensiosta valitaan, muista dimensioista riippumatta, kerrallaan tietty ennalta määrätty lukumäärä bittejä. Trie-rakenteen yksittäisen solmun kullekin dimen-," , siolle asetetaan siis kiinteä, muista dimensioista riippumaton raja määräämällä
« I
etukäteen kussakin dimensiossa tutkittavien hakuavainbittien lukumäärä.
• · 25 Tällaisella rakenteella saadaan muistipiirien tarve pieneksi silloin, kun hakua- • · · vainten arvojen jakaumat ovat etukäteen tiedossa, jolloin rakenne voidaan • · « toteuttaa staattisena.
.. Usein on kuitenkin tilanne sellainen, että hakuavainten arvojen ja- • «« kautumat eivät ole etukäteen tiedossa. Tällöin em. patenttihakemuksessa
i » I
’ 30 kuvatulla rakenteella ei päästä muistinkulutuksen suhteen optimitulokseen, ; koska kussakin dimensiossa tutkittavien bittien lukumäärä on etukäteen mää-
» : I
,,, i rätty vakio.
Mikäli halutaan saada mahdollisuus muokata rakennetta kulloisenkin avainjakauman mukaan tehokkuudeltaan ja muistinkulutukseltaan mahdolli-35 simman optimaaliseksi, on solmujen kokojen muututtava dynaamisesti avain- , 102424 4 jakauman muuttuessa. Avainjakauman ollessa tasainen voidaan solmukokoja kasvattaa, jotta rakenteesta saadaan matalampi. Epätasaisilla avainjakaumilla, joiden yhteydessä muistinkulutus nousee ongelmaksi dynaamisia solmukokoja käyttävissä muistirakenteissa, voidaan puolestaan pitää solmukoot pieninä, 5 jolloin saadaan paikallisesti tasaisempi avainjakauma ja sitä kautta pienempi muistinkulutus.
Muutettaessa solmukokoja dynaamisesti nousee kuitenkin ongelmaksi se, kuinka muistin rakennetta ylläpidetään, jotta muistin tehokkuus (nopeus) ja muistitilan tarve saadaan optimoitua sen hetkisen avainjakauman mukai-10 sesti.
Keksinnön yhteenveto
Keksinnön tarkoituksena onkin taijota ratkaisu em. ongelmaan ja saada aikaan menetelmä, jonka avulla pystytään pitämään vaadittu muistitila 15 mahdollisimman pienenä silloin, kun hakuavainten arvojen jakauma ei ole etukäteen tiedossa, ja jonka avulla pystytään samalla pitämään muistioperaa-tiot ja muistinhallinta mahdollisimman tehokkaina.
Tämä päämäärä saavutetaan ratkaisuilla, jotka on määritelty itsenäisissä patenttivaatimuksissa. Näistä ensimmäinen kuvaa rakennetta, jossa 20 käytetään sankoja ja toinen rakennetta, jossa ei käytetä sankoja.
Keksinnön ajatuksena on ensinnäkin käyttää osoitelaskennassa edellä mainittua periaatetta, jonka mukaan solmuissa tutkittavien bittien luku-: määriä (solmukokoja) muutetaan dynaamisesti, jolloin puumainen rakenne muokkautuu kulloisenkin avainjakautuman mukaisesti. Lisäksi ajatuksena on • · ·:··; 25 yhdistää tällaiseen rakenteeseen tiettyjen loogisten ehtojen mukaan toteutet- :’.t< tava trie-solmujen (tai sangottomassa tapauksessa sisäsolmujen) kokojen • ylläpito, joka tapahtuu pääasiassa pitämällä trie-solmujen (sisäsolmujen) täyttöasteet ja muihin; trie-solmuihin (sisäsolmuihin) osoittavien osoittimien :·. lukumäärät optimaalisella tasolla. Ylläpidon ansiosta keksinnön mukainen • · ♦ !·:·. 30 muistirakenne adaptoituu automaattisesti kulloisenkin avainjakauman mukaan niin, että edellä mainitut päämäärät saavutetaan.
Keksinnön mukainen ratkaisu takaa myös joukko-operaatioiden tehokkaan toteutuksen, koska rakenne on järjestyksen säilyttävä digitaalinen •: · trie.
35 5 102424
Kuvioluettelo
Seuraavassa keksintöä ja sen edullisia toteutustapoja kuvataan tarkemmin viitaten oheisten piirustusten mukaisiin esimerkkeihin, joissa kuvio 1 havainnollistaa yksiulotteisen digitaalisen trie-rakenteen 5 käyttöä puhelinkeskuksen tilaajatietojen ylläpitämisessä, kuvio 2 esittää erästä moniulotteista trie-rakennetta, kuvio 3 esittää erästä keksinnön mukaista muistirakennetta, kuvio 4 havainnollistaa osoitelaskennan toteuttamista keksinnön mukaisessa muistissa, 10 kuvio 5 havainnollistaa muistin trie-solmun rakennetta, kuviot 6a ja 6b havainnollistavat trie-solmun puolitusta, kuviot 7a...7c havainnollistavat lisäyksen seurauksena suoritettavaa trie-solmun kahdennusta, kuviot 8a...8c esittävät toista esimerkkiä trie-solmun kahdennuksesta, 15 kuviot 9a ja 9b havainnollistavat solmun kahdennuksessa suoritetta vaa alkioiden sijoittelua, kuviot 10a ja 10b esittävät kompressoidun solmun muodostamisperi- aatetta, kuviot 11a ja 11b esittävät erästä esimerkkiä muistirakenteen ylläpi- 20 dosta, kuvio 12 havainnollistaa muistissa käytettävän kompressoidun solmun rakennetta, kuvio 13a havainnollistaa käytetyn sananpituuden aiheuttamaa rajoi-tusta solmujen yhdistämiselle, • · 25 kuvio 13b esittää kuvion 13a solmuketjusta muodostettavan kokoavan solmun rakennetta, ja kuvio 14 esittää keksinnön mukaista muistijärjestelyä lohkokaaviota- solla.
• · • · • · · 30 Keksinnön yksityiskohtainen kuvaus
Kuten edellä mainittiin, toteutetaan trie-rakenne esillä olevassa keksinnössä moniulotteisena (yleisesti ottaen n-ulotteisena). Tällainen moniulot- * i · ‘...: teinen rakenne on muutoin aivan samanlainen kuin alussa kuvattu yksiulottei- ··· nen rakenne, mutta trie-solmun sisältämä alkiotaulukko on moniulotteinen. Ku- .. .: 35 viossa 2 on esitetty esimerkkinä kaksiulotteinen 22*21-rakenne, jossa alkiotau- 102424 6 lukossa on toisessa dimensiossa neljä alkiota ja toisessa dimensiossa kaksi alkiota. Trie-solmun alkioista osoitettuja sankoja on kuviossa merkitty ympyröillä.
Osoitelaskenta tapahtuu moniulotteisessa tapauksessa samalla periaatteella kuin yksiulotteisessa tapauksessa. Peruserona on kuitenkin se, että 5 yhden alkiotaulukkoindeksin sijaan lasketaankin indeksi jokaiselle alkiotaulu-kon dimensiolle (n kappaletta). Kullakin dimensiolla on tällöin oma haku-avainavaruutensa {0, 1..... 2Vi-1}(Vj on hakuavaimen pituus bitteinä kussakin dimensiossa ja i e {1,...n}).
Trie-solmun koko kunkin dimension suunnassa on 2^ alkiota ja trie-10 solmun alkioiden kokonaislukumäärä S on myös kakkosen potenssi: S = r\2k, = 2k·x2k!x2k3x.. =2N (1)
Trie-solmun, jolla on n kappaletta dimensioita, kaikki alkiot voidaan siten osoittaa n kappaleella kokonaislukuja (n>2), joista kukin voi saada arvon, joka on välillä {0,1...2^-1}. Etukäteen kiinteäksi määrätty parametri on siis 15 hakuavaimen kokonaispituus kussakin dimensiossa. Mikäli esim. hakuavaimen yhdessä dimensiossa on korkeintaan 256 attribuuttia (esim. etunimeä), on hakuavaimen kokonaispituus 8 bittiä.
Kuviossa 3 on esitetty esimerkkinä erästä keksinnön mukaisen muistin hakemistorakenteessa käytettävää solmua N10, kun käytettävä haku-20 avain on kolmiulotteinen. Ensimmäisen dimension (x) suunnassa trie-solmussa on 22=4 alkiota, toisen dimension (y) suunnassa 21=2 alkiota ja kolmannen dimension (z) suunnassa 23=8 alkiota, jolloin trie-solmussa on yhteensä 26=64 alkioita, jotka on numeroitu välillä 0...63.
.·* Koska käytännön laitteiden (esim. tietokonelaitteiden) muistiavaruus *:·*: 25 on yksiulotteinen, moniulotteinen taulukko linearisoidaan eli muunnetaan yk- »**.. siulotteiseksi osoitelaskentaprosessissa (eli edettäessä hakemistopuussa). Li- ίΤ· nearisointi on aritmeettinen operaatio, jonka voi tehdä kaikenkokoisille tau lukoille. Näin ollen ei ole väliä, katsotaanko trie-solmut tai niiden alkiotaulukot yksi- vai moniulotteisiksi, koska moniulotteiset taulukot linearisoidaan joka t**‘r 30 tapauksessa yksiulotteisiksi.
Linearisoinnissa taulukon alkiot numeroidaan nollasta alkaen (aivan kuin on esitetty kuviossa 3), jolloin viimeisen alkion numero on yhtä pienempi ·;·* kuin kaikkien ulottuvuuksien kokojen tulo. Alkion numero on summa jokaisen koordinaatin (esim. kolmiulotteisessa tapauksessa x-, y- ja z-koordinaatit) ja ’: : 35 sitä edeltävien dimensioiden kokojen tuloista. Näin laskettua numeroa käyte-.
102424 7 tään suoraan yksiulotteisen taulukon indeksinä.
Kuviossa 3 esitetyn trie-solmun tapauksessa lasketaan alkion numero VA,, edellä esitetyn mukaisesti kaavalla: VAn= x+yx4+zx4x2 (2) 5 missä xs{0,1,2,3}, ye{0,1} ja 26(0,1,2,3,4,5,6,7}. Esim. alkiolle 54 saadaan näin sen koordinaateista (2,1,6): 2+1x4+6x4x2=2+4+48=54.
Linearisoitaessa n-ulotteisen trie-rakenteen trie-solmun (n-uiotteista) alkiotaulukkoa jokaisen dimension koko on edellä esitetyn mukaisesti 2ki, missä k| on ko. dimension kerralla tutkittavien bittien lukumäärä. Jos viitemer-10 kiliä ai merkitään dimension mukaista koordinaattia (j€{0,1,2...n}), linearisointi voidaan kirjoittaa muotoon: ΣΧίI2 0,1,2,...^-ΐ}Λ*0=0 (3) J· 1 /=o
Linearisointi voidaan toteuttaa suorittamalla kaavan (3) mukainen 15 kertolasku, mutta on kuitenkin edullista suorittaa linearisointi muodostamalla hakuavainbiteistä jollakin sinänsä tunnetulla tavalla bittijono, jota vastaava luku ilmoittaa sen alkion, jonka sisällön perusteella hakemistopuussa edetään. Tällaista linearisointitapaa kutsutaan bittilimitykseksi. Bittilimitys on tehokkaampi (nopeampi) kuin kaavan (3) mukainen kertolasku, koska bittilimitystä 20 käytettäessä kertolaskut muuttuvat yhteenlaskuiksi ja bittisiirroiksi, jotka ovat nopeampia suorittaa.
Yleisin tapa bittilimityksen toteuttamiseksi on ns. z-järjestys. Toinen • · mahdollinen bittilimitystapa rivijärjestys. Esillä olevassa keksinnössä on edul-.. lista käyttää rivijäijestystä, koska sillä saavutetaan tehokkain osoitelaskenta i ·., 25 muistihauissa, mutta mitä tahansa tunnettua bittilimitystapaa voidaan käyttää, t ? · * kunhan samaa bittilimitystapaa käytetään rakenteen kaikissa solmuissa.
Kuviossa 4 on havainnollistettu erästä esimerkkiä keksinnön mukai- « · • · : “ sessa trie-rakenteessa suoritettavasta osoitelaskennasta. Kuviossa on oletettu • · · ' ‘ edelleen, että avaruuden ulotteisuus on 3 (dimensiot x, y ja z). Lisäksi on 30 oletettu, että hakuavain ax dimension x suunnassa on ax= 011011, hakuavain :1": ay dimension y suunnassa av = 110100 ja hakuavain az dimension z suunnas- \ sa on az = 101010. Hakuavaimet on merkitty kuvioon allekkain.
Trie-rakenteen solmuissa yksiulotteisen alkiotaulukon indeksin muodostavat bitit on esitetty yhtenäisillä viivoilla esitetyissä kehyksissä. Nämä 102424 8 kehykset kuvaavat siis sitä, kuinka globaali hakuavain jaetaan paikallisiksi hakuavaimiksi (alkiotaulukkoindekseiksi), joista kutakin käytetään trie-rakenteen yhdessä solmussa. Kaikki yhtenäisillä viivoilla esitetyt kehykset koskevat ensimmäistä bittilimitystapaa eli z-järjestystä. Rakenteen solmuja on 5 merkitty etenemisjärjestyksessä viitemerkeillä N1...N7. Ensimmäisessä (ylimmällä tasolla olevassa) solmussa (N1) käytetään vain yhtä bittiä, joka on dimension x hakuavaimen vasemmanpuoleisin bitti (joka on looginen nolla). Tämän jälkeen siirrytään nuolen mukaisesti seuraavaan solmuun (N2), jossa paikallisen hakuavaimen muodostavien bittien lukumäärä on kaksi. Nämä ovat 10 hakuavaimen ay vasemmanpuoleisin bitti ja hakuavaimen az vasemmanpuoleisin bitti. Bittien järjestys on z-järjestyksessä aina esitetyn mukainen, toisin sanoen ensin otetaan ensimmäisen dimension ensimmäinen bitti, sen jälkeen toisen dimension ensimmäinen bitti, sen jälkeen kolmannen dimension ensimmäinen bitti, jne. Viimeisen dimension ensimmäisen bitin jälkeen otetaan 15 toiset bitit eri dimensioista, ensimmäisestä dimensiosta alkaen. Tällä tavoin saadaan seuraavat solmukohtaiset alkiotaulukkoindeksit: 0 (solmu N1), 11 (solmu N2), 110 (solmu N3), 10 (solmu N4), 1010 (solmu N5), 10 (solmu N6) ja 1100 (solmu N7).
Vaihtoehtoisesti voidaan muistissa käyttää jotakin muuta tunnettua 20 bittilimitystapaa, esim. rivijärjestystä. Kuviossa 4 on katkoviivoilla piirretyillä kehyksillä ja niihin liittyvillä nuolilla havainnollistettu alkiotaulukkoindeksin muodostusta solmussa N5, kun muistissa käytetään bittilimitystä rivijärjestyk-sessä. Kuvion esimerkissä oletetaan lisäksi, että eteneminen on suoritettu : solmuissa N1...N4 niin pitkälle, että ensimmäinen solmussa N5 tutkittava bitti ·:·*: 25 on dimension z suuntaisen hakuavaimen vasemmalta lukien kolmas bitti.
Γ*. Rivijärjestystä käytettäessä poimitaan kunkin dimension kaikki bitit kerralla.
t*j : Rivijärjestystä käytettäessä lasketaan solmussa ensin se minimäärä bittejä, joka eri dimensioiden hakuavaimista otetaan. Tämä saadaan jakamalla solmussa tutkittavien bittien lukumäärä dimensioiden lukumäärällä ja pyöris- t 30 tämällä saatu tulos alaspäin lähimpään kokonaislukuun. Tässä esimerkkitapauksessa on solmussa N5 tutkittavien bittien lukumäärä neljä ja dimensioiden « · t : lukumäärä puolestaan kolme, jolloin minimimääräksi saadaan yksi (eli kunkin ’•l'· dimension hakuavaimesta on otettava vähintään yksi bitti). Tämän jälkeen on vielä laskettava, kuinka monta lisäbittiä on otettava eri dimensioiden hakua-·:··: 35 vaimista. Lisäbittien lukumäärä A saadaan kaavasta A= k mod n, missä k on 102424 9 solmussa tutkittavien bittien lukumäärä ja n on dimensioiden lukumäärä. Tässä esimerkkitapauksessa saadaan siis A= 4 mod 3 = 1. Lopputulos 1 tarkoittaa siis, että on otettava 1 lisäbitti. Lisäbittien ottaminen aloitetaan aina ensimmäisestä tutkittavasta dimensiosta. Tässä esimerkkitapauksessa otetaan siis 1 5 lisäbitti dimension z hakuavaimesta. Mikäli lopputulos olisi ollut kaksi, olisi otettu yksi lisäbitti dimension z hakuavaimesta ja yksi lisäbitti dimension x hakuavaimesta.
Tässä esimerkkitapauksessa otetaan siis 1 bitti jokaisen dimension hakuavaimesta ja lisäksi yksi bitti dimension z hakuavaimesta. Koska rivijär-10 jestystä käytettäessä poimitaan kunkin dimension kaikki bitit kerralla, poimitaan ensin kaikki dimensiosta z otettavat bitit (10), sen jälkeen kaikki dimension x hakuavaimesta käytettävät bitit (0) ja viimeisenä kaikki dimension y hakuavaimesta poimittavat bitit (1). Rivijärjestystä käytettäessä saadaan näin ollen solmun N5 alkiotaulukkoindeksiksi bittijono 1001, joka on esitetty kuvion 15 4 alalaidassa.
Koska osoitelaskenta suoritetaan käyttäen sinänsä tunnettua bittili-mitystä, ei osoitelaskentaa kuvata tämän enempää.
Koska bittien järjestys kussakin solmussa muodostettavassa paikallisessa hakuavaimessa (alkiotaulukkoindeksissä) on vakio, on kussakin sol-20 mussa suoritettavassa bittijonon muodostuksessa tiedettävä ainoastaan käytettävien bittien lukumäärä. Tämä tieto on talletettu kuhunkin solmuun. Tämän lisäksi kussakin tavallisessa trie-solmussa on oltava ainoastaan alkiotaulukko. Kuviossa 5 on havainnollistettu tavallisen trie-solmun rakennetta. Minimiko-: koonpanossaan solmu käsittää siis ainoastaan kaksi osaa: kentän, joka kertoo *:··: 25 solmussa tutkittavien bittien lukumäärän (viitenumero 51) ja alkiotaulukon (viitenumero 52), jossa olevien alkioiden lukumäärä vastaa jotakin kakkosen i*:‘: potenssia. Hakemistopuussa etenemiseksi on tutkittavien bittien lukumäärän lisäksi tiedettävä kunkin solmun tyyppi. Tämä tieto voidaan tallettaa hakemisto- :*. rakenteessa esim. kuhunkin solmuun tai solmun isäsolmun osoittimeen. Osoit- • · * 30 timen kahdella “ylimääräisellä” bitillä (a ja b, kuvio 5) voidaan koodata osoittimeen tieto siitä, onko kysymyksessä nollaosoitin (tyhjä alkio) vai osoittaako • « * : osoitin tavalliseen trie-solmuun, sankoon vai kompressoituun trie-solmuun (jota *· · ·* kuvataan jäljempänä). Koodaus voi olla esim. kuviossa esitetyn kaltainen.
;· Sangottoman rakenteen tapauksessa talletetaan muistiin tieto siitä, ·:35 osoittaako osoitin kompressoimattomaan solmuun, kompressoituun solmuun 10 102424 vai tietoyksikköön.
Kussakin solmussa käytettävien hakuavainbittien lukumäärä pysyy vakiona, jos hakuavaimissa ei tapahdu muutoksia. Tietokantaan tehtävät lisäykset ja poistot saattavat kuitenkin muuttaa avaimien jakaumaa niin, että 5 solmussa tutkittavien bittien lukumäärää on muutettava, jotta muistin tehokkuus ja muistitilan tarve pysyisi edelleen mahdollisimman hyvänä. Tasaisilla avainjakaumilla voidaan solmussa tutkittavien bittien lukumäärää kasvattaa, jolloin keskimääräiseen hakuun tarvitaan entistä pienempi lukumäärä hajautustaulukon indeksointeja (trie-solmun alkiotaulukko toimii hajautustaulukko-10 na). Näin ollen muistihaut tehostuvat, koska puumaisen rakenteen syvyys pienenee solmukokojen kasvaessa. Epätasaisilla avainjakaumilla, joiden yhteydessä muistinkulutus nousee ongelmaksi dynaamisia solmukokoja käyttävissä muistirakenteissa, voidaan sen sijaan pitää solmussa tutkittavien bittien lukumäärä pienenä, jotta saataisiin paikallisesti tasaisempia avainjakaumia ja 15 sitä kautta pienempi muistitilan tarve.
Kuten edellä mainittiin, tällaisen dynaamisesti muuttuvan tietorakenteen suhteen muodostuu ongelmaksi se, kuinka muistirakennetta on ylläpidettävä, jotta se voitaisiin pitää tehokkuudeltaan ja muistinkulutukseltaan optimaalisena. Tämän vuoksi asetetaan rakenteen solmuille tietyt loogiset 20 ehdot, jotka pyritään pitämään koko ajan voimassa solmujen kokoja muuttamalla. Näitä ehtoja kuvataan tarkemmin seuraavassa käyttäen edelleen esimerkkinä rakennetta, jossa käytetään sankoja. Rakenteen ylläpito on samanlaista, jos sankoja ei ole. Tällöin sankoa vastaa tietoyksikkö (johon sangotto-ϊ' t: man rakenteen lehtisolmu osoittaa).
·:··: 25 Ensimmäinen ehto liittyy solmun puolitukseen. Tämän puolitusehdon mukaisesti trie-solmun tyhjien alkioiden lukumäärän on oltava pienempi tai i‘;‘: yhtä suuri kuin ko. solmun alkioiden lukumäärän puolikas TAI trie-solmuihin osoittavien alkioiden lukumäärän on oltava suurempi kuin solmun alkioiden lukumäärän neljännes (looginen TAI-ehto lauseiden välissä on esitetty isoilla 30 kirjaimilla). Jos tilanne muuttuu tietokannassa suoritettavien poistojen seura-uksena (solmun alivuoto) niin, että trie-solmun tyhjien alkioiden lukumäärä ei « · « : ole pienempi tai yhtä suuri kuin ko. solmun alkioiden lukumäärän puolikas eikä l··/ myöskään trie-solmuihin osoittavien alkioiden lukumäärä ole suurempi kuin :· solmun alkioiden lukumäärän neljännes, solmun kokoa pienennetään niin, että •: · ·: 35 ehto pätee jälleen. Pienennys toteutetaan solmun puolituksena.
„ 102424 11
Edellä kuvatulla puolitusehdolla tuetaan tietojoukon talletusta poistojen suhteen niin, ettei vaadittu muistitila voi kasvaa poistojen seurauksena.
Jotta tietojoukon talletusta voitaisiin hoitaa mahdollisimman tehokkaasti myös lisäysten suhteen, suoritetaan muistissa myös trie-solmujen 5 kahdennusta kahdennusehdon mukaisesti. Kahdennusehdon mukaisesti trie-solmusta toisiin trie-solmuihin osoittavien osoittimien lukumäärän on oltava pienempi tai yhtä suuri kuin solmun alkioiden lukumäärän puolikas. Mikäli tilanne muuttuu tietokantaan tehtävän lisäyksen seurauksena niin, että tämä ehto ei ole enää voimassa, kahdennetaan solmun koko.
10 Keksinnön mukaisesti suoritetaan rakenteessa siis jatkuvasti trie- solmujen puolitusta ja kahdennusta siiloin, kun rakenne ei täytä edellä kuvattuja ehtoja. Esim. 16 alkion taulukon osalta ehdot tarkoittavat sitä, että tyhjien alkioiden lukumäärä saa olla enintään kahdeksan. Jos näin ei ole, on trie-solmussa siinä tapauksessa oltava osoittimia muihin trie-solmuihin enemmän 15 kuin neljä kappaletta, jotta solmun puolitusta ei tehdä. Jos kuitenkin osoittimia muihin trie-solmuihin on enemmän kuin kahdeksan kappaletta, kahdennetaan solmun koko. Seuraavassa kuvataan rakenteen ylläpitoa viitaten esimerkkeihin, jotka koskevat rivijärjestyksessä tapahtuvaa bittilimitystä.
Kuten edellä mainittiin, trie-solmun puolituksella huolehditaan siitä, 20 että rakenteen vaatima muistitila ei kasva missään olosuhteissa. Kuvioissa 6a on havainnollistettu tilannetta, jossa taulukko, jonka koko on kahdeksan sisältää kolme osoitinta trie-solmuihin (esitetty yhtenäisillä nuolilla) ja yhden osoit-timen sankoon (katkoviivalla esitetty nuoli). Jos sanko-osoitin poistuu ja solmu puolitetaan sen seurauksena, on tilanne kuvion 6a alaosassa esitetyn kaltai- ·:··: 25 nen eli puolituksen seurauksena vaadittu muistitila on kasvanut kahdella Γ·.. alkiolla. Keksinnön mukaisesti puolitusta ei kuitenkaan suoriteta vielä kuvion 6a tilanteessa, koska trie-solmuosoittimien lukumäärä on suurempi kuin neljäsosa solmun koosta. Puolitus suoritetaan sen sijaan vasta kuvion 6b yläosan mukaisessa tilanteessa, jossa trie-solmuosoittimien lukumäärä ei enää ole 30 suurempi kuin neljäsosa solmun koosta. Kun puolitus tehdään, päästään • · · kuvion 6b alaosan mukaiseen tilanteeseen, jossa vaadittu muistitila on sama • * · : · ‘ kuin ennen puolitusta.
*··' Puolituksen lopputuloksena syntyvä ylin solmu on aina kooltaan ;:· puolet alkuperäisen solmun koosta. Tämän alle syntyy aina kahden alkion ♦:··: 35 solmuja, joiden lukumäärä on korkeintaan neljännes alkuperäisen solmun 102424 12 koosta. Alemmalle tasolle syntyvien solmujen lukumäärä riippuu siitä, miten alkuperäisen solmun sisältämät osoittimet olivat hajautuneet solmun sisälle. Puolituksessa syntyy rakenteeseen lisäksi paikallisesti yksi uusi taso.
Trie-solmun kahdennusehdon ylläpitoa on havainnollistettu kuvioissa 5 7a...7c. Kuvion esimerkissä oletetaan, että kukin sanko sisältää vain yhden tietueen tai osoittimien tietueeseen. Kuviossa 7a on esitetty (globaali tai paikallinen) alkutilanne, jossa rakenteessa on sangot L1...L3. Kun rakenteeseen lisätään yksi avain/tietoyksikkö (sanko L4), syntyy kuvion 7b mukainen tilanne. Tähän tilanteeseen päästään, koska hakemistorakennetta on (sinänsä tunne-10 tusti) syvennettävä niin kauan, että syntyy trie-solmu, joka erottelee avai-met/tietoyksiköt eri sankoihin. Syntyneessä tilanteessa solmun N72 trie-solmuosoittimien lukumäärä on yhtä suuri kuin solmun alkioiden lukumäärä. Edellä mainitun kahdennussäännön mukaisesti on siis solmu N72 kahdennettava. Kun kahdennus suoritetaan, syntyy uusi neljän alkion solmu N75, johon 15 osoittimet ja sangot asettuvat kuviossa 7c esitetyllä tavalla. Kuten kuvioista havaitaan, uuden rakenteen vaatima muistitila on pienentynyt kahden alkion verran alkuperäisen rakenteen vaatimasta muistitilasta.
Kahdennusta ei voida tehdä ennen kuin kahdennettavan trie-solmun osoittamat trie-solmut ovat kaikki kooltaan kahden alkion kokoisia. Näin ollen 20 on ennen trie-solmun kahdennusta tehtävä kaikista sen lapsista kahden alkion kokoisia. Tällaista prosessia on havainnollistettu kuvioissa 8a...8c. Kuviossa on 8a on esitetty alkutilanne, jossa ylimpänä olevasta, kahden kokoisesta solmusta N80 on kaksi osoitinta trie-solmuihin, joten ko. solmu on em. sään-i nön perusteella kahdennettava. Kaikista kahdennettavan solmun lapsista ·:··: 25 tehdään ensin kahden alkion lapsia ja kahdennuksen jälkeen kahden alkion j*\. lapset sijoitellaan kahdennuttuun solmuun oikealla tavalla. Näin ollen tullaan **·': ensin kuvion 8b mukaiseen välitilaan, jossa ylimmän solmun lapset ovat kah- den alkion kokoisia. Kahdennuksen jälkeen alkiot sijoitellaan kahdennettuun solmuun, jolloin päästään kuviossa 8c esitettyyn tilanteeseen, jossa ylimmäi-30 sen solmun koko on kahdennettu.
• · *
Kuvioissa 9a ja 9b on havainnollistettu kahdennuksessa suoritetta-vaa alkioiden sijoittelua, eli sitä operaatiota, joka tehdään kahdennettavan 1 .·' solmun lapsisolmulle, jotta siitä saadaan kahden alkion kokoinen. Tämä ope- raatio tehtiin edellä kuvion 8a solmulle N81. Kuvioissa on esitetty kutakin . : 35 alkiota vastaavat bitit kummankin dimension (x ja y) suunnassa ja lisäksi alkion 102424 13 sisällä on esitetty bittejä vastaava desimaaliluku. Kun kuviossa 9a esitetty solmu N91 jaetaan, suoritetaan jako puolittamalla taulukko viimeksi kahdennetun dimension suhteen, joka on tässä esimerkkitapauksessa x-akseli. Jako tapahtuu siis kuviossa 9a esitetyn pystyviivan mukaisesti. Kuvion 9a solmu-5 taulukosta syntyvässä trie-rakenteessa ensimmäinen tutkittava bitti on x-bitti, joten uudeksi paikalliseksi juureksi tulee kahden alkion kokoinen solmu N92 (kuvio 9b). Koska seuraava tutkittava bitti on y-bitti, saadaan solmun N92 alle kaksi 16 alkion solmua, joissa on käytetty alkuperäisen taulukon alkionume-roita havainnollistamaan, kuinka alkuperäisen taulukon alkiot sijoittuvat uuteen 10 rakenteeseen. Kukin alkio sijoittuu sitä vastaavan bittikombinaation osoittamalle paikalle.
Edellä kuvatun kaltaisella trie-solmujen kahdennuksella pystytään minimoimaan hakemistotasojen lukumäärä siten, että rakenteen vaatima kokonaismuistitilan tarve ei kasva.
15 Kahdennusehto on sellaisenaan tunnettu artikkelista Analyti & Pra- manik: Fast Search in Main Memory Databases, ACM SIGMOD Record, 21(2):215-224, 1992. Em. artikkelissa kuvattu menetelmä ei kuitenkaan ole järjestyksen säilyttävä, kuten keksinnön mukaisessa muistissa käytettävä osoitelaskentamenetelmä.
20 Muistitilan minimoimiseksi edelleen on edullista muodostaa edellä mainitulla tavalla puolitettavista ja kahdennettavista solmuista tietyissä tapauksissa kompressoituja solmuja. Mikäli tavallisella trie-solmulla on vain yksi lapsi, tarkoittaa tämä sitä, että ko. trie-solmun kautta kulkee vain yksi polku “alaspäin” puussa. Sellainen trie-solmu, joka sisältää vain yhden osoittimen • · 25 (polun alaspäin) on muistitilan optimoimiseksi edullista korvata kompressoi- t‘." dulla solmulla, jossa kerrotaan kyseisellä polulla tutkittujen bittien lukumäärä ja /:*. laskettu taulukkoindeksin arvo. Koska tarvittavan muistitilan kannalta on edul- • » · lista muodostaa yhden lapsen -trie-solmuista kompressoituja solmuja koko :·. muistirakenteessa, tarkoittaa kompressointi myös sitä, että muistirakenteen • · · 30 tavallisilla (ei-kompressoiduilla) trie-solmuilla ylläpidetään aina vähintään kaksi • « · lasta, eli yksittäisestä (tavallisesta) trie-solmusta on osoittimet ainakin kahteen • · · *: eri alemman tason solmuun (lapsisolmuun). Kompressoitu solmu korvaa • · · 1 yhden tai useamman peräkkäisen sisäsolmun, joilla kaikilla on yksi lapsi, joten • · edellä mainittu yksi lapsi ei voi olla sanko (eikä lehti rakenteessa, jossa san- .. · 35 koja ei ole). Lapsisolmun on siis oltava tavallinen trie-solmu, jotta kompres- , 102424 14 sointi voidaan tehdä. Muistitilan optimoinnin kannalta on siis edullista ylläpitää myös sankoa edeltävillä trie-solmuiila aina vähintään kaksi lasta (eli jos sankoa edeltää kokoa kaksi oleva trie-solmu, ko. trie-solmulla on aina kaksi lasta).
Keksinnön mukaisessa muistissa on siis kahdenlaisia trie-solmuja: 5 tavallisia trie-solmuja, jotka sisältävät kuvion 5 mukaisesti alkiotaulukon ja kompressoituja solmuja, joita kuvataan seuraavassa.
Kuvioissa 10a ja 10b on havainnollistettu kompressoidun solmun muodostamisperiaatetta. Kuviossa 10a on esitetty kuudesta solmusta muodostuva trie-rakenne, jossa on viiden ylimmäisen solmun osalta vain yksi 10 polku. Tämä viiden solmun trie-rakenne voidaan korvata yhdellä alkiotaulukol-la, joka on esitetty kuviossa 10b. Koska rakenteessa on näiden solmujen osalta vain yksi polku, on taulukosta käytössä vain yksi alkio, joka on tässä esimerkkitapauksessa alkio 18, joka on ympyröity kuviossa (18=01010, kun bitit otetaan rivijärjestyksessä, eli ensin x-bitit ja sen jälkeen y-bitit). Näin ollen 15 trie-rakenne voidaan viiden ylimmän solmun osalta korvata kompressoidulla solmulla, johon on talletettu tutkittavien bittien lukumäärä (5) ja taulukkoindek-sin arvo (18).
Kuvioissa 11a ja 11b on esitetty erästä paikallista ylläpitoesimerkkiä, kun tietoyksikköjä ja niitä vastaavia avaimia poistetaan tietokannasta. Kuvios-20 sa 11a on esitetty alkutilanne, jossa muistirakenne käsittää trie-solmut N111...N113 ja sangot L2...L4. Tämän jälkeen muistista poistetaan sanko L2 i ja sen sisältämä osoitin/tietue, jolloin solmut N111 ja N112 voidaan korvata kompressoidulla solmulla CN, jossa kerrotaan solmun sisältämän osoittimien indeksi ja niiden bittien lukumäärä, jotka on tutkittu sillä polulla, jonka komp-*:··: 25 ressoitu solmu korvaa. Kompressoitu solmu on siis periaatteessa samanlainen kuin tavallinen trie-solmu, mutta sen sijaan, että talletettaisiin koko iso alkio-taulukko, jossa on vain yksi osoitin, talletetaanko kyseisen osoittimien indeksi ja polulla tutkittavien bittien lukumäärä. Näin ollen syntyy kuvion 11b mukainen kompressoitu solmu CN, jossa on kerrottu kyseisellä polulla tutkittavien bittien 30 lukumäärä (3) ja kyseistä osoitinta vastaava indeksi (101=5, kun käytetään bittilimitystä rivijärjestyksessä). Kompressoidussa solmussa on siis virtuaalinen 4 · 4 taulukko, joka korvaa polulla olleen, yhden tai useamman solmutaulukon j « ·/ sisältämän informaation. Mikäli kompressoitu solmu korvaa useita tavallisia trie-solmuja, on kompressoidussa solmussa ilmoitettava tutkittavien bittien •: · · i 35 lukumäärä yhtä suuri kuin korvatuissa solmuissa tutkittavien bittien lukumääri- „ 102424 15 en summa.
Kuviossa 12 on havainnollistettu kompressoidun solmun rakennetta. Solmun minimikokoonpanoon kuuluu 3 osaa: kenttä 120, joka kertoo tutkittavien bittien lukumäärän, kenttä 121, johon on talletettu taulukkoindeksin arvo ja 5 kenttä 122, johon on talletettu osoitin lapsisolmuun. Kompressoidussa solmussa tarvitaan em. tiedot siksi, että haku voisi jatkua myös kompressoidun solmun kohdalla oikealla arvolla ja että solmun uudelleenmuokkaus onnistuisi muistirakenteen muutosten yhteydessä. (Ilman tietoa tutkittavien bittien lukumäärästä ei hakuavaimesta voida laskea taulukkoindeksin arvoa ja toisaalta 10 ilman taulukkoindeksin arvoa ei laskettua arvoa voitaisi verrata solmuun talletettuun arvoon.)
Mikäli kompressoidussa solmussa tapahtuu lisäyksen yhteydessä yhteentörmäys eli kompressoituun solmuun tuleekin uusi osoitin, tutkitaan, kuinka mones bitti erottaa alkuperäisen osoittimen indeksin ja uuden osoitti-15 men indeksin. Tämän mukaan luodaan alkuperäisen kompressoidun solmun korvaava rakenne, jossa uusi kompressoitu solmu sisältää indeksin bittien lukumäärän siltä osin kuin yhteisiä bittejä on. Lisäksi rakenteeseen syntyy yksi tai useampi trie-solmu niitä bittejä vastaaville kohdille, joiden osalta indeksit eroavat toisistaan.
20 Mikäli kompressoitua solmua edeltää yksi tai useampi kompressoitu solmu tai trie-solmuketju, joka muodostaa vain yhden polun, on muistitilan tarpeen ja muistin tehokkuuden kannalta edelleen edullista yhdistää kyseisiä solmuja. Muistin tehokkuuden kannalta on edelleen edullista suorittaa solmu-: jen yhdistäminen niin, että vain ketjun viimeisenä (alimpana) olevassa komp- ·:··· 25 ressoidussa solmussa tutkittavien bittien lukumäärä on pienempi kuin käytetyn i’·.. tietokoneen käyttämä sananpituus. Toisin sanoen, solmuja yhdistetään niin, !*:·. että tutkittavien bittien lukumäärä saadaan kussakin kompressoidussa sol mussa mahdollisimman suureksi. Esim. kolme peräkkäistä kompressoitua solmua, joissa tutkittavien bittien lukumäärät ovat 5, 10 ja 15 voidaan yhdistää > ·« 30 yhdeksi kompressoiduksi solmuksi, jossa tutkittavien bittien lukumäärä on 30.
• · « \ Vastaavasti esim. kolme peräkkäistä kompressoitua solmua (tai kolme peräk- • « · : käistä tavallista trie-solmua, jotka virittävät vain yhden polun), joissa tutkittavi- en bittien lukumäärät ovat 10, 10 ja 15 voidaan yhdistää kahdeksi kompres-? y soiduksi solmuksi, joissa tutkittavien bittien lukumäärät ovat 32 ja 3, kun käy- ; : 35 tetty sananpituus on 32. Mahdollisimman moneen kompressoituun solmuun 102424 16 pyritään siis saamaan tietokoneen sananpituutta vastaava määrä tutkittavia bittejä, ja mahdolliset “ylimääräiset” bitit jätetään hierarkiassa alimpana olevaan kompressoituun solmuun.
Kompressoituja solmuja ei kuitenkaan voida yhdistää niin, että yhdessä 5 solmussa tutkittavien bittien lukumäärä olisi suurempi kuin käytetyn tietokoneen sananpituus. Erityisesti useampiulotteisissa (n>3) tapauksissa on tavallista, että peräkkäisiä yhden lapsen sisältäviä solmuja on niin monta, että polkua ei voida esittää yhdellä kompressoidulla solmulla. Niinpä hakupolku tai sen osa korvautuu usean peräkkäisen kompressoidun solmun muodostamalla 10 ketjulla, jossa muissa paitsi viimeisessä solmussa on tutkittavien bittien lukumäärä sama kuin bittien lukumäärä sanassa, esim. Intel-arkkitehtuurissa 32, ja viimeisessä solmussa pienempi tai yhtä suuri kuin bittien lukumäärä sanassa.
Tällaista tilannetta on havainnollistettu kuviossa 13a, jossa on esitetty kolme peräkkäistä kompressoitua solmua CN1...CN3. Solmuissa tutkittavien 15 bittien lukumääriä on merkitty viitemerkeillä b, b’ ja b” ja solmujen sisältämien taulukkoindeksien arvoja vastaavasti viitemerkeillä i, i’ ja i”. Kahdessa ylimmässä solmussa on tutkittavien bittien lukumäärällä maksimiarvonsa (olettaen, että käytetään 32-bittistä tietokonearkkitehtuuria).
Rajoitetun sananpituuden aiheuttamasta, useiden peräkkäisten komp-20 ressoitujen solmujen muodostamasta ketjusta on edullista muodostaa yksi ko. kompressoidut solmut kokoava solmu. Tämä kokoava solmu muodostetaan siten, että kokoavan solmun osoitin asetetaan osoittamaan ko. ketjussa viimeisenä olevan kompressoidun solmun lapseen, kokoavan solmun tutkittavien y y. bittien lukumääräksi B asetetaan ketjussa olevien kompressoitujen solmujen *;··: 25 tutkittavien bittien lukumäärien summa ja bittilimityksellä tuotetut taulukkoin-
j\, deksit (eli hakusanat) asetetaan solmussa sijaitsevaan listaan tai taulukkoon T
i';': siinä järjestyksessä, missä ne esiintyvät peräkkäisissä kompressoiduissa solmuissa. Kokoavasta solmusta-tulee näin ollen kuvion 13b mukainen solmu y." CN4, jossa on kolme osaa: kenttä 130, joka sisältää osoittimen mainittuun 30 alemman tason solmuun, kenttä 131, joka sisältää tutkittavien bittien lukumää- * rän B (em. summan) ja lista tai taulukko T, joka sisältää peräkkäin bittilimityk- 4 » < 102424 17 kittavien bittien lukumäärästä B seuraavasti: r B / W, jos B MOD W = 0 NE = \ 1 lB/W}+l,josBMODW*0 missä L J on floor-funktio, joka poistaa luvusta desimaalit, W on käytetyn sanan pituus, esim. 32 ja MOD viittaa modulo-aritmetiikkaan. Kokoavaan 5 solmuun ei siis tarvitse tallettaa indeksien lukumäärää erillisenä tietona, vaan se saadaan selville tutkittavien bittien lukumäärän perusteella.
Taulukossa viimeisenä olevan indeksin laskennassa tarvittava bittien lukumäärä B’ Göta on kuviossa merkitty viitemerkillä b”), joka ei välttämättä ole yhtä suuri kuin sanan pituus, saadaan seuraavasti: , W, jos B MOD W = 0
10 D» _ i J
1 B MODW, jos B MODW * 0
Muodostamalla useasta peräkkäisestä kompressoidusta solmusta kokoava solmu saadaan muistiviittauksien (osoittimien) lukumäärä entistä pienemmäksi. Nykyisessä tietokonearkkitehtuurissa, jossa on useampitasoisia cache-muisteja, vaativat muistiviittaukset suhteellisen paljon laskenta-aikaa, 15 joten laskenta-aika saadaan näin ollen pienemmäksi. Samalla poistuu muistitilan tarve osoittimien osalta.
Kompressoitujen solmujen avulla pystytään muistintarvetta minimoimaan tehokkaasti erityisesti epätasaisten avainjakaumien yhteydessä, koska kompression avulla pystytään rakenteen syvyyttä kasvattamaan paikallisesti 20 mielivaltaisen suureksi ilman, että tilantarve kasvaa.
. . Huomattakoon vielä, että edellä esitetyissä esimerkeissä on kussa- « · kin havainnollistettu vain kulloinkin kyseessä olevia operaatioita. Esim. kuviois-j\ sa 7a ja 7b, joissa kuvataan kahdennusta, ei vielä ole puututtu solmujen komp- *·:. ressointiin (vaikka kuvion 7a ylimmästä solmusta tulisi edellä esitetyn perus- 25 teella kompressoitu solmu).
··. Kuten edellä jo epäsuorasti mainittiin, keksinnön mukaisessa muis- • «· tissa sankoa ei voi edeltää kompressoitu solmu, vaan sangon isäsolmuna on I t c aina joko tavallinen trie-solmu tai tyhjä alkio. Kompressoitu solmu ei siis voi
tl I
. osoittaa sankoon, vaan se osoittaa aina joko toiseen kompressoituun solmuun «| t !30 tai tavalliseen trie-solmuun. Tyhjällä alkiolla tarkoitetaan sitä, että jos tietueiden kokonaislukumäärä on pienempi kuin sankoon mahtuvien osoittimi-
IMI
en/tietueiden lukumäärä, ei puumaista rakennetta vielä tarvita, vaan raken- 102424 18 teessä tullaan toimeen yhdellä sangolla (jolloin ko. solmua edeltää käsitteellisesti tyhjä alkio). Tällä tavoin on edullista menetellä muistin käyttöönoton alkuvaiheessa. Puumaista rakennetta kannattaa siis lähteä kasvattamaan vasta sitten, kun se on välttämätöntä.
5 Edellä kuvatut ehdot voidaan pitää yllä joko jatkuvasti koko raken teessa (globaalisti) tai vain paikallisesti sen mukaan, missä kohdassa rakennetta kulloinkin tehdään lisäyksiä tai poistoja.
Lukuunottamatta sitä, että lisäykset saattavat laukaista solmujen kahdennuksia tai poistot puolituksia ja kompressointeja, toteutetaan haut, 10 lisäykset ja poistot sinänsä tunnetulla tavalla. Tämän suhteen viitataan esim. alussa mainittuun kansainväliseen patenttihakemukseen, jossa kuvataan esim. lisäysten yhteydessä tapahtuvia törmäystilanteita tarkemmin. Tavanomaisten tuhoavien päivitysten asemesta muistissa voidaan käyttää myös tunnettuja funktionaalisia päivityksiä, jotka toteutetaan tunnetulla tekniikalla kopioimalla 15 polku juuresta sankoihin.
Kuviossa 14 on esitetty keksinnön mukaista muistia lohkokaaviota-solla. Kutakin dimensiota varten on oma tulorekisteri, joten tulorekisterejä on siis yhteensä n kappaletta. Näihin tulorekistereihin, joita on merkitty vii-temerkeillä R^-.R,,, talletetaan kunkin dimension hakuavain, kukin omaan 20 rekisteriinsä. Tulorekisterit on kytketty rekisteriin TR, johon muodostetaan edellä kuvattu hakusana käytetyn bittilimitysmenetelmän mukaisesti. Rekisteri TR on kytketty summaimen S kautta muistin MEM osoitesisäänmenoon. Muistin ulostulo on puolestaan kytketty osoiterekisterille AR, jonka ulostulo on ·:··: puolestaan kytketty summaimelle S. Aluksi luetaan jokaisesta rekisteristä vali- 25 tut bitit oikeaan järjestykseen yhteisrekisteriin TR. Osoiterekisteriin AR on aluksi talletettu ensimmäisen trie-solmun aloitusosoite, jolloin tähän osoittee-seen summataan summaimessa S se osoite, joka saadaan offset-osoitteena :·. _ rekisteriltä TR. Tämä osoite syötetään muistin MEM osoitesisäänmenoon, joi- loin muistin dataulostulosta saadaan seuraavan trie-solmun aloitusosoite, joka • » · 30 kirjoitetaan osoiterekisteriin AR siellä olleen edellisen osoitteen päälle. Tämän • · · : ; ’ jälkeen ladataan tulorekistereistä jälleen seuraavaksi valittavat bitit oikeaan jär- • · ' ·; · ‘ jestykseen yhteisrekisteriin TR ja näin saatu taulukko-osoite summataan ko.
;:· taulukon (eli trie-solmun) aloitusosoitteeseen, joka saadaan osoiterekisteristä ·;··: AR. Tämä osoite syötetään jälleen muistin MEM osoitesisäänmenoon, jolloin 35 muistin dataulostulosta saadaan seuraavan solmun aloitusosoite. Edellä 102424 19 kuvattuja menettelyä toistetaan kunnes on edetty haluttuun pisteeseen asti ja voidaan suorittaa talletus tai lukea haluttu tietue.
Ohjauslogiikka CL huolehtii muistirakenteen ylläpidosta sekä siitä, että kussakin solmussa otetaan rekistereistä oikea määrä bittejä.
5 Osoitelaskennan nopeuteen voidaan vaikuttaa sillä, minkälainen laitetoteutus valitaan. Koska eteneminen tapahtuu edellä esitettyjen bitti-manipulaatioiden avulla, voidaan osoitelaskentaa nopeuttaa siirtymällä yhden prosessorin käytöstä moniprosessoriympäristöön, jossa suoritetaan rinnakkaista prosessointia. Moniprosessoriympäristölle vaihtoehtoinen toteutustapa 10 on ASIC-piiri.
Vaikka keksintöä on edellä selostettu viitaten oheisten piirustusten mukaisiin esimerkkeihin, on selvää, ettei keksintö ole rajoittunut siihen, vaan sitä voidaan muunnella oheisissa patenttivaatimuksissa esitetyn keksinnöllisen ajatuksen puitteissa. Rakenne voidaan toteuttaa myös vaihtuvan mittaisille 15 avaimille. Osoitelaskenta voi myös jatkua vielä sangossakin, edellyttäen, että bittejä on vielä tutkimatta. Alussa esitettyä sangon määritelmää onkin laajennettava siten, että sanko on tietorakenne, joka voi sisältää myös toisen trie-rakenteen. Useita keksinnön mukaisia hakemistorakenteita voidaan siis linkittää peräkkäin siten, että sankoon on talletettu toinen hakemistorakenne (eli 20 toinen trie-rakenne) tai sangon tai lehden sisältämä osoitin osoittaa toiseen :.j j hakemistorakenteeseen. Viittaus sangosta tai lehdestä tapahtuu suoraan seuraavan hakemistorakenteen juurisolmuun. Yleisesti ottaen voidaan todeta, :että sanko sisältää ainakin yhden elementin siten, että yksittäisen elementin ·:··: tyyppi on valittu joukosta, joka käsittää tietoyksikön, osoittimen talletettuun Γ·.. 25 tietoyksikköön, osoittimen toiseen hakemistorakenteeseen ja toisen hakemis- i*:*; torakenteen. Sankojen tarkempi toteutus riippuu sovelluksesta. Useissa tapa- uksissa kaikki sangoissa olevat elementit voivat esim. olla samaa tyyppiä, joka on joko tietoyksikkö tai osoitin tietoyksikköön. Sen sijaan esim. sovelluksessa, jossa muistiin talletetaan merkkijonoja sangossa voi olla elementtipareja siten, 30 että sangon kaikki parit ovat joko osoitin tietoyksikköön/osoitin hakemistora-:t>;’ kenteeseen -pareja tai tietoyksikkö/osoitin hakemistorakenteeseen -pareja tai t · *··' tietoyksikkö/hakemistorakenne -pareja. Tällöin voidaan esim. merkkijonon f ;: * etuosa (prefix) tallettaa tietoyksikköön ja jatkaa hakua tietoyksikköä vastaa- ’: : vaan pariin kuuluvasta hakemistorakenteesta.

Claims (18)

102424 20
1. Menetelmä muistin toteuttamiseksi, johon muistiin tieto talletetaan tietoyksikköinä, joista jokaiselle varataan muistissa oma muistitilansa, jonka 5 menetelmän mukaisesti - muisti toteutetaan hakemistorakenteena, joka muodostuu puumaisesta hierarkiasta, jossa on useilla eri tasoilla olevia solmuja, jolloin yksittäinen solmu voi olla (i) trie-solmu, joka käsittää taulukon, jonka yksittäinen alkio voi sisältää puumaisessa hierarkiassa alempana olevan solmun osoitteen ja jonka 10 yksittäinen alkio voi myös olla tyhjä, jossa taulukossa olevien alkioiden lukumäärä vastaa jotakin kakkosen potenssia, tai (ii) sanko, joka sisältää ainakin yhden elementin siten, että sangon yksittäisen elementin tyyppi on valittu joukosta, joka käsittää tietoyksikön, osoittimen talletettuun tietoyksikköön, osoittimen toiseen hakemistorakenteeseen ja toisen hakemistorakenteen, 15. hakemistorakenteessa suoritetaan osoitelaskentaa siten, että - (a) valitaan puumaisessa hierarkiassa ylimmällä tasolla olevassa solmussa solmukohtainen lukumäärä bittejä käytettyjen hakuavaimien muodostamasta bittijonosta, muodostetaan valituista biteistä hakusana, jonka perusteella haetaan kyseisessä solmussa seuraavan solmun osoite ja edetään 20 mainittuun solmuun, :.j j -(b) valitaan käytettyjen hakuavaimien muodostaman bittijonon : : vielä valitsematta olevien bittien joukosta solmukohtainen lukumäärä bittejä ja : ]' ]: muodostetaan valituista biteistä hakusana, jonka avulla haetaan jälleen uuden, ·:*·: alemmalla tasolla olevan solmun osoite sen solmun taulukosta, johon on edet- i\. 25 ty, i’j*: - toistetaan askelta (b) kunnes päästään tyhjään alkioon tai kun- nes uuden, alemmalla tasolla olevan solmun osoite on sangon osoite, tunnettu siitä, että - • · · . ·: ·. hakemistorakenteessa ylläpidetään trie-solmuja siten, että 30 (c) trie-solmussa tyhjien alkioiden lukumäärä on pienempi tai yhtä : suuri kuin puolet kyseisen solmun alkioiden lukumäärästä tai vaihtoehtoisesti • · ‘ ’ muihin trie-solmuihin osoittavien alkioiden lukumäärä on suurempi kuin solmun : - alkioiden lukumäärän neljännes, ja ; (d) trie-solmun muihin trie-solmuihin osoittavien osoitteiden lukumää- 35 rä on pienempi tai yhtä suuri kuin puolet solmun alkioiden lukumäärästä, 21 102424 jolloin ehdon (c) ollessa epätosi suoritetaan solmun puolitus ja ehdon (d) ollessa epätosi suoritetaan solmun kahdennus.
2. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, että ainakin osassa hakemistorakennetta korvataan keskenään peräkkäisten 5 trie-solmujen joukkoja kompressoiduilla solmuilla siten, että yksittäinen joukko, joka muodostuu keskenään peräkkäisistä trie-solmuista, joista jokaisesta on ainoastaan yksi osoite alemman tason trie-solmuun, korvataan kompressoidulla solmulla (CN), johon talletetaan osoite siihen solmuun, johon korvattavassa joukossa alimpana oleva solmu osoittaa, tieto sen hakusanan arvosta, 10 jolla mainittu osoite löytyy sekä tieto niiden bittien kokonaislukumäärästä, joista korvattavassa joukossa muodostetaan hakusanat.
3. Patenttivaatimuksen 2 mukainen menetelmä, tunnettu siitä, että korvausta suoritetaan koko hakemistorakenteessa siten, että kaikki mainitut joukot korvataan kompressoiduilla solmuilla.
4. Patenttivaatimuksen 2 mukainen menetelmä, tunnettu siitä, että korvaus suoritetaan myös joukolle, johon kuuluu vain yksi trie-solmu, jolloin talletettava bittien kokonaislukumäärä vastaa niiden bittien lukumäärää, joista mainitussa trie-solmussa muodostetaan hakusana.
5. Patenttivaatimuksen 2 mukainen menetelmä, tunnettu siitä, 20 että hakemistorakenteeseen muodostetaan useita peräkkäisiä kompressoituja solmuja siten, että ainakin ylimmällä tasolla olevaan kompressoituun solmuun kerätään käytettyä sanan pituutta vastaava lukumäärä tutkittavia hakuavain-bittejä.
*:**: 6. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, »**.. 25 että useita peräkkäisiä kompressoituja solmuja yhdistetään yhdeksi uudeksi jT: kompressoiduksi solmuksi, jolloin uuteen solmuun talletetaan bittien lukumää räksi yhdistettävistä solmuista saatujen lukumäärien summa.
7. Patenttivaatimuksen-5 mukainen menetelmä, tunnettu siitä, • :*♦*: että sellaisten peräkkäisten kompressoitujen solmujen muodostama ketju, 30 jossa ainakin kahdessa ylimmäisessä solmussa tutkittavien bittien lukumäärä vastaa käytettyä sanan pituutta korvataan yhdellä kokoavalla solmulla (CN4), i : : * joka sisältää: , * * ’ - osoitteen siihen solmuun, johon ketjussa alimpana oleva solmu • : sisältää osoitteen, 35. ketjun solmuista saadun tutkittavien bittien lukumäärän summan, ja 102424 22 - peräkkäisjärjestyksessä keljun solmujen sisältämät hakusana-arvot.
8. Patenttivaatimuksen 3 mukainen menetelmä, tunnettu siitä, että muistin kaikissa kompressoimattomissa trie-solmuissa ylläpidetään vähintään kaksi osoitetta alemman tason solmuun.
9. Patenttivaatimuksen 2 mukainen menetelmä, tunnettu siitä, että hakemistorakenteeseen talletetaan kunkin solmun osalta tieto siitä, onko kysymyksessä kompressoimaton trie-solmu, kompressoitu trie-solmu vai sanko.
10. Menetelmä muistin toteuttamiseksi, johon muistiin tieto tallete-10 taan tietoyksikköinä, joista jokaiselle varataan muistissa oma muistitilansa, jonka menetelmän mukaisesti - muisti toteutetaan hakemistorakenteena, joka muodostuu puumaisesta hierarkiasta, jossa on useilla eri tasoilla olevia solmuja, jolloin yksittäinen solmu voi olla (i) sisäsolmu, joka käsittää taulukon, jonka yksittäinen alkio voi 15 sisältää puumaisessa hierarkiassa alempana olevan solmun osoitteen ja jonka yksittäinen alkio voi myös olla tyhjä, jossa taulukossa olevien alkioiden lukumäärä vastaa jotakin kakkosen potenssia, tai (ii) lehti, joka sisältää ainakin yhden elementin, jonka tyyppi on yksi joukosta, joka käsittää osoittimen talletettuun tietoyksikköön ja osoittimen toiseen hakemistorakenteeseen, 20. hakemistorakenteessa suoritetaan osoitelaskentaa siten, että -(a) valitaan puumaisessa hierarkiassa ylimmällä tasolla olevassa solmussa solmukohtainen lukumäärä bittejä käytettyjen hakuavaimien muodostamasta bittijonosta, muodostetaan valituista biteistä hakusana, jonka ·:*·: perusteella haetaan kyseisessä solmussa seuraavan solmun osoite ja edetään i*\. 25 mainittuun solmuun, Γ:*ι - (b) valitaan käytettyjen hakuavaimien muodostaman bittijonon vielä valitsematta olevien bittien joukosta solmukohtainen lukumäärä bittejä ja muodostetaan valituista biteistä hakusana, jonka avulla haetaan jälleen uuden, alemmalla tasolla olevan solmun osoite sen solmun taulukosta, johon on edet-··*· 30 * - toistetaan askelta (b) kunnes päästään tyhjään alkioon tai kun- ( I nes uuden, alemmalla tasolla olevan solmun osoite on lehden osoite, _ ; i tunnettu siitä, että •: · : hakemistorakenteessa ylläpidetään sisäsolmuja siten, että 35 (c) sisäsolmussa tyhjien alkioiden lukumäärä on pienempi tai yhtä 23 102424 suuri kuin puolet kyseisen solmun alkioiden lukumäärästä tai vaihtoehtoisesti muihin sisäsolmuihin osoittavien alkioiden lukumäärä on suurempi kuin solmun alkioiden lukumäärän neljännes, ja (d) sisäsolmun muihin sisäsolmuihin osoittavien osoitteiden lukumää-5 rä on pienempi tai yhtä suuri kuin puolet solmun alkioiden lukumäärästä, jolloin ehdon (c) ollessa epätosi suoritetaan solmun puolitus ja ehdon (d) ollessa epätosi suoritetaan solmun kahdennus.
11. Patenttivaatimuksen 10 mukainen menetelmä, tunnettu siitä, että ainakin osassa hakemistorakennetta korvataan keskenään peräkkäis- 10 ten sisäsolmujen joukkoja kompressoiduilla solmuilla siten, että yksittäinen joukko, joka muodostuu keskenään peräkkäisistä sisäsolmuista, joista jokaisesta on ainoastaan yksi osoite alemman tason sisäsolmuun, korvataan kompressoidulla solmulla (CN), johon talletetaan osoite siihen solmuun, johon korvattavassa joukossa alimpana oleva solmu osoittaa, tieto sen hakusanan 15 arvosta, jolla mainittu osoite löytyy sekä tieto niiden bittien kokonaislukumäärästä, joista korvattavassa joukossa muodostetaan hakusanat.
12. Patenttivaatimuksen 11 mukainen menetelmä, tunnettu siitä, että korvausta suoritetaan koko hakemistorakenteessa siten, että kaikki mainitut joukot korvataan kompressoiduilla solmuilla.
13. Patenttivaatimuksen 11 mukainen menetelmä, t u n n ett u sii tä, että korvaus suoritetaan myös joukolle, johon kuuluu vain yksi sisäsolmu, jolloin talletettava bittien kokonaislukumäärä vastaa niiden bittien lukumäärää, joista mainitussa sisäsolmussa muodostetaan hakusana.
·:··: 14. Patenttivaatimuksen 11 mukainen menetelmä, tunnettu siitä, i\. 25 että hakemistorakenteeseen muodostetaan useita peräkkäisiä kompressoituja solmuja siten, että ainakin ylimmällä tasolla olevaan kompressoituun solmuun kerätään käytettyä sanan pituutta vastaava lukumäärä tutkittavia hakuavain- :·. bittejä.
• «· ]·;♦. 15. Patenttivaatimuksen 10 mukainen menetelmä, tunnettu siitä, • · · 30 että useita peräkkäisiä kompressoituja solmuja yhdistetään yhdeksi uudeksi kompressoiduksi solmuksi, jolloin uuteen solmuun talletetaan bittien lukumääräksi yhdistettävistä solmuista saatujen lukumäärien summa.
16. Patenttivaatimuksen 14 mukainen menetelmä, tunnettu siitä, että sellaisten peräkkäisten kompressoitujen solmujen muodostama ketju, 35 jossa ainakin kahdessa ylimmäisessä solmussa tutkittavien bittien lukumäärä 24 102424 vastaa käytettyä sanan pituutta korvataan yhdellä kokoavalla solmulla (CN4), joka sisältää: - osoitteen siihen solmuun, johon ketjussa alimpana oleva solmu sisältää osoitteen, 5. ketjun solmuista saadun tutkittavien bittien lukumäärän summan, ja - peräkkäisjärjestyksessä ketjun solmujen sisältämät hakusana-arvot.
17. Patenttivaatimuksen 12 mukainen menetelmä, tunnettu siitä, että muistin kaikissa kompressoimattomissa sisäsolmuissa ylläpidetään vähintään kaksi osoitetta alemman tason solmuun.
18. Patenttivaatimuksen 11 mukainen menetelmä, tunnettu siitä, että muistiin talletetaan tieto siitä, viittaako osoite kompressoimattomaan solmuun, kompressoituun solmuun vai tietoyksikköön. • · • · i ·.. •«· i : : ·« • · • · · • · · • · · • · · 1 · · 102424 25
FI971065A 1997-03-14 1997-03-14 Menetelmä muistin toteuttamiseksi FI102424B1 (fi)

Priority Applications (6)

Application Number Priority Date Filing Date Title
FI971065A FI102424B1 (fi) 1997-03-14 1997-03-14 Menetelmä muistin toteuttamiseksi
DE69831246T DE69831246T2 (de) 1997-03-14 1998-03-04 Verfahren zur einrichtung eines assoziativen speichers mit digitaler trie struktur
PCT/FI1998/000190 WO1998041931A1 (fi) 1997-03-14 1998-03-04 Method for implementing a memory
AU66238/98A AU6623898A (en) 1997-03-14 1998-03-04 Method for implementing an associative memory based on a digital trie structure
EP98908121A EP1008063B1 (en) 1997-03-14 1998-03-04 Method for implementing an associative memory based on a digital trie structure
US09/390,526 US6499032B1 (en) 1997-03-14 1999-09-03 Method for implementing an associative memory based on a digital trie structure

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI971065 1997-03-14
FI971065A FI102424B1 (fi) 1997-03-14 1997-03-14 Menetelmä muistin toteuttamiseksi

Publications (4)

Publication Number Publication Date
FI971065A0 FI971065A0 (fi) 1997-03-14
FI971065A FI971065A (fi) 1998-09-15
FI102424B true FI102424B (fi) 1998-11-30
FI102424B1 FI102424B1 (fi) 1998-11-30

Family

ID=8548387

Family Applications (1)

Application Number Title Priority Date Filing Date
FI971065A FI102424B1 (fi) 1997-03-14 1997-03-14 Menetelmä muistin toteuttamiseksi

Country Status (6)

Country Link
US (1) US6499032B1 (fi)
EP (1) EP1008063B1 (fi)
AU (1) AU6623898A (fi)
DE (1) DE69831246T2 (fi)
FI (1) FI102424B1 (fi)
WO (1) WO1998041931A1 (fi)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FI991262A (fi) * 1999-06-02 2000-12-03 Nokia Networks Oy Digitaaliseen trie-rakenteeseen perustuva muisti
GB2367917A (en) 2000-10-12 2002-04-17 Qas Systems Ltd Retrieving data representing a postal address from a database of postal addresses using a trie structure
US6807618B1 (en) * 2001-08-08 2004-10-19 Emc Corporation Address translation
BR0215592A (pt) * 2002-02-06 2004-12-21 Tecnomen Oyj Banco de dados distribuìdo para uma chave de busca
US7162481B2 (en) * 2002-12-06 2007-01-09 Stmicroelectronics, Inc. Method for increasing storage capacity in a multi-bit trie-based hardware storage engine by compressing the representation of single-length prefixes
US7702882B2 (en) 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US8180802B2 (en) * 2003-09-30 2012-05-15 International Business Machines Corporation Extensible decimal identification system for ordered nodes
US20070162508A1 (en) * 2004-11-08 2007-07-12 Mazzagatti Jane C Updating information in an interlocking trees datastore
US7908242B1 (en) 2005-04-11 2011-03-15 Experian Information Solutions, Inc. Systems and methods for optimizing database queries
US8078637B1 (en) * 2006-07-28 2011-12-13 Amencan Megatrends, Inc. Memory efficient peim-to-peim interface database
EP2074572A4 (en) 2006-08-17 2011-02-23 Experian Inf Solutions Inc SYSTEM AND METHOD FOR PROVIDING A BRAND FOR A USED VEHICLE
WO2008039860A1 (en) 2006-09-26 2008-04-03 Experian Information Solutions, Inc. System and method for linking mutliple entities in a business database
US8036979B1 (en) 2006-10-05 2011-10-11 Experian Information Solutions, Inc. System and method for generating a finance attribute from tradeline data
JP4402120B2 (ja) * 2007-01-24 2010-01-20 株式会社エスグランツ ビット列検索装置、検索方法及びプログラム
US8606666B1 (en) 2007-01-31 2013-12-10 Experian Information Solutions, Inc. System and method for providing an aggregation tool
US8285656B1 (en) 2007-03-30 2012-10-09 Consumerinfo.Com, Inc. Systems and methods for data verification
US20080288527A1 (en) * 2007-05-16 2008-11-20 Yahoo! Inc. User interface for graphically representing groups of data
US8122056B2 (en) 2007-05-17 2012-02-21 Yahoo! Inc. Interactive aggregation of data on a scatter plot
US7739229B2 (en) 2007-05-22 2010-06-15 Yahoo! Inc. Exporting aggregated and un-aggregated data
US7756900B2 (en) * 2007-05-22 2010-07-13 Yahoo!, Inc. Visual interface to indicate custom binning of items
US20080294540A1 (en) 2007-05-25 2008-11-27 Celka Christopher J System and method for automated detection of never-pay data sets
US9690820B1 (en) 2007-09-27 2017-06-27 Experian Information Solutions, Inc. Database system for triggering event notifications based on updates to database records
US8312033B1 (en) 2008-06-26 2012-11-13 Experian Marketing Solutions, Inc. Systems and methods for providing an integrated identifier
US9152727B1 (en) 2010-08-23 2015-10-06 Experian Marketing Solutions, Inc. Systems and methods for processing consumer information for targeted marketing applications
US9147042B1 (en) 2010-11-22 2015-09-29 Experian Information Solutions, Inc. Systems and methods for data verification
US9483606B1 (en) 2011-07-08 2016-11-01 Consumerinfo.Com, Inc. Lifescore
KR101341507B1 (ko) * 2012-04-13 2013-12-13 연세대학교 산학협력단 수정된 b+트리 노드 검색 방법 및 장치
US9853959B1 (en) 2012-05-07 2017-12-26 Consumerinfo.Com, Inc. Storage and maintenance of personal data
KR101977575B1 (ko) 2012-09-28 2019-05-13 삼성전자 주식회사 디렉토리 엔트리 조회 장치, 그 방법 및 디렉토리 엔트리 조회 프로그램이 기록된 기록 매체
US9697263B1 (en) 2013-03-04 2017-07-04 Experian Information Solutions, Inc. Consumer data request fulfillment system
US9483479B2 (en) 2013-08-12 2016-11-01 Sap Se Main-memory based conceptual framework for file storage and fast data retrieval
US10102536B1 (en) 2013-11-15 2018-10-16 Experian Information Solutions, Inc. Micro-geographic aggregation system
US9529851B1 (en) 2013-12-02 2016-12-27 Experian Information Solutions, Inc. Server architecture for electronic data quality processing
US10262362B1 (en) 2014-02-14 2019-04-16 Experian Information Solutions, Inc. Automatic generation of code for attributes
CN103888373B (zh) * 2014-03-05 2017-05-10 北京邮电大学 一种网络节点的副本文件存储容量的调整方法和装置
US9576030B1 (en) 2014-05-07 2017-02-21 Consumerinfo.Com, Inc. Keeping up with the joneses
US10242019B1 (en) 2014-12-19 2019-03-26 Experian Information Solutions, Inc. User behavior segmentation using latent topic detection
US10318585B2 (en) * 2015-11-30 2019-06-11 Oracle International Corporation Facilitating efficient garbage collection by dynamically coarsening an append-only lock-free trie
US20180060954A1 (en) 2016-08-24 2018-03-01 Experian Information Solutions, Inc. Sensors and system for detection of device movement and authentication of device user based on messaging service data from service provider
US11227001B2 (en) 2017-01-31 2022-01-18 Experian Information Solutions, Inc. Massive scale heterogeneous data ingestion and user resolution
US10963434B1 (en) 2018-09-07 2021-03-30 Experian Information Solutions, Inc. Data architecture for supporting multiple search models
US11941065B1 (en) 2019-09-13 2024-03-26 Experian Information Solutions, Inc. Single identifier platform for storing entity data
US11880377B1 (en) 2021-03-26 2024-01-23 Experian Information Solutions, Inc. Systems and methods for entity resolution

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2001390C (en) 1988-12-19 1997-12-30 Ming-Chien Shan View composition in a data-base management system
AU620994B2 (en) 1989-07-12 1992-02-27 Digital Equipment Corporation Compressed prefix matching database searching
US5276868A (en) * 1990-05-23 1994-01-04 Digital Equipment Corp. Method and apparatus for pointer compression in structured databases
US5319777A (en) 1990-10-16 1994-06-07 Sinper Corporation System and method for storing and retrieving information from a multidimensional array
US5430869A (en) * 1991-05-29 1995-07-04 Hewlett-Packard Company System and method for restructuring a B-Tree
CA2117846C (en) * 1993-10-20 2001-02-20 Allen Reiter Computer method and storage structure for storing and accessing multidimensional data
WO1995034155A2 (en) * 1994-06-06 1995-12-14 Nokia Telecommunications Oy A method for storing and retrieving data and a memory arrangement
US5787430A (en) * 1994-06-30 1998-07-28 International Business Machines Corporation Variable length data sequence backtracking a trie structure
JP3152868B2 (ja) * 1994-11-16 2001-04-03 富士通株式会社 検索装置および辞書/テキスト検索方法
US6115716A (en) * 1997-03-14 2000-09-05 Nokia Telecommunications Oy Method for implementing an associative memory based on a digital trie structure

Also Published As

Publication number Publication date
US6499032B1 (en) 2002-12-24
WO1998041931A1 (fi) 1998-09-24
AU6623898A (en) 1998-10-12
WO1998041931A8 (fi) 1999-06-10
DE69831246D1 (de) 2005-09-22
EP1008063A1 (en) 2000-06-14
FI971065A (fi) 1998-09-15
FI971065A0 (fi) 1997-03-14
DE69831246T2 (de) 2006-02-23
FI102424B1 (fi) 1998-11-30
EP1008063B1 (en) 2005-08-17

Similar Documents

Publication Publication Date Title
FI102424B (fi) Menetelmä muistin toteuttamiseksi
FI102426B (fi) Menetelmä muistin toteuttamiseksi
FI102425B (fi) Menetelmä muistin toteuttamiseksi
Hagerup et al. Deterministic dictionaries
US11899667B2 (en) Efficient use of trie data structure in databases
US6115716A (en) Method for implementing an associative memory based on a digital trie structure
CN107153647B (zh) 进行数据压缩的方法、装置、***和计算机程序产品
JP3992495B2 (ja) トリー構造に基づく機能的メモリ
Andersson Sublogarithmic searching without multiplications
Fischer et al. Lempel–Ziv factorization powered by space efficient suffix trees
Yang et al. An enhanced dynamic hash TRIE algorithm for lexicon search
Nekrich Orthogonal range searching in linear and almost-linear space
Jansson et al. Linked dynamic tries with applications to LZ-compression in sublinear time and space
Chien et al. Geometric BWT: compressed text indexing via sparse suffixes and range searching
Wagner Embedding arbitrary binary trees in a hypercube
Fischer et al. Deterministic sparse suffix sorting on rewritable texts
Baswana et al. Incremental algorithm for maintaining a DFS tree for undirected graphs
Fischer et al. GLOUDS: Representing tree-like graphs
Arroyuelo et al. Succinct dynamic cardinal trees
Baswana et al. On dynamic DFS tree in directed graphs
Akagi et al. Grammar index by induced suffix sorting
Gupta et al. A framework for dynamizing succinct data structures
OLIVIE A study of balanced binary trees and balanced one-two trees
Huynh et al. IFIN+: a parallel incremental frequent itemsets mining in shared-memory environment
Pagh Faster deterministic dictionaries

Legal Events

Date Code Title Description
MA Patent expired