SE510001C2 - Metod för att lagra element i en databas - Google Patents

Metod för att lagra element i en databas

Info

Publication number
SE510001C2
SE510001C2 SE9702760A SE9702760A SE510001C2 SE 510001 C2 SE510001 C2 SE 510001C2 SE 9702760 A SE9702760 A SE 9702760A SE 9702760 A SE9702760 A SE 9702760A SE 510001 C2 SE510001 C2 SE 510001C2
Authority
SE
Sweden
Prior art keywords
container
belonging
size
information
free
Prior art date
Application number
SE9702760A
Other languages
English (en)
Other versions
SE9702760D0 (sv
SE9702760L (sv
Inventor
Ulf Mikael Ronstroem
Ataullah Dabaghi
Original Assignee
Ericsson Telefon Ab L M
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 Ericsson Telefon Ab L M filed Critical Ericsson Telefon Ab L M
Priority to SE9702760A priority Critical patent/SE510001C2/sv
Publication of SE9702760D0 publication Critical patent/SE9702760D0/sv
Priority to AU83650/98A priority patent/AU8365098A/en
Priority to DE69826283T priority patent/DE69826283D1/de
Priority to BR9810767-4A priority patent/BR9810767A/pt
Priority to PCT/SE1998/001332 priority patent/WO1999005586A2/en
Priority to CN98809340A priority patent/CN1111815C/zh
Priority to EP98934046A priority patent/EP0996881B1/en
Priority to KR10-2000-7000595A priority patent/KR100529995B1/ko
Priority to JP2000504498A priority patent/JP2001511553A/ja
Priority to US09/115,948 priority patent/US6308169B1/en
Publication of SE9702760L publication Critical patent/SE9702760L/sv
Publication of SE510001C2 publication Critical patent/SE510001C2/sv

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/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • 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/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

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)

Description

15 20 25 30 35 _ 2 _ skall placeras medelst en hash-funktion.
Hash-funktionens uppgift är att distribuera adresserna slump- mässigt i tabellen så att dessa fördelas jämt i densamma. Samma hash-funktion används sedan för att finna rätt element vid sökandet efter en specifik adress.
Vid nyttjandet av en hash-funktion på en nyckel erhålls ett hash-värde, vilket utgöres av ett data-ord med vanligtvis 32 bitar.
En typ av algoritm som används är linjär hashning (LH), där det data-ord som erhålls från funktionen bland annat omfattar så kallade LH-bitar. LH-bitarna som erhålls kan förenklat sägas peka på en sida i databasen, eller på en position i ett register där denna position pekar på en sida, och det sökta elementet befinner någonstans på denna sida.
För att ytterligare effektivisera sökandet efter ett element är det känt att utföra en hashning i två steg. Dessa två steg innebär att det data-ord som erhålls delas upp i två grupper av bitar.
Den första gruppen av bitar pekar då exempelvis in i ett index i en vektor, vilket index kan peka ut en ny vektor. Den andra gruppen av bitar pekar in i ett index i denna nya vektor, vil- ket index exempelvis pekar på ett första element i en länkad lista av element. Det eftersökta elementet finns sedan någon- stans i denna länkade lista av element.
Sådana länkade listor kan vara olika långa. En intern adress ligger i varje element. De olika länkarna är fysiskt placerade på helt olika ställen inom ett minne men är medelst pekare länkade till varandra.
Vid en sökning av ett visst element erhålls således huvudet till en länkad lista av element. Om den eftersökta interna 10 15 20 25 30 35 510 00? _ 3 _ adressen inte befinner sig i det första elementet söker man vidare till nästa element i den länkade listan. Eftersom nästa element i den länkade listan är fysiskt placerad någon annan- stans i minnet krävs vanligtvis ytterligare en access av minnet för att inhämta detta nästa element. Den första inhämtningen av det felaktiga elementet är en så kallad cache-miss.
Beroende pà listornas längd kan således ett sökande efter ett visst element kräva ett flertal cache-missar, vilka är mycket dyrbara. Med nästa generations processorer kommer en cache-miss att tidsmässigt motsvaras av hundratals instruktioner.
Det är således önskvärt att minimera antalet cache-missar. Ide- alet är att kunna finna ett eftersökt element vid den första accessen av minnet.
Det är även känt att, enligt ovan, låta ett hash-värde peka pá en position i ett register eller en vektor där ett värde i den- na position pekar vidare på databasen, för att därigenom erbjuda en möjlighet till dynamiska förändringar i en databas, där ett element kan förflyttas mellan exempelvis olika sidor med en medföljande förändring av värdet i registret för detta element utan att elementet behöver tilldelas ett nytt hash- värde.
Det är även känt att en distribuerad databas omfattar ett fler- tal noder som utgör ett gemensamt system i en gemensam databas.
Informationen i en distribuerad databas ligger fördelad i de olika ingående noderna.
En nod kan innefatta en primär kopia av en eller flera delar av databasen och en sekundär kopia av en eller flera andra delar av databasen. En primär kopia med tillhörande sekundär kopia benämns vanligtvis som ett fragment.
Följande publikationer får anses ge en övergripande bild av känd teknik inom detta teknikområde: 10 15 20 25 30 35 510 001 _ 4 _ "Linear Hashing: a new tool for file and tables adressing", W.Litwin, reprinted from VLDB-80 in Readings in Database Systems, 2nd ed, M. Stonebraker (ed.), Morgan Kaufman 1994.
"LH* - Linear Hashing for Distributed Files", W. Litwin, M-A. Neimat, D. A. Schneider, ACM SIGMOD Int'l Conf. On Management of Data, 1993.
“High-Availability LH* Schemes with Mirroring", W. Litwin, M-A Neimat.
"LH*LH: A Scalable High Performance Data Structure for Switched Microcomputers", J.S. Karlsson, W. Litwin, T. Risch, 5th Int'l Conf on Extending Database Technology (EDBT '96).
"Dynamic Hash Tables", P-Å. Larsson, Communications of the ACM, april 1988.
“Main-Memory Linear Hashing - Some Enhancements of Larson's Algorithm", M. Pettersson, University of Linköping, Sweden, march 1993 n n n L IEKHl$KI_EEQELEM Under beaktande av teknikens tidigare ståndpunkt, såsom den be- skrivits ovan, torde det få anses vara ett tekniskt problem att kunna erbjuda en metod varigenom ett element kan lagras, och sedan genom en sökning åter finnas, där sökningen i de flesta fallen inte medför någon cache-miss och i vissa fall medför en cache-miss.
Det är ett tekniskt problem att kunna erbjuda en möjlighet att öka upplösningen vid sökandet efter ett element så att en sök- ning erbjuder en möjlighet att läsa in det eftersökta elementet inläsningen till vid första, eller i undantagsfall andra, 10 15 20 25 30 35 510 ÛÛí cache-minnet.
Det är ett tekniskt problem att kunna erbjuda en metod vari- genom en datastruktur kan bildas där en sådan upplösning och sökning är möjlig.
Det är ett tekniskt problem att kunna erbjuda en möjlighet att finna samtliga kopior av ett element hörande till ett fragment, såsom primära och sekundära kopior, vid en sökning av detsamma.
Det är ett tekniskt problem att kunna finna ett format för en lagringsstruktur, här benämnd container, som är anpassat att lagra ett antal element och som är anpassat att kunna läsas in i sin helhet till ett cache-minne.
Det är då även ett tekniskt problem att kunna erbjuda en möj- lighet att lagra ett element som enligt den matematiska funk- tionen skall lagras i en redan full container.
Det är ytterligare ett tekniskt problem att kunna erbjuda en möjlighet att lagra ett element som enligt den matematiska funktionen skall lagras på en redan full sida.
Det är ett tekniskt problem att kunna erbjuda en enkel och effektiv hantering av tillgängligt utrymme på en sida för att lagra containrar som växer eller minskar i storlek beroende på att ytterligare element lagras eller att befintliga element tas bort.
Det är ett tekniskt problem att kunna erbjuda ett effektivt utnyttjande av tillgängligt minne där många containrar inte upptager fullt minnesutrymme.
Det är vidare ett tekniskt problem att kunna erbjuda ett sådant utnyttjande då respektive container ökar eller minskar i storlek med tiden. 10 15 20 25 30 35 5”|Ü 001 _ 5 _ Det är således ett tekniskt problem att kunna erbjuda ett dubbelutnyttjande av ett utrymme som är anpassat för en container med en specifik största tillåtna storlek.
Det är ett tekniskt problem att kunna erbjuda ett format på en container som erbjuder nödvändig information om huruvida samt- liga element som enligt den matematiska funktionen skall befin- na sig inom containern verkligen gör så, och information om var element som eventuellt ej fått plats inom containern befinner sig så att sökandet efter sådana element endast genererar en cache-miss.
Det är ett tekniskt problem att kunna erbjuda sådan information oavsett om det eller de element som ej fick plats befinner sig på samma sida eller på en annan sida.
Det är ytterligare ett tekniskt problem att kunna erbjuda ett format på ett element som erbjuder nödvändig information för att göra elementet tillgängligt för olika sorters låsning i samband med transaktioner som berör elementet.
Det är ett tekniskt problem att kunna erbjuda en möjlighet att inom ett element kunna omfatta dynamiska attribut, såsom olika stora nycklar.
Det är ett tekniskt problem att kunna erbjuda nödvändig infor- mation för att elementet skall kunna deltaga i ett antal olika kopieringsprocesser.
Det är ett tekniskt problem att kunna erbjuda nödvändig infor- mation för att elementet skall kunna deltaga i en delning av ett fragment eller en sammanslagning av flera fragment.
Lšisuirießfl Med utgångspunkt från en enligt ovan angiven metod, och med avsikten att erbjuda en lösning till ett eller flera av de ovan 10 15 20 25 30 35 510 001 _ 7 _ angivna tekniska problemen, anvisar nu föreliggande uppfinning att resultatet från den matematiska funktionen delas upp i åtminstone tre delar, där en första del utgör en direkt eller indirekt referens till ett fragment hörande till databasen, en andra del utgör en direkt eller indirekt referens till en sida inom fragmentet, och en tredje del utgör en direkt eller indirekt referens till en här benämnd hink hörande till sidan.
En sådan hink omfattar åtminstone en container vari elementet är lagringsbart, eller finns lagrat, eller vari en direkt eller indirekt referens till elementet finns lagrad.
Med avsikten att erbjuda en möjlighet att på olika sätt ändra berört fragment, sida, hink eller element utan att därför behöva beräkna ett nytt värde från den matematiska funktionen anvisar föreliggande uppfinning en möjlighet att valfritt nyttja direkta eller indirekta referenser.
Med en direkt referens menas en intern adress som pekar direkt på avsedd position, möjligen via en viss omarbetning av adress- informationen, exempelvis via ytterligare en matematisk funktion, och med en indirekt referens menas en pekare till en tabell, ett register eller liknande, varifrån en aktuell intern adress som pekar direkt på avsedd position är tillgänglig.
Möjligheten att få tillgång till avsett element erbjuds delvis genom; - att den första delen utgör en indirekt referens till samt- liga kopior hörande till fragmentet, vilket gör att samt- liga kopior blir tillgängliga genom referensen, - att den andra delen pekar till ett register, vilket utgöres av en vektor av pekare till olika sidor, och - att den tredje delen pekar till en hink hörande till sidan, via en matematisk funktion. 10 15 20 25 30 35 _ 3 _ En sålunda utpekad hink omfattar en container, samt eventuellt en tillhörande överfyllnads-container.
För att erbjuda en möjlighet att inläsa en hel container till ett cache-minne hörande till en processor verkande inom, eller nyttjande, databasen anvisar föreliggande uppfinning att for- matet för en container skall utformas på ett speciellt sätt.
Respektive container tilldelas en storlek som motsvaras av storleken för ett till containern hörande huvud samt storleken för till containern hörande element.
Storleken varierar med antalet till containern hörande element men storleken för en fullstor container begränsas till att vara högst lika med storleken för vad som vid ett tillfälle kan läsas in till ett cache-minne hörande till en processor verkande inom, eller nyttjande, databasen.
Med avsikten att nyttja det lagringsutrymme som finns till- gängligt på respektive sida pà ett effektivt sätt, som dessutom erbjuder en möjlighet att enkelt finna en eftersökt hink, anvisar föreliggande uppfinning att sidorna delas upp i ett antal buffertar. Respektive buffert delas upp i en första och en andra del av en här benämnd frilist-gräns.
Respektive buffert anpassas att omfatta; - en fullstor container som upptager hela den första och andra delen, eller - en första icke fullstor container med start i den första delen som sträcker sig in i den andra delen, eller - en första icke fullstor container med start i den första delen samt en eventuell andra icke fullstor container med start i den andra delen.
Ett första antal buffertar utgöres av statiska buffertar, och 10 15 20 25 30 35 510 001 _ 9 _ ett andra antal buffertar utgöres av fria buffertar. Den första delen hörande till de statiska buffertarna anpassas till att omfatta en container, och den andra delen hörande till de statiska buffertarna samt båda delarna hörande till de fria buffertarna anpassas till att omfatta en överfyllnadscontainer.
Beroende pá hur väl den matematiska funktionen fungerar sà kommer majoriteten av containrar att vara mindre än fullstora, mànga av dem kommer inte ens att vara halvfulla, vilket medför att dessa endast upptager den ena delen av bufferten.
Detta betyder att många buffertar kommer att kunna erbjuda utrymme till två containrar. I dessa fall anvisar föreliggande uppfinning att en container som placeras inom en första del startar i början av den första delen och, vid införandet av ytterligare element till containern, växer mot mitten av till- hörande buffert, och att en container som placeras inom en andra del startar i slutet av den andra delen och, vid in- förandet av ytterligare element till nämnda container, växer mot mitten av tillhörande buffert.
I de fall som den matematiska funktionen trots allt tilldelar ett element en position inom en redan fullstor container an- visar föreliggande uppfinning att aktuell hink anpassas att omfatta en överfyllnadscontainer, och att det ytterligare elementet tilldelas en position inom överfyllnadscontainern.
Med syftet att ytterligare förenkla och effektivisera hand- havandet av tillgängligt lagringsutrymme inom en sida anvisar föreliggande uppfinning att en frilista anpassas till att om- fatta samtliga lediga andra delar hörande till de statiska buffertarna samt samtliga lediga första och andra delar hörande till de fria buffertarna inom en sida.
En ledig andra del hörande till en buffert tas bort från fri- listan i det fall en icke fullstor container inom motsvarande första del överskrider frilist-gränsen i storlek. 10 15 20 25 30 35 510 001 _]_Q_ En ledig andra del hörande till en buffert läggs till frilistan i det fall en container inom motsvarande första del som tidigare överskridit frilist-gränsen i storlek minskar och inte längre överskrider frilist-gränsen.
Eftersom båda delarna i en buffert för en fullstor container är upptagna anvisar föreliggande uppfinning att en överfyllnads- container tilldelas en position inom en del som är tillgänglig pà frilistan, och att den tillgängliga delen tas bort från frilistan vid tilldelningen.
Föreliggande uppfinning anvisar vidare att en av sidorna hörande till fragmentet utgöres av en överfyllnadssida, vilken endast omfattar fria buffertar. Överfyllnadscontainern till- delas en position inom en del hörande till en buffert på över- fyllnadssidan i det fall som inga delar finns tillgängliga på frilistan inom den egna sidan.
Huvudet hörande till en container omfattar fyra informations- bärande fält.
Ett första informationsbärande fält omfattar information rörande storleken för containern.
I det fall en hink endast omfattar en container; - indikerar det andra informationsbärande fältet att en eventuell överfyllnadscontainer finns på samma sida, - indikerar det tredje informationsbärande fältet att det inte finns någon överfyllnadscontainer, - nyttjas ej det fjärde informationsbärande fältet.
I det fall en hink omfattar en container och en överfyllnads- container på samma sida; 10 15 20 25 30 35 51Û 001 _ 11 _ - indikerar det andra informationsbärande fältet att en eventuell överfyllnadscontainer finns på samma sida, - indikerar det tredje informationsbärande fältet att det finns en överfyllnadscontainer, - pekar det fjärde informationsbärande fältet på överfyll- nadscontainern.
I det fall en hink omfattar en överfyllnadscontainer på överfyllnadssidan; \ - indikerar det andra informationsbärande fältet att en överfyllnadscontainer finns på överfyllnadssidan, - omfattar det tredje informationsbärande fältet en pekare till överfyllnadssidan, - omfattar det fjärde informationsbärande fältet en pekare som pekar pá överfyllnadscontainern.
Storleken för respektive fält anpassas till respektive situa- tion.
Med avsikten att erbjuda ett maximalt utnyttjande av utrymmet inom en container anvisar föreliggande uppfinning att de till en container hörande elementen är tilldelade positioner direkt efter huvudet och efter varandra inom containern.
Vidare anvisas att hela den container som utpekas genom den matematiska funktionen läses in till ett cache-minne hörande till den processor som efterfrågar ett element.
I det fall elementet ej befinner sig i den inlästa containern, så läses hela överfyllnadscontainer in till cache-minnet.
För att erbjuda en möjlig hantering av ett element vid kopi- 10 15 20 25 30 35 5'iO G01 _ 12 _ ering, förflyttning, sammanslagning eller delning av fragment anvisar föreliggande uppfinning att respektive element skall tilldelas ett speciellt format.
Enligt detta format skall ett element omfatta ett elementhuvud med fem grupper av information.
I det fall som ett element är tillgängligt för transaktioner omfattar; - en första grupp en del av resultatet från den matematiska funktionen, - en andra grupp statusbitar för elementet, - en tredje grupp information om att elementet ej är låst, - en fjärde grupp information om längden för en till elementet hörande lokal nyckel, och - en femte grupp information om längden för en till elementet hörande element-nyckel.
I det fall elementet är låst för transaktioner på grund av en pågående transaktion som påverkar element omfattar; - den första och andra gruppen gemensamt en pekare till ett transaktionsregister hörande till transaktionen, - den tredje gruppen information om att elementet är låst, - den fjärde gruppen information om längden för den lokala nyckeln, och - den femte gruppen information om längden för element- nyckeln. 10 15 20 25 30 35 510 001 _ 13 _ Ett transaktionsregister hörande till den transaktionen som berör elementet omfattar delen av resultatet från funktionen, statusbitarna, samt vilken typ av lás som är applicerat på elementet.
Elementet omfattar dessutom en lokal nyckel, samt en element- nyckel.
Elementhuvudet utgöres av fyra bytes, där den första gruppen utgöres av 19 bitar, den andra gruppen utgöres av fyra bitar, den tredje gruppen utgöres av 1 bit, den fjärde gruppen utgöres av fyra bitar och den femte gruppen utgöras av fyra bitar.
Statusbitarna nyttjas vid kopieringsprocesser av elementet, såsom vid en kopiering av fragmentet. Respektive bit indikerar huruvida elementet är kopierat eller ej kopierat. Således kan ett flertal, i detta exempel upp till fyra stycken, samtidiga kopieringsprocesser nyttja var sin statusbit.
Delen av resultatet från den matematiska funktionen nyttjas vid delningsprocesser och sammanslagningsprocesser av fragmentet. u De fördelar som främst kan få anses vara kännetecknande för en metod enligt föreliggande uppfinning är att härigenom erbjuds en möjlighet att finna ett eftersökt element på endast en, eller i de fall eftersökt element är positionerat inom en överfyllnadscontainer, tvà accesser av ett minne. Genom hash- funktionen pekas korrekt container ut.
Storleken av containern är anpassad så att hela containern kan läsas till cache-minnet medelst en access av minnet. När rätt container finns i cache-minnet är det med dagens processorer en snabb operation att finna korrekt element bland de seriellt lagrade elementen inom containern. 10 15 20 25 30 35 510 001 Det som främst kan få anses vara kännetecknande för en metod, i enlighet med föreliggande uppfinning, anges i det efterföljande patentkravets l kännetecknande del.
En metod, uppvisande de med föreliggande uppfinning förknippade egenheternaf skall i exemplifierande syfte nu närmare beskrivas med hänvisning till bifogad ritning, där; figur 1 figur 2 figur 3 figur 4 figur 5 figur 6 N visar schematiskt nyttjandet av en mate- matisk funktion vid överförandet av en extern nyckel till en intern nyckel, visar schematiskt uppdelningen av resultatet från den matematiska funktionen i indirekta referenser till en position för ett element, visar schematiskt en hinks uppbyggnad, visar schematiskt uppdelningen av sidorna hörande till ett fragment, visar schematiskt ett elements uppbyggnad i ett första fall och visar schematiskt ett elements uppbyggnad i ett andra fall.
Med hänvisning till figur 1 visas således, att en extern nyckel, såsom ett telefonnummer T, hörande till ett element E, 10 15 20 25 30 35 510 001 _15.. används som indata till en matematisk funktion f(x).
Resultatet y från funktionen f(x) pekar ut en för en databas D intern position för elementet E. Resultatet y delas upp i åtminstone tre delar A, B, C.
Figur 2 avser att visa att en första del A utgör en indirekt referens Al till ett fragment A4 hörande till databasen D.
Denna referens Al pekar ut en position i en tabell A2 över olika fragment där information A3 är tillgänglig om var samt- liga kopior hörande till fragmentet A4 finns lagrade.
En andra del B utgör en indirekt referens Bl till en sida B4 inom fragmentet A4. Denna referens Bl utgöres av en pekare till ett register B2, vilket utgöres av en vektor av pekare B3 till olika sidor, varav en är sidan B4.
En tredje del C utgör en direkt referens Cl till en här benämnd hink C2 hörande till sidan B4.
På detta sätt erbjuder värdet y från den matematiska funktionen f(x) en direkt adress till en specifik hink C2.
Enligt figur 3 omfattar respektive hink C2 en container C5, samt eventuellt en till hinken C4 hörande överfyllnads-con- tainer C6.
Figur 3 visar även att respektive container C6 tilldelas en storlek som motsvaras av storleken för ett till containern C6 hörande huvud CH samt storleken för till containern hörande element El, E2, E3, _.. .
Storleken kan variera med antalet element, men storleken för en fullstor container begränsas till att vara högst lika med storleken för vad som vid ett tillfälle kan läsas in till ett cache-minne hörande till en processor verkande inom, eller nyttjande, databasen. 10 15 20 25 30 35 510 001 _16- Dagens processorer kan vanligtvis läsa in 128 bytes i taget till cache-minnet och följande beskrivning utgår från detta värde. Det skall dock förstås att storleken för en container enligt föreliggande uppfinning, samt andra dimensioneringar i den följande beskrivningen, skall, för att erhålla önskad effekt, anpassas till hur mycket som kan läsas in åt gången till cache-minnet hos aktuella processorer.
Ytterligare en parameter som det kan bli aktuellt att taga hän- syn till i framtida tillämpningar av föreliggande uppfinning är den tid det tar att processa innehållet av inläst information till cacheïminnet. I det fall som processtiden överskrider tiden för en cache-miss är det lämpligt att begränsa storleken för en container, samt andra dimensioneringar, till att processandet av en container skall understiga tidsåtgången för en cache-miss oavsett hur mycket som kan läsas till cache- minnet åt gången.
Enligt figur 4 delas en sida B4 upp i ett antal buffertar B41, B42, B43, ..., B4A och en andra B4B del av en här benämnd frilist-gräns B4C, B466. Respektive buffert delas upp i en första och respektive buffert anpassas att omfatta; - en fullstor container C51 som upptager hela den första B4A och den andra B4B delen, eller - en första icke fullstor container C52 med start i den för- sta delen 84A som sträcker sig in i den andra delen B48, eller - en första icke fullstor container C53 med start i den för- sta delen B4A samt en eventuell andra icke fullstor container C61 med start i den andra delen B4B.
Ett första antal buffertar utgöres av statiska buffertar B48, och ett andra antal buffertar utgöres av fria buffertar B4F. 10 15 20 25 30 35 510 001 _ 17 _ I exemplet enligt figur 4 visas en sida som omfattar 8 kBytes (8192 bytes). På denna sida finns ett huvud C3 som upptager 8 bytes, samt 64 statiska buffertar B4S och 2 fria buffertar B4F om 124 bytes vardera.
Denna struktur medför att den adressering av en specifik hink, och därmed en specifik buffert, som den tredje delen C av resultatet y från den matematiska funktionen f(x) utgör, kan erhållas genom att anpassa denna del av resultatet till att utgöra ett slumpmässigt tal "a" mellan l (ett) och 64 (sextio- fyra), vilket är antalet buffertar. Detta tal "a" multipliceras med 124 (antalet bytes per buffert) och resultatet adderas sedan till 8 (åtta), vilket är antalet bytes i sidohuvudet C3.
Man kan således säga att den tredje delen C av den matematiska funktionen f(x) utgör en adress som pekar direkt på avsedd position, dock via en ytterligare matematisk funktion, vilken funktion i detta exempel är: "a"*l24+8.
På detta sätt pekas enligt den matematiska funktionen f(x) en slumpmässig buffert ut och således även den hink som befinner sig inom denna buffert.
Första delen B4A hörande till de statiska buffertarna B48 an- passas till att omfatta en container C5, och andra delen B4B hörande till de statiska buffertarna B48 samt båda delarna B4A, B4B hörande till de fria buffertarna B4F anpassas till att omfatta en överfyllnadscontainer C6.
En container C5 som placeras inom en första del B4A startar i början av den första delen B4A och, vid införandet av ytter- ligare element E till containern C5, växer mot mitten av tillhörande buffert.
En container C6 som placeras inom en andra del B4B startar i slutet av den andra delen B4B och, vid införandet av ytter- ligare element E till containern C6, växer mot mitten av 10 15 20 25 30 35 510 001 tillhörande buffert.
Pà så sätt kan två containrar samsas om en gemensam buffert, trots att en buffert egentligen är anpassad att hålla endast en fullstor container.
Vid en väl fungerande matematisk funktion f(x) kommer befint- liga element E att fördelas slumpmässigt och jämt till befint- liga containrar C5, vilket medför att de flesta containrarna C5 kommer att underskrida fullstor storlek. Många kommer även att underskrida frilistgränsen B4C, vilket medför att ett flertal andra delar B4B kommer att vara tillgängliga för eventuella överfyllnadscontainrar C6.
Enligt en föredragen utföringsform av föreliggande uppfinning anvisas att kontrollen över hur utrymmet inom en buffert skall fördelas mellan tvà containrar som delar på en gemensam buffert lämnas till dessa två containrar, oavsett om frilistgränsen överskrids av den ena containern eller ej. Således kan en mycket liten överfyllnadscontainer C6 tillåta att en container C5 växer till att överskrida frilistgränsen, under förutsätt- ning att tillräckligt utrymme finns tillgängligt inom bufferten för de båda containrarna.
En aktuell hink C2 anpassas att omfatta en överfyllnadscon- tainer C6 i det fall som en till hinken hörande fullstor con- tainer C5 tilldelas ytterligare element E, där detta ytterli- gare element tilldelas en position inom överfyllnadscontainern C6.
En frilista anpassas till att omfatta samtliga lediga andra delar B48 hörande till de statiska buffertarna B4S samt samt- liga lediga första B4A och andra B4B delar hörande till de fria buffertarna B4F inom en sida B4. Huvudet C3 för en sida B4 omfattar bland annat en pekare till denna frilista.
Frilistan realiseras exempelvis genom att samtliga lediga delar 10 15 20 25 30 35 510 ÛÛ1 _ 19 _ ingår i en länkad lista av lediga delar, där respektive lediga del omfattar en pekare till nästa lediga del i den länkade listan. Pekaren i huvudet pekar på den första lediga delen.
En ledig andra del B4B' hörande till en buffert B44 tas bort från frilistan i det fall en icke fullstor container C54 inom motsvarande första del överskrider frilist-gränsen B4C i storlek.
Vidare läggs en ledig andra del B4B" hörande till en buffert B45 till frilistan i det fall en container C55 inom motsvarande första del som tidigare överskridit frilist-gränsen B4C i storlek minskar och inte längre överskrider frilist-gränsen.
Det är även möjligt att föra in en viss hysteres i när en andra del tas bort från, respektive läggs till, frilistan i samband med att en container inom den första delen ökar eller minskar i storlek.
Exempelvis kan en andra del tas bort från frilistan först efter att en container inom den första delen överskridit frilistgränsen med ett förbestämt värde.
På samma sätt kan en andra del läggas till frilistan i samband med att en container minskar i storlek först när containern minskat och underskrider frilistgränsen med en förutbestämd marginal.
En sådan hysteres gör att eventuella oscillationseffekter i samband med att en container av någon anledning ökar och minskar periodiskt i storlek just kring frilistgränsen kan förhindras.
En överfyllnadscontainer C61 tilldelas en position inom en del B4B"' som är tillgänglig på frilistan, och den tidigare till- gängliga delen B4B"' tas bort från frilista vid tilldelningen. 10 15 20 25 30 35 _20- För att gardera sig för den situationen att inga delar finns tillgängliga på frilistan anvisar föreliggande uppfinning att en av sidorna hörande till fragmentet A4 utgöres av en över- fyllnadssida 85. Denna överfyllnadssida BS omfattar endast fria buffertar BSF. En överfyllnadscontainer C62 tilldelas en position inom en del hörande till en buffert B53 på överfyll- nadssidan B5 i det fall som inga delar finns tillgängliga på frilistan.
Huvudet CH hörande till en container C5 omfattar, enligt figur 3, fyra informationsbärande fält CH1, CH2, CH3, CH4, där det första informationsbärande fältet CHl omfattar information rörande storleken för aktuell container.
I det fall en hink C2 endast omfattar en container; - indikerar det andra informationsbärande fältet CH2 att en eventuell överfyllnadscontainer C6 finns pà samma sida B4, - indikerar det tredje informationsbärande fältet CH3 att det inte finns någon överfyllnadscontainer C6, - nyttjas ej det fjärde informationsbärande CH4 fältet.
I det fall en hink C2 omfattar en container C5 samt en överfyllnadscontainer C6 på samma sida B4; - indikerar det andra informationsbärande fältet CH2 att en eventuell överfyllnadscontainer C6 finns på samma sida B4, - indikerar det tredje informationsbärande fältet CH3 att det finns en överfyllnadscontainer C6, - pekar det fjärde informationsbärande fältet CH4 pá över- fyllnadscontainern C6.
I det fall en hink C5 omfattar en överfyllnadscontainer C6 på 10 15 20 25 30 35 51Û ÛÜ1 _ 21 _ överfyllnadssidan B5; - indikerar det andra informationsbärande fältet CH2 att en överfyllnadscontainer C6 finns pá överfyllnadssidan B5, - omfattar det tredje informationsbärande fältet CH3 en pekare till överfyllnadssidan BS, - omfattar det fjärde informationsbärande fältet CH4 en pekare som pekar på överfyllnadscontainern C6.
Storleken för respektive fält CH1, CH2, CH3, CH4 anpassas till respektive situation.
Pekaren i det fjärde informationsbärande fältet utgöres, liksom den tredje delen av resultatet från funktionen, av ett tal mellan 1 och 64, vilket är antalet buffertar, multiplicerat med 124, vilket är antalet bytes för respektive buffert, och adderat med 8, vilket är antalet bytes i sidohuvudet. I detta fall sker detta dock ej slumpmässigt utan enligt vilka buf- fertar som finns tillgängliga på frilistan. sa, ..Å :iii- delade positioner direkt efter huvudet CH och efter varandra.
Inom en container är respektive element El, E2, Teoretiskt sett kan även en överfyllnadscontainer C6 uppnå fullstor storlek och därmed i sin tur behöva referera till ytterligare en överfyllnadscontainer C6'. Av denna anledning omfattar samtliga containrar, även överfyllnadscontainrar, ett huvud enligt ovan. Om en hink C2 skulle behöva omfatta tvâ, eller fler, överfyllnadscontainrar, vilket i praktiken är högst osannolikt, skulle detta i sin tur medföra lika många cache- missar vid ett sökande efter ett element El' i den sista överfyllnadscontainern C6'.
Då en processor söker ett element E läses hela den container C5 som utpekas genom den matematiska funktionen f(x) in till ett 10 15 20 25 30 35 SíÜ 091 _ 22 _ cache-minne hörande till processorn.
I det fall elementet E ej befinner sig i den inlästa containern C5, läsas hela överfyllnadscontainern C6 in till cache-minnet. Även ett element E omfattar ett huvud, ett elementhuvud EH med fem grupper av information. Elementhuvudet är enligt uppfin- ningen anpassat att kunna beskriva ett element E i tvá olika fall.
Figur 5 avser att visa ett elements E uppbyggnad i det fall som elementet är tillgängligt för transaktioner. Här visas att en frán funk- tionen f(x), att en andra grupp G2 omfattar statusbitar ES för första grupp Gl omfattar en del av resultatet y' elementet E, att en tredje grupp G3 omfattar information om att elementet ej är låst LS (Lock Status), att en fjärde grupp G4 omfattar information om längden för en till elementet hörande lokal nyckel, och att en femte grupp G5 omfattar information om längden för en till elementet hörande element-nyckel.
Ett element E omfattar dessutom en lokal nyckel G6, samt en element-nyckel G7.
Figur 6 avser att visa ett elements E' uppbyggnad i det fall som elementet är låst för transaktioner på grund av en pågående transaktion som påverkar elementet E'.
Här visas att den första och andra gruppen Gl', G2' gemensamt omfattar en pekare G12 till ett transaktionsregister TR hörande till transaktionen, att transaktionsregistret TR omfattar delen av resultatet y' från funktionen f(x), statusbitarna ES, samt vilken typ av lås som är applicerat på elementet LM (Lock Mode), och att den tredje gruppen G3' omfattar information om att elementet är låst LS.
Den fjärde gruppen G4' omfattar även i detta fall information om längden för den lokal nyckeln G6', och den femte gruppen G5' 10 15 20 25 30 35 510 001 _ 23 _ omfattar information om längden för element-nyckeln G7'.
Elementhuvudet EH utgöres av fyra bytes, där den första gruppen Gl utgöres av 19 bitar, den andra gruppen G2 utgöres av fyra bitar, den tredje gruppen G3 utgöres av 1 bit, den fjärde gruppen G4 utgöres av fyra bitar och den femte gruppen G5 utgöras av fyra bitar.
Syftet med statusbitarna ES är att dessa skall kunna nyttjas vid kopieringsprocesser av elementet E, såsom vid en kopiering av ett fragment A4, där respektive bit indikerar huruvida ele- mentet E ärxkopierat eller ej kopierat. På detta sätt erbjuds ett flertal, i det visade exemplet upp till fyra stycken, sam- tidiga kopieringsprocesser möjligheten att nyttja var sin statusbit.
Syftet med delen av resultatet y' från den matematiska funk- tionen f(x) är att denna skall kunna nyttjas vid delnings- processer och sammanslagningsprocesser av ett fragment.
En typ av matematisk funktion f(x) som på ovanstående sätt för- delar element slumpmässigt och jämt i en databas är en så kallad hash-funktion, vilken lämpligen används i föreliggande uppfinning.
Den här beskrivna utföringsformen har i förenklande syfte begränsats till att visa hur nycklar med en storlek på upp till 120 bytes kan hanteras. Det är dock för en fackman uppenbart vilka anpassningar som krävs för att föreliggande uppfinning skall kunna nyttjas även för större nycklar.
Uppfinningen är givetvis inte begränsad till den ovan såsom exempel angivna utföringsformen utan kan genomgå modifikationer inom ramen för uppfinningstanken illustrerad i efterföljande patentkrav.

Claims (27)

10 15 20 25 30 35 510 001 _ 24 _ EBIEHIKBBI
1. Metod för att lagra element i en databas, samt för att finna sålunda lagrade element, där en referens till lagrings- utrymmet för ett element avsett för lagring inom nämnda databas beräknas medelst en matematisk funktion, där indata till nämnda funktion utgöres av en extern nyckel hörande till nämnda element, där resultatet från nämnda funktion pekar ut en för nämnda databas intern position för nämnda element, och där nämnda resultat delas upp i olika delar, k ä n n e - t e c k n_a d därav, nämnda resultat delas upp i åtminstone tre delar, att en första del utgör en direkt eller indirekt referens till ett fragment hörande till nämnda databas, att en andra del utgör en direkt eller indirekt referens till en sida inom nämnda fragment, att en tredje del utgör en direkt eller indirekt referens till en här benämnd hink hörande till nämnda sida, och att nämnda hink omfattar åtminstone en container vari nämnda element är lagringsbart, eller finns lagrat, eller vari en direkt eller indirekt referens till nämnda element finns lagrad.
2. Metod enligt patentkravet 1, k ä n n e t e c k n a d därav, att en direkt referens utgöres av en intern adress som pekar direkt på avsedd position, eller via en matematisk funk- tion, och att en indirekt referens utgör en pekare till en tabell varifrån en aktuell intern adress som pekar direkt pà avsedd position är tillgänglig.
3. Metod enligt patentkravet 1, k ä n n e t e c k n a d därav, att nämnda första del utgör en indirekt referens till samtliga kopior hörande till nämnda fragment.
4. Metod enligt patentkravet l, k ä n n e t e c k n a d därav, att nämnda andra del pekar till ett register, och att nämnda register utgöres av en vektor av pekare till olika sidor. 10 15 20 25 30 35 510 ÛÜï _25..
5. Metod enligt patentkravet 1, k ä n n e t e c k n a d därav, att nämnda tredje del pekar till aktuell hink hörande till nämnda sida, och att nämnda utpekning sker via en mate- matisk funktion.
6. Metod enligt patentkravet 1, k ä n n e t e c k n a d därav, att respektive hink omfattar en container, samt eventu- ellt en till nämnda hink hörande överfyllnads-container.
7. Metod enligt patentkravet 1, k ä n n e t e c k n a d därav, att respektive container tilldelas en storlek som mot- svaras av storleken för ett till nämnda container hörande huvud samt storleken för till nämnda container hörande element, att storleken varierar med antalet till nämnda container hörande element, och att storleken för en fullstor container begränsas till att vara högst lika med storleken för vad som kan läsas in åt gängen till ett cache-minne hörande till en processor verkande inom, eller nyttjande, nämnda databas.
8. Metod enligt patentkravet 7, k ä n n e t e c k n a d att, i det fall som tiden för att processa den mängd information som kan läsas in åt gången till ett cache-minne därav, överskrider tiden för en cache-miss, en fullstor container begränsas i storlek till att processandet av en fullstor container skall understiga tidsåtgången för en cache-miss oavsett hur mycket som kan läsas till cache-minnet åt gången.
9. Metod enligt patentkraven 6, 7 eller 8, k ä n n e - t e c k n a d därav, att nämnda sida delas upp i ett antal buffertar, att respektive buffert delas upp i en första och en andra del av en här benämnd frilist-gräns, att respektive buf- fert anpassas att omfatta en fullstor container som upptager hela nämnda första och nämnda andra del eller en första icke fullstor container med start i nämnda första del som sträcker sig in i nämnda andra del, eller en första icke fullstor con- tainer med start i nämnda första del som inte sträcker sig in i nämnda andra del samt en eventuell andra icke fullstor con- 10 15 20 25 30 35 5'íÛ 081 _ 26 _ tainer med start i nämnda andra del.
10. Metod enligt patentkravet 9, k ä n n e t e c k n a d därav, att kontrollen över hur ett minnesutrymme inom en buf- fert skall fördelas mellan två containrar som delar pà en gemensam buffert överlåts till nämnda två containrar, oavsett om frilistgränsen överskrids av den ena eller andra containern.
11. Metod enligt patentkravet 9, k ä n n e t e c k n a d därav, att ett första antal buffertar utgöres av statiska buf- fertar, att ett andra antal buffertar utgöres av fria buffer- tar, att första delen hörande till nämnda statiska buffertar anpassas till att omfatta en container, och att andra delen hörande till nämnda statiska buffertar samt båda delarna höran- de till nämnda fria buffertar anpassas till att omfatta en överfyllnadscontainer.
12. Metod enligt patentkravet ll, k ä n n e t e c k n a d därav, att en container som placeras inom en första del startar i början av nämnda första del och, vid införandet av ytter- ligare element till nämnda container, växer mot mitten av tillhörande buffert, och att en container som placeras inom en andra del startar i slutet av nämnda andra del och, vid in- förandet av ytterligare element till nämnda container, växer mot mitten av tillhörande buffert.
13. Metod enligt patentkravet 11, k ä n n e t e c k n a d därav, att aktuell hink anpassas att omfatta en överfyllnads- container i det fall som en till nämnda hink hörande fullstor container tilldelas ytterligare element, och att nämnda ytter- ligare element tilldelas en position inom nämnda överfyllnads- container.
14. Metod enligt patentkravet ll, k ä n n e t e c k n a d därav, att en frilista anpassa till att omfatta samtliga lediga andra delar hörande till nämnda statiska buffertar samt samtliga lediga första och andra delar hörande till nämnda fria 10 15 20 25 30 35 510 001 _27- buffertar inom nämnda sida.
15. Metod enligt patentkravet 14, k ä n n e t e c k n a d därav, att en ledig andra del hörande till en buffert tas bort fràn nämnda frilista i det fall en icke fullstor container inom motsvarande första del överskrider nämnda frilist-gräns i storlek.
16. Metod enligt patentkravet 14, k ä n n e t e c k n a d därav, att en ledig andra del hörande till en buffert läggs till nämnda frilista i det fall en container inom motsvarande första del som tidigare överskridit nämnda frilist-gräns i storlek minskar och inte längre överskrider nämnda frilist- gräns.
17. Metod enligt patentkraven 15 och 16, k ä n n e t e c k - n a d därav, att en hysteres införes för när en ledig andra del skall tas bort från, eller läggas till, nämnda frilista i samband med att en container inom den första delen ökar eller minskar i storlek, att nämnda hysteres medför att en andra del tas bort från nämnda frilista efter att en container inom nämn- da första del överskridit frilistgränsen med ett förbestämt värde, och att en andra del läggs till nämnda frilista efter att en container inom nämnda första del minskat och under- skrider frilistgränsen med ett förbestämd värde.
18. Metod enligt patentkraven 13 och 15, k ä n n e t e c k - n a d därav, att nämnda överfyllnadscontainer tilldelas en position inom en del som är tillgänglig på nämnda frilista, och att nämnda tillgängliga del tas bort från nämnda frilista vid nämnda tilldelning.
19. Metod enligt patentkraven 13 och 15, k ä n n e t e c k - n a d därav, att en av sidorna hörande till nämnda fragment utgöres av en överfyllnadssida, att nämnda överfyllnadssida endast omfattar fria buffertar, och att nämnda överfyllnads- container tilldelas en position inom en del hörande till en 10 15 20 25 30 35 510 081 _28- buffert på nämnda överfyllnadssida i det fall som inga delar finns tillgängliga på nämnda frilista.
20. Metod enligt patentkraven 18 och 19, k ä n n e t e c k - n a d därav, att nämnda huvud omfattar fyra informationsbä- rande fält, att ett första informationsbärande fält omfattar information rörande storleken för nämnda container, att, i det fall nämnda hink endast omfattar en container; - nämnda andra informationsbärande fält indikerar att en eventuell överfyllnadscontainer finns pà samma sida, - nämnda tredje informationsbärande fält indikerar att det inte finns någon överfyllnadscontainer, - nämnda fjärde informationsbärande fält ej nyttjas, att, i det fall nämnda hink omfattar en container samt en överfyllnadscontainer på samma sida; - nämnda andra informationsbärande fält indikerar att en eventuell överfyllnadscontainer finns på samma sida, - nämnda tredje informationsbärande fält indikerar att det finns en överfyllnadscontainer, - nämnda fjärde informationsbärande fält pekar på nämnda överfyllnadscontainer, att, i det fall nämnda hink omfattar en överfyllnadscontainer på nämnda överfyllnadssida; - nämnda andra informationsbärande fält indikerar att en överfyllnadscontainer finns på nämnda överfyllnadssida, - nämnda tredje informationsbärande fält omfattar en pekare till nämnda överfyllnadssida, 10 15 20 25 30 35 510 001 _ 29 _ - nämnda fjärde informationsbärande fält omfattar en pekare som pekar på nämnda överfyllnadscontainer, att storleken för respektive fält anpassas till respektive situation, och att till nämnda container hörande element är tilldelade positioner direkt efter nämnda huvud och efter var- andra inom nämnda container.
21. Metod enligt patentkravet 6, k ä n n e t e c k n a d därav, att hela den container som utpekas genom nämnda matema- tiska funktion läses in till ett cache-minne hörande till en processor då nämnda processor efterfrågar ett element.
22. Metod enligt patentkraven 20 och 21, k ä n n e t e c k - n a d därav, att, i det fall nämnda element ej befinner sig i nämnda inlästa container, hela nämnda överfyllnadscontainer läsas in till nämnda cache-minne.
23. Metod enligt patentkravet l, k ä n n e t e c k n a d därav, att nämnda element omfattar ett elementhuvud med fem grupper av information, att, i det fall nämnda element är tillgängligt för transaktioner, en första grupp omfattar en del av resultatet från nämnda funktion, att en andra grupp omfattar statusbitar för nämnda element, att en tredje grupp omfattar information om att nämnda element ej är låst, att en fjärde grupp omfattar information om längden för en till nämnda element hörande lokal nyckel, att en femte grupp omfattar information om längden för en till nämnda element hörande ele- ment-nyckel, och att nämnda element dessutom omfattar nämnda lokala nyckel, samt nämnda element-nyckel.
24. Metod enligt patentkravet 23, k ä n n e t e c k n a d därav, att, i det fall nämnda element är låst för transaktioner på grund av en pågående transaktion som påverkar nämnda element, nämnda första och andra grupp gemensamt omfattar en pekare till ett transaktionsregister hörande till nämnda trans- aktion, att nämnda transaktionsregister omfattar nämnda del av 10 15 20 25 510 001 _ 30 _ resultatet frán nämnda funktion, nämnda statusbitar, samt vilken typ av lås som är applicerat på nämnda element, att nämnda tredje grupp omfattar information om att nämnda element är låst, längden för nämnda lokala nyckel, och att nämnda femte grupp omfattar information om längden för nämnda element-nyckel. att nämnda fjärde grupp omfattar information om
25. Metod enligt patentkravet 24, k ä n n e t e c k n a d därav, att nämnda elementhuvud utgöres av fyra bytes, att näm- nda första grupp utgöres av 19 bitar, att nämnda andra grupp utgöres av fyra bitar, att nämnda tredje grupp utgöres av 1 bit, att nämnda fjärde grupp utgöres av fyra bitar och att nämnda femte grupp utgöras av fyra bitar.
26. Metod enligt patentkravet 23, k ä n n e t e c k n a d därav, att nämnda statusbitar nyttjas vid kopieringsprocesser av nämnda element, sàsom vid en kopiering av nämnda fragment, att respektive bit indikerar huruvida nämnda element är kopi- erat eller ej kopierat, och att ett flertal samtidiga kopi- eringsprocesser nyttjar var sin statusbit.
27. Metod enligt patentkravet 23, k ä n n e t e c k n a d därav, att nämnda del av resultatet från nämnda matematiska funktion nyttjas vid delningsprocesser och sammanslagninga- processer av nämnda fragment.
SE9702760A 1997-07-21 1997-07-21 Metod för att lagra element i en databas SE510001C2 (sv)

Priority Applications (10)

Application Number Priority Date Filing Date Title
SE9702760A SE510001C2 (sv) 1997-07-21 1997-07-21 Metod för att lagra element i en databas
JP2000504498A JP2001511553A (ja) 1997-07-21 1998-07-07 エレメントをデータベースに格納する方法
PCT/SE1998/001332 WO1999005586A2 (en) 1997-07-21 1998-07-07 A method of storing elements in a database
DE69826283T DE69826283D1 (de) 1997-07-21 1998-07-07 Verfahren zum bewahren von elementen in einer datenbank
BR9810767-4A BR9810767A (pt) 1997-07-21 1998-07-07 Processo para armazenar elementos em uma base de dados e pesquisar tais elementos armazenados
AU83650/98A AU8365098A (en) 1997-07-21 1998-07-07 A method of storing elements in a database
CN98809340A CN1111815C (zh) 1997-07-21 1998-07-07 在数据库中存储元素和寻找这样存储的元素的方法
EP98934046A EP0996881B1 (en) 1997-07-21 1998-07-07 A method of storing elements in a database
KR10-2000-7000595A KR100529995B1 (ko) 1997-07-21 1998-07-07 데이터베이스에 엘리먼트를 저장하는 방법
US09/115,948 US6308169B1 (en) 1997-07-21 1998-07-15 Method of storing elements in a database

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE9702760A SE510001C2 (sv) 1997-07-21 1997-07-21 Metod för att lagra element i en databas

Publications (3)

Publication Number Publication Date
SE9702760D0 SE9702760D0 (sv) 1997-07-21
SE9702760L SE9702760L (sv) 1999-01-22
SE510001C2 true SE510001C2 (sv) 1999-03-29

Family

ID=20407791

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9702760A SE510001C2 (sv) 1997-07-21 1997-07-21 Metod för att lagra element i en databas

Country Status (10)

Country Link
US (1) US6308169B1 (sv)
EP (1) EP0996881B1 (sv)
JP (1) JP2001511553A (sv)
KR (1) KR100529995B1 (sv)
CN (1) CN1111815C (sv)
AU (1) AU8365098A (sv)
BR (1) BR9810767A (sv)
DE (1) DE69826283D1 (sv)
SE (1) SE510001C2 (sv)
WO (1) WO1999005586A2 (sv)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7389305B1 (en) * 1999-06-01 2008-06-17 Fair Isaac Corporation System and method for managing a database
KR100744378B1 (ko) * 2001-08-17 2007-07-30 삼성전자주식회사 해시함수를 이용한 데이터베이스 검색방법
US7058642B2 (en) * 2002-03-20 2006-06-06 Intel Corporation Method and data structure for a low memory overhead database
CA2384185A1 (en) * 2002-04-29 2003-10-29 Ibm Canada Limited-Ibm Canada Limitee Resizable cache sensitive hash table
US7010521B2 (en) * 2002-05-13 2006-03-07 Netezza Corporation Optimized database appliance
EP1546822A4 (en) * 2002-09-18 2008-07-02 Netezza Corp ASYMMETRIC DATA STREAMING ARCHITECTURE WITH AN AUTONOMOUS AND ASYNCHRONOUS JOB PROCESSING UNIT
US7421562B2 (en) * 2004-03-01 2008-09-02 Sybase, Inc. Database system providing methodology for extended memory support
US11321408B2 (en) 2004-12-15 2022-05-03 Applied Invention, Llc Data store with lock-free stateless paging capacity
US8275804B2 (en) * 2004-12-15 2012-09-25 Applied Minds, Llc Distributed data store with a designated master to ensure consistency
US7774308B2 (en) * 2004-12-15 2010-08-10 Applied Minds, Inc. Anti-item for deletion of content in a distributed datastore
US8996486B2 (en) * 2004-12-15 2015-03-31 Applied Invention, Llc Data store with lock-free stateless paging capability
US20070022120A1 (en) * 2005-07-25 2007-01-25 Microsoft Corporation Caching and modifying portions of a multi-dimensional database on a user device
US7975109B2 (en) 2007-05-30 2011-07-05 Schooner Information Technology, Inc. System including a fine-grained memory and a less-fine-grained memory
US8732386B2 (en) * 2008-03-20 2014-05-20 Sandisk Enterprise IP LLC. Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory
US8229945B2 (en) 2008-03-20 2012-07-24 Schooner Information Technology, Inc. Scalable database management software on a cluster of nodes using a shared-distributed flash memory
US8527703B1 (en) * 2009-06-19 2013-09-03 Emc Corporation Cache management system and method
US8677055B2 (en) 2010-04-12 2014-03-18 Sandisk Enterprises IP LLC Flexible way of specifying storage attributes in a flash memory-based object store
US9164554B2 (en) 2010-04-12 2015-10-20 Sandisk Enterprise Ip Llc Non-volatile solid-state storage system supporting high bandwidth and random access
US8856593B2 (en) 2010-04-12 2014-10-07 Sandisk Enterprise Ip Llc Failure recovery using consensus replication in a distributed flash memory system
US8868487B2 (en) 2010-04-12 2014-10-21 Sandisk Enterprise Ip Llc Event processing in a flash memory-based object store
US9047351B2 (en) 2010-04-12 2015-06-02 Sandisk Enterprise Ip Llc Cluster of processing nodes with distributed global flash memory using commodity server technology
US8954385B2 (en) 2010-06-28 2015-02-10 Sandisk Enterprise Ip Llc Efficient recovery of transactional data stores
US10558705B2 (en) 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
US8694733B2 (en) 2011-01-03 2014-04-08 Sandisk Enterprise Ip Llc Slave consistency in a synchronous replication environment
US8874515B2 (en) 2011-04-11 2014-10-28 Sandisk Enterprise Ip Llc Low level object version tracking using non-volatile memory write generations
US9135064B2 (en) 2012-03-07 2015-09-15 Sandisk Enterprise Ip Llc Fine grained adaptive throttling of background processes
KR102171430B1 (ko) * 2019-02-26 2020-10-29 주식회사 퍼즐시스템즈 데이터베이스에서 조회된 대용량 데이터를 컬럼 별 바이너리 파일로 저장하는 시스템
KR102177792B1 (ko) * 2019-02-26 2020-11-11 주식회사 퍼즐시스템즈 컬럼 별 바이너리 파일 저장 구조를 이용하여 대용량 데이터를 메모리 용량 제약없이 차트로 표시하는 시스템
US20230135583A1 (en) * 2021-11-03 2023-05-04 Netapp, Inc. Distributed storage systems and methods to provide change tracking integrated with scalable databases

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870764A (en) * 1993-05-12 1999-02-09 Apple Computer, Inc. Method of managing a data structure for concurrent serial and parallel revision of a work
US5832131A (en) * 1995-05-03 1998-11-03 National Semiconductor Corporation Hashing-based vector quantization
US5974421A (en) * 1996-12-23 1999-10-26 Microsoft Corporation Cache-efficient object loader
US5897637A (en) * 1997-03-07 1999-04-27 Apple Computer, Inc. System and method for rapidly identifying the existence and location of an item in a file
US6128627A (en) * 1998-04-15 2000-10-03 Inktomi Corporation Consistent data storage in an object cache
US6134546A (en) * 1998-06-25 2000-10-17 International Business Machines Corporation Method and computer program product for implementing subquery join

Also Published As

Publication number Publication date
AU8365098A (en) 1999-02-16
EP0996881B1 (en) 2004-09-15
CN1271439A (zh) 2000-10-25
KR100529995B1 (ko) 2005-11-22
SE9702760D0 (sv) 1997-07-21
WO1999005586A3 (en) 1999-04-15
BR9810767A (pt) 2001-01-16
WO1999005586A2 (en) 1999-02-04
EP0996881A2 (en) 2000-05-03
US6308169B1 (en) 2001-10-23
SE9702760L (sv) 1999-01-22
KR20010022027A (ko) 2001-03-15
JP2001511553A (ja) 2001-08-14
DE69826283D1 (de) 2004-10-21
CN1111815C (zh) 2003-06-18

Similar Documents

Publication Publication Date Title
SE510001C2 (sv) Metod för att lagra element i en databas
Enbody et al. Dynamic hashing schemes
US20230006144A9 (en) Trie-Based Indices for Databases
Abouelhoda et al. The enhanced suffix array and its applications to genome analysis
CN102754086B (zh) 页面大小可变的虚拟内存系统
SE510000C2 (sv) Struktur vid databas
KR20170112952A (ko) 중복제거 어플리케이션을 즉시 처리하는 효율적인 메모리를 위한 최적화된 합스카치 복수의 해시 테이블들
US7805427B1 (en) Integrated search engine devices that support multi-way search trees having multi-column nodes
US20050044134A1 (en) High-performance hashing system
CN112000846B (zh) 基于gpu分组lsm树索引的方法
KR20170112958A (ko) 중복제거 디램 시스템 알고리즘 아키텍처
JPS62113234A (ja) レコ−ドセツト分類方法
KR20170112953A (ko) 중복제거 어플리케이션을 즉시 처리하는 효율적인 메모리를 위한 가상 버킷 복수의 해시 테이블들
Qi On index-based query in SQL Server database
Cambazoglu et al. Effect of inverted index partitioning schemes on performance of query processing in parallel text retrieval systems
JP5646775B2 (ja) key−valueストア方式を有するメモリシステム
US20080288495A1 (en) Fast select for fetch first n rows with order by
Rivest On hash-coding algorithms for partial-match retrieval
Ragavan Efficient key hash indexing scheme with page rank for category based search engine big data
Wei et al. Dynamic external hashing: The limit of buffering
Hollaar Hardware systems for text information retrieval
Hollaar et al. A specialized architecture for textual information retrieval
JP6034467B2 (ja) システム
Sridevi et al. BLEH: bit-less extendible hashing for DBMS and hard disk drives
US11914587B2 (en) Systems and methods for key-based indexing in storage devices