SE522023C2 - Metod för konsistent läsning av objekt i en databas - Google Patents

Metod för konsistent läsning av objekt i en databas

Info

Publication number
SE522023C2
SE522023C2 SE9800161A SE9800161A SE522023C2 SE 522023 C2 SE522023 C2 SE 522023C2 SE 9800161 A SE9800161 A SE 9800161A SE 9800161 A SE9800161 A SE 9800161A SE 522023 C2 SE522023 C2 SE 522023C2
Authority
SE
Sweden
Prior art keywords
transaction
objects
phase
version
access
Prior art date
Application number
SE9800161A
Other languages
English (en)
Other versions
SE9800161D0 (sv
SE9800161L (sv
Inventor
Dag Anders Bjoernerstedt
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 SE9800161A priority Critical patent/SE522023C2/sv
Publication of SE9800161D0 publication Critical patent/SE9800161D0/sv
Priority to CA002319259A priority patent/CA2319259C/en
Priority to JP2000528931A priority patent/JP2002501257A/ja
Priority to CN99804267A priority patent/CN1119764C/zh
Priority to EP99904002A priority patent/EP1048001A1/en
Priority to AU24464/99A priority patent/AU2446499A/en
Priority to KR1020007007955A priority patent/KR100589816B1/ko
Priority to US09/234,514 priority patent/US6560601B1/en
Priority to PCT/SE1999/000087 priority patent/WO1999038096A1/en
Publication of SE9800161L publication Critical patent/SE9800161L/sv
Publication of SE522023C2 publication Critical patent/SE522023C2/sv

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • 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
    • 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/99938Concurrency, e.g. lock management in shared database
    • 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
    • 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)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

;-<»| »iv-- 10 15 20 25 Det faktiska arbete som en transaktion utför omfattar för ett objekt förändrande åtgärder och/eller för ett objekt icke förändrande åtgärder. En förändring, eller uppdatering, av inne- hållet i ett objekt kan göras exempelvis genom att transaktionen skriver det förändrade inne- hållet till en ny version av objektet eller genom att förändringen skrivs över den gamla versi- Onen.
Enligt känd teknik utföres samtliga åtgärder, såväl förändrande som icke förändrande, rörande en transaktion före "commit" av transaktionen, där begreppet commit är väl känt av fack- mannen men förenklat kan sägas betyda att transaktionen länmar besked om att av transak- tionen begärda åtgärder som kräver isolering är utförda. Det kan även nämnas att i begreppet commit omfattas traditionellt även ett släppande av satta lås medan vi i denna beskrivning talar om släppande av lås såsom en separat åtgärd.
Den tidsmässigt före transaktionen befintliga versionen av objektet bibehålls till dess att inga ytterligare transaktioner längre använder den befintliga versionen. Detta medför att olika versioner av ett objekt kan behöva sparas olika länge beroende på vilka transaktioner som använder versionerna i fråga.
Vissa applikationer kräver tillgång till en databas i realtid på ett sätt som inte blockerar till- gången av använda objekt för andra transaktioner, specifikt avseende rent läsande transak- tioner. I dessa sammanhang är det känt att använda ett databashanterande system som tillåter en tillgång till olika objekt som inte är transaktionsbunden men som däremot är snabb och icke- blockerande.
Nackdelen med dessa system är att den användare som agerar i databasen inte kan göra så på ett lika isolerat sätt som är möjligt inom transaktionsbundna system, och därmed inte heller kan erbjudas en garanterat konsistent bild av databasen.
Det är även känt att genom att hantera ett väl definierat transaktionsprotokoll kunna erbjuda icke blockerande transaktioner. Dessa medför dock en tung hantering som gör att en imple- ,, u .- n.. nu u n n 1- ° _ _, , . - . . . . . - . - . . u _ _ , . , - e c n n nu u u : ' . _ - I os» --. n o nu. :n: 2 . _ , _ ~ : 1 -_° _' 'u _, ... . . . . - , t. , . -3- mentering blir komplex, processkrävande och/eller mycket minneskrävande.
Således är det känt att antingen erbjuda en databas som kan vara snabb och enkel att imple- mentera men som inte alltid kan garantera en konsistent bild av databasen, det vill säga 5 korrekta resultat, eller att erbjuda en databas som är säker avseende hanteringen och vilka resultat som erhålls ur databasen, men som i stället är långsam och tung att använda.
Det skall även nämnas att det finns databaser som bygger på en så kallad optimistisk kontroll av jämlöpande transaktioner, där inga lås används. Denna kontroll bygger på att alla trans- 10 aktioner tillåts med utgångspunkten att inga konflikter kommer att uppstå.
Mycket förenklat kan man säga att en optimistisk kontroll av järnlöpande transaktioner innebär att innan en transaktion "committas kontrolleras det om några konflikter uppstått i och med transaktionen. Om så är fallet aborteras transaktionen, om ej tillåts transaktionen committas. 15 Det skall även nämnas att två olika lås är vanliga vid så kallad två-fas låsning, eller låsning i två faser.
Ett forsta lås är ett så kallat delat lås (eng.: shared lock), vilket sätts av, för det objektet, rent 20 läsande transaktioner och vilket tillåter andra läsande transaktioner att ha tillgång till objektet, men låser objektet for forändrande transaktioner.
Ett andra lås är ett så kallat exklusivt lås (eng.: exclusive lock), vilket sätts av, for det objektet, forändrande transaktioner och vilket låser objektet for alla andra transaktioner. 25 Som exempel på tidigare känd teknik, där olika typer av icke blockerande transaktioner visas, *WE refereras till följande publikationer.
Us-A-4 627 019 30 Denna publikation beskriver en databas där ett index till de olika objekten inom databasen .. .aa nu n n a. vfl. I _' ."., . . .. .. .. .. . _ _ _ _ a nu nu oo u n. I . ' I _ . . ... ... . - n.. .. _ _ I o I bl l Ü I Û - : . . _. .. .. . . . . . . .. . -4- anvisar var de olika objekten står att finna. Om en förändrande transaktion startas anvisas denna en ny position inom databasen där de förändrade objekten skall lagras. Ett nytt index skapas som pekar ut dessa nya positioner för de förändrade objekten. 5 Det gamla indexet behålls och pekar fortfarande på de gamla positionema för respektive objekt.
Varje version av ett tidigare index är levande så länge som någon transaktion använder den versionen av indexet. 10 Denna transaktionshantering erbjuder ett icke blockerande transaktionsprotokoll, men den är mycket minneskrävande då ett fleital olika versioner av indexet kan leva parallellt, och relativt komplex att implementera. 15 EP-A2-0 471 282 Denna publikation beskriver ett införande av tre nya låstyper, cash-lås, pågående lås och gammalt lås. Då en forsta, en läsande, transaktion sätter ett lås på olika objekt sätts ett cash-lås i stället for ett delat lås. Om en andra transaktion begär ett exklusivt lås på sarnma objekt, 20 under det att den första transaktionen fortfarande pågår, ändras cach-låset till ett pågående lås.
Om den andra transaktionen utför en förändring av ett objekt med ett pågående lås ändras detta lås till ett gammalt lås, om ingen förändring utförs av den andra transaktionen återgår det pågående låset till ett cash-lås vid commit av den andra transaktionen.
Den första transaktionen fortlöper normalt så länge som samtliga lås är cash-lås. Om något på- 'l gående lås finns på något av de objekt som berör den första transaktionen väntar den första transaktionen till dess att det pågående låset övergår till något annat lås, :mi 30 Om ett pågående lås övergår till cash-lås kan den första transaktionen fortsätta, om det övergår till ett gammalt lås betyder det att objektet förändrats och den första transaktionen aborteras. »if-- 10 15 20 25 522 023 _5- På detta sätt erhålls en möjlighet att sätta ett lås som inte blockerar förändrande transaktioner men som kan medföra att en påbörjad läsande transaktion måste aborteras på grund av att en förändrande transaktion ändrat ett objekt under genomförandet av den läsande transaktionen.
REDoGöRELsE FÖR FÖRELIGGANDE UPPFINNINQ TEKNISKA PROBLEM Under beaktande av teknikens tidigare ståndpunkt, såsom den beskrivits ovan, är det ett tekniskt problem att kunna erbjuda en transaktionshantering där den tidsperiod som ett delat lås är blockerande för en förändrande transaktion väsentligen kan förkortas.
Det är vidare ett tekniskt problem att kunna förkorta tidsperioden mellan ett sättande av ett delat lås och ett släppande av detsamma för en icke förändrande transaktion.
Det är ett tekniskt problem att kunna erbjuda en tidsmässigt obegränsad tillgång till objekt an- vända av en icke förändrande transaktion utan att under denna tillgång blockera förändrande transaktioner avseende berörda objekt, det vill säga en icke blockerande tillgång, efter att av transaktionen satta lås är släppta.
Det är även ett tekniskt problem att dela upp en transaktion i förändrande och icke förändrande åtgärder, där ett exklusivt lås erbjuds för de törändrande åtgärderna i transaktionen och en icke blockerande, i tiden fri, tillgång till berörda objekt erbjuds för de icke förändrande åtgärderna.
Det är ett tekniskt problem att lösa tidigare beskrivna tekniska problem i en databas som byg- ger på att varje version av ett objekt är tilldelad en räknare, vilken inkrementeras när en trans- aktion tilldelas tillgång till objektet, såsom vid sättandet av ett lås, och dekrementeras när en transaktion inte längre behöver tillgång till objektversionen, såsom vid släppandet av ett lås.
Det är ett tekniskt problem att lösa tidigare beskrivna tekniska problem i en databas som |».,. 10 15 522 023 jï -'II='II= - | . » ø . u: »en u _6- bygger på att varje transaktion är tilldelad en tidsstämpel, vilken tidsstämpel visar vid vilken tidpunkt som transaktionen påbörjats, där varje transaktion stämplar en version av respektive berört objekt, med sin tidsstämpel, om inte en yngre transaktion tidsstämplat objektversionen, och där varje version av ett objekt skall finnas kvar så länge som någon transaktion ännu ej avslutats som är äldre än, eller lika gammal som, den yngsta tidsstämpeln som tilldelats ver- sionen i fråga, LÖSNINGEN Föreliggande uppfinning utgår från en metod för att erbjuda en konsistent läsning av ett antal objekt inom en databas, inom vilken databas transaktioner hanteras medelst låsning i två faser.
En första fas omfattar en begäran av tillgång till av transaktionen berörda objekt, samt en lås- ning av objekten efier att tillgång till dessa har erhållits, och en andra fas omfattar att transak- tionen committas, samt att samtliga i den första fasen satta lås släpps.
Det faktiska arbete som transaktionen utför kan omfatta för ett objekt förändrande åtgärder och/eller för ett objekt icke förändrande åtgärder, där en förändring, eller uppdatering, av inne- hållet i ett objekt göres genom att transaktionen skriver det förändrade innehållet till en ny version av objektet, där den, tidsmässigt före transaktionen, befintliga versionen av objektet bibehålls till dess att inga ytterligare transaktioner längre använder den befintliga versionen.
Transaktionen utför samtliga förändrande åtgärder i den första fasen, Med utgångspunkt från en sådan metod, och med syftet att kunna lösa ett eller flera av de ovan angivna tekniska problemen, anvisar nu föreliggande uppfinníng, att transaktionen kvarhåller tillgången till objekten efter den andra fasen, att transaktionen utför så många som möjligt av icke förändrande åtgärder efter den andra fasen, och att transaktionen stänger tillgången till objekten efter utförandet av de icke förändrande åtgärderna.
Detta medför att transaktionen erbjuds en, för icke förändrande åtgärder, bibehållen konsistent 10 15 20 25 a noe ena. 522 023 ;§;,<fl¥42' _7_ ögonblicksbild av berörda objekt inom databasen efter släppandet av låsen.
Föreliggande uppfinning anvisar vidare att tillgången till ett objekt efter den andra fasen består i att aktuell version av respektive objekt är markerade som använda av transaktionen, och att stängningen består i att markering tas bort, vilket medför att versionen av objektet fortsätter att leva trots att transaktionen är committad, åtminstone till dess att transaktionen stängs.
Vidare anvisar föreliggande uppfinning att, där varje version av ett objekt är tilldelad en räknare, vilken inkrementeras när en transaktion tilldelas tillgång till versionen, såsom vid sättandet av ett lås, och dekrementeras när en transaktion inte längre behöver tillgång till objektversionen, såsom vid släppandet av ett lås, markeringen består i att räknaren dekre- menteras först när markeringen tas bort, det vill säga vid stängningen av transaktionen.
Där varje transaktion är tilldelad en tidsstämpel, vilken tidsstämpel visar vid vilken tidpunkt som transaktionen påbörjats, där varje transaktion stämplar respektive version, av berörda objekt, med sin tidsstämpel, om inte en yngre transaktion tidsstâmplat objektversionen, och där varje version av ett objekt tillåts finnas kvar så länge som någon transaktion ännu ej av- slutats som är äldre än, eller lika gammal som, den yngsta tidsstämpeln som tilldelats versionen anvisar föreliggande uppfinning att markeringen består av tidsstämpeln på versionen av res- pektive objekt, samt att transaktionen anses vara avslutad vid stängningen av tillgången till objektet.
I det fall som transaktionen endast omfattar icke törändrande åtgärder anvisar föreliggande uppfinning att låset utgöres av ett delat lås, vilket medför att andra transaktioner kan beredas tillgång till objektet innan det delade låset är släppt, dock med begränsningen att endast kunna läsa objektet.
Med avsikten att erbjuda en så kallad grupp-öppning, där samtliga objekt som skall öppnas är kända innan transaktionen påbörjas, anvisar föreliggande uppfinning att ett öppnande av objek- ten utföres i den första fasen. ,>,r| 10 15 20 .- u~p »nu I 0 :Q OI . I: , . . .. . . «. .a :g :',. | - 0 . å" . . .. .. - 3,' Å. ti.. . s . . t. _. _3- Med avsikten att erbjuda en så kallad rekursiv öppning, där ett eller flera startobjekt är kända innan transaktionen påbörjas, och där ett eller flera av nämnda startobjekt refererar till ett eller flera ytterligare objekt, anvisar föreliggande uppfinning att ett öppnande av startobjekten ut- föres i den första fasen, att ett utvärderande av eventuella referenser till ytterligare objekt ut- föres i den första fasen, och att ett öppnade av eventuella ytterligare objekt utföres i den första fasen.
Vidare anvisar föreliggande uppfinning att ett utvärderande av eventuella referenser från even- tuella ytterligare objekt till ännu ytterligare objekt kan utföras i den första fasen, att ett öpp- nade av eventuella ännu ytterligare objekt utföres i den första fasen, och så vidare.
Föreliggande uppfinning anvisar även möjligheten att begränsa antalet tillgängliga objekt genom att låta antalet tillåtna nivåer av objekt härrörande från referenser till ytterligare objekt från tidigare öppnade objekt vara förutbestämt.
Med avsikten att erbjuda en så kallad gren-öppning, där ett eller flera startobjekt är kända innan transaktionen påbörjas, och där ett eller flera av startobjekten refererar till ett eller flera ytterligare objekt, anvisar föreliggande uppfinning att ett öppnande av startobjekten utföres i den första fasen, att ett utvärderande av eventuella referenser till ytterligare objekt utföres för ett förutbestämt startobjekt, av startobjekten, i den första fasen, och att ett öppnade av eventu- ella ytterligare objekt utföres i den första fasen.
Vidare anvisar föreliggande uppfinning att ett utvärderande av eventuella referenser från even- tuella ytterligare objekt till ännu ytterligare objekt utföres i den första fasen, att ett öppnade av eventuella ännu ytterligare objekt utföres i den första fasen, och så vidare.
Föreliggande uppfinning anvisar även här möjligheten att begränsa antalet tillgängliga objekt genom att låta antalet tillåtna nivåer av objekt härrörande från referenser till ytterligare objekt från tidigare öppnade objekt vara förutbestämt. 10 15 20 lll III I I o! II 10 I Ü' Ü n nn nn n. nn n s n n. n n n . l ll II I I I I! I O I ' n.. n.. . . un. nnn a n n - n n n n n n. o v ø - n n n n nn .n nn .nn n n n n n n nn -9- FÖRDELAR De fördelar som främst är kännetecknande för en metod enligt föreliggande uppfinning är att härigenom erbjuds en enkel, snabb, relativt minnessnål och beräkningsmässigt fördelaktig metod att korta ner den tidsperiod som en transaktion låser ett objekt for andra transaktioner, vilket ger i det närmaste icke blockerande läsande transaktioner.
Metoden erbjuder en bibehållen konsistent ögonblicksbild av för en transaktion berörda objekt efter att transaktionen committats, vilket tillåter transaktionen att använda den konsistenta bilden av objekten för icke förändrande åtgärder utan någon tidsmässig begränsning och utan att blockera övriga transaktioner.
Den tidsperiod som andra transaktioner, det vill säga även transaktioner som inte är rent läsande, låser ett eller flera objekt kan kortas ner i olika utsträckning, vilket betyder att en databas enligt föreliggande uppfinning kommer, i olika utsträckning, att bli snabbare för samtliga transaktioner, eftersom väntetiderna för låsta objekt kommer att kortas ner betydligt.
Vidare erbjuds genom föreliggande uppfinning en speciellt fördelaktig metod inom databaser där en kopiering av olika objektsversioner anses vara en minnes-, tids- och/eller exekverings- mässigt dyr operation. En metod enligt föreliggande uppfinning undviker kopiering framför allt tör läsande transaktioner, och tillåter en tidsmässigt tidigare släppning av använda lås.
Föreliggande uppfinning är även speciellt fördelaktig i databaser där det finns ett behov av konsistenta ögonblicksbilder av en mängd objekt men där denna bild nödvändigtvis inte måste vara helt uppdaterad enligt de senaste transaktionerna.
Föreliggande uppfinning är speciellt fördelaktig vid en implementering inom RAM-databaser med liöga krav i samband med realtidstillämpningar. 10 15 20 522 023 _10- 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.
KORT FIGURBESKRIVNING En metod, uppvisande de med föreliggande uppfinning förknippade egenheterna, 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 tigur 7 visar schematiskt en första känd problemställning rörande samtida transaktioner inom en databas, visar schematiskt en andra känd problemstâllning rörande samtida transaktioner inom en databas, visar schematiskt en tredje känd problemställning rörande samtida transaktioner inom en databas, visar schematiskt en fjärde, ej tidigare behandlad, problemställning rörande samtida transaktioner, och sinsemellan beroende objekt, inom en databas, visar schematiskt en förutsättning för hur en uppdatering av ett objekt inom en databas skall ske enligt föreliggande uppfinning, visar schematiskt hur en transaktion enligt föreliggande uppfinning kan delas in i olika faser, visar schematiskt och mycket förenklat en läsande transaktion enligt föreliggande uppfinning, 15 20 522 023 _11- | | u < - - . | - nu figur 8 visar schematiskt och mycket förenklat en grupp-öppning enligt Föreliggande uppfinning, figur 9 visar schematiskt och mycket förenklat en rekursiv öppning enligt föreliggande uppfinning och figur 10 visar schematiskt och mycket förenklat en gren-öppning enligt föreliggande uppfinning.
BESKRIVNING ÖVER NU FÖRESLAGEN UTFÖRINGSFORNI Med hänvisning till figur l visas således ett första av olika kända fall där transaktioner som genomförs samtidigt inom en databas påverkar varandra.
I detta fall, som kan kallas förlorad uppdatering, visas att en första transaktion Tl och en andra transaktion T2 uppdaterar samma objekt "O" vid olika tidpunkter oberoende och utan kunskap av varandra.
Vid tidpunkt "a" hämtar den första transaktionen Tl en första version av objektet 01 och vid tidpunkt "b" hämtar den andra transaktionen TZ samma version O| av objektet. Då den första transaktionen Tl är klar med sin uppdatering skrivs det uppdaterade objektet O; till databasen över av den första versionen av objektet, vid tidpunkten "c". Då den andra transaktionen T2 är klar med sin uppdatering skrivs det uppdaterade objektet O; till databasen över den första transaktionens Tl utförda uppdatering 02, vid tidpunkten "d".
Om exempelvis objektet utgöres av ett dokument som två olika användare (T 1, T2) gör ändringar i så går den första användarens Tl ändringar 01 förlorade vid uppdateringen O; från den andra användaren T2.
Den sekvens av åtgärder som beskrivs ovan är "läs, skriv, skriv", vilket kan skapa en konflikt. 10 15 20 25 522 023 _12- . | » ø - u e- Detta problem kan exempelvis lösas genom att använda traditionell låsning i två faser. Den första transaktionen Tl sätter då ett exklusivt lås på objektet 0 eftersom det är en uppda- terande, och därmed förändrande, transaktion som skall göras. Den andra transaktionen T2 får då inte tillgång till objektet 0 förrän efter att den första transaktionen T1 är committad och det exklusiva låset är släppt.
Med hänvisning till figur 2 visas ett andra fall, vilket kallas oren läsning och innebär att en första transaktion Tl ges tillgång till ett objekt 04 och läser detsamma vid tidpunkt "f', där ob- jektet 0; vid en tidigare tidpunkt "e" blev förändrat av en andra transaktion TZ. Vid en senare tidpunkt "g" ändrar den andra transaktionen T2 på objektet 05 ytterligare en gång. Den av den första transaktionen Tl utförda läsningen kallas oren läsning eftersom det lästa objektet 04 inte innehöll den slutgiltiga versionen 05 av innehållet.
Den sekvens av åtgärder som utförts här är "skriv, läs, skriv", vilket som visat kan skapa en konflikt. Även här kan problemet lösas genom att den andra transaktionen T2 sätter ett exklusivt lås på objektet 04, eftersom det är en förändrande transaktion, vilket förhindrar tillgång till objektet för den läsande transaktionen Tl.
Med hänvisning till figur 3 visas ett tredje fall, vilket kallas icke repeterbar läsning och innebär att en första transaktion Tl läser ett objekt 0 två gånger, en gång läses objektet 06 vid tid- punkten "h" före det att en andra transaktion T2 uppdaterat objektet 07 vid tidpunkten "i", varefter den första transaktionen Tl läser objektet 07 ytterligare en gång vid tidpunkten "j". De två olika läsningama för den forsta transaktionen TI ger då två olika värden 06, 07 och resul- tatet från den första läsningen kan inte återfås eftersom den första läsningen inte är repeterbar.
Den sekvens av åtgärder som utförts här är "läs, skriv, läs", vilket som visat kan skapa en konflikt. 10 15 20 25 522 '023 -1_,- , . . - u a ~ Q . f.
Detta kan förhindras genom att den första läsningen sätter ett delat lås, eftersom det är en icke förändrande transaktion, vilket förhindrar den tbrändrande transaktionen T2 att erhålla ett ex- klusivt lås, och följaktligen att genomföra uppdateringen av objektet.
De tidigare visade fallen beskrivs närmare i publikationen "Transaction Processing: Concepts and Techniques", av Jim Gray och Andreas Reuter, Morgan Kaufmarm Publishers, Inc. 1993.
ISBN 1-55860-190-2.
Den problemställning som föreliggande uppfinning i huvudsak angriper är snarlik det tredje fallet icke repeterbar läsning. Skillnaden ligger dock i att olika objekt läses.
Vi kallar denna problemstâllning icke blockerande läsning och hänvisar till figur 4 för en be- skrivning av denna problemställning. Här visas att en första transaktion begär tillträde till ett antal olika objekt, exempelvis objekten 10, 20 och 30. Två av objekten, objektet 10 och objektet 30, har ett inbördes beroende av varandra.
En första transaktion Tl läser objektet 101 vid en första tidpunkt "k", objektet 201 vid en andra tidpunkt "l" och objekt 302 vid en tredje tidpunkt "n".
Vid en tidpunkt "m“, före den tredje tidpunkten "n", men efier den första tidpunkten "k", upp- daterar en andra transaktion T2 de två objekten 102 och 302.
Således ser den första transaktionen T1 en första version 101 av objektet 10 och en andra ver- sion 302 av objektet 30, vilka versioner inte är konsistenta med varandra enligt beroendet mellan de två objekten 10, 30. Även detta problem kan lösas genom traditionell låsning i två faser, genom att antingen den tbrsta transaktionen Tl blockerar den andra transaktionen T2 med ett delat lås på objekten 10, 20 och 30, eller genom att den andra transaktionen T2 blockerar den första transaktionen Tl med ett exklusivt lås på objekten 10 och 30. 10 15 20 522 i 02 3 ' - a o ø ~ . e. _14- I båda fallen blockeras den väntande transaktionen av den låsägande transaktionen. Avsikten med föreliggande uppfinning är att minska den menliga effekten av denna blockering, med en bibehållen möjlighet för den första transaktionen att erhålla en konsistent bild av de tre ob- jekten 10, 20 och 30.
F örutsättningama för föreliggande uppfinning är att transaktionerna inom den databas som avses hanteras medelst låsning i två faser, där en första fas omfattar en begäran av tillgång till av en transaktion berörda objekt, samt en låsning av objekten efier att tillgång till dessa har erhållits, och där en andra fas omfattar att transaktionen committas, samt att samtliga i den första fasen satta lås släpps.
Det faktiska arbete som en transaktion utför kan omfatta för ett objekt förändrande åtgärder och/eller för ett objekt icke förändrande åtgärder.
Föreliggande uppfinning förutsätter att en förändring, eller uppdatering, av innehållet i ett ob- jekt göres genom att, enligt figur 5, en transaktion T1 läser innehållet i ett objekt O, och skriver det förändrade innehållet till en ny version av objektet 02, och att den, tidsmässigt före transaktionen, befintliga versionen av objektet 01, bibehålls till dess att inga ytterligare trans- aktioner längre använder denna befintliga version 01.
Med utgångspunkt från dessa förutsättningar anvisar föreliggande uppfinning att en transaktion anpassas till att kvarhålla tillgången till berörda objekt efter den andra fasen. Vidare skall trans- aktionen anpassas till att utföra samtliga förändrande åtgärder i den första fasen, och så många som möjligt av de icke förändrande åtgärder skall utföras i en tredje fas, efier den andra fasen.
En transaktion kan omfatta olika åtgärder. I det efterföljande visas en sammanställning av sådana åtgärder: - Att öppna och låsa ett objekt. Detta betyder att addera ett objekt till den uppsättning objekt som öppnas av en transaktion. 10 15 20 25 522 023 _15- . . | » v | u a . u; - Att navigera. Detta betyder att läsa en del av innehållet i öppnade objekt för att bestäm- ma identiteten av, nycklama till, eller referenser till, andra objekt. Att accessa eller navi- gera till ett annat objekt är inget problem om detta redan är öppet.
- Att läsa ett värde hörande till innehållet inom ett öppnat objekt.
- Att skriva ett värde till innehållet i ett objekt, exempelvis att uppdatera ett objekt.
- Att skapa ett nytt objekt. Detta kommer att addera det nyskapade objektet till den upp- sättning objekt som öppnas av en transaktion.
- Att taga bort ett existerande objekt. Detta kommer att addera det borttagna objektet till den uppsättning objekt som öppnas av en transaktion.
Att utföra andra beräkningar, vilka inte direkt berör tillgången till de öppnade objekten. Åtgärder som markerats med ett streck, "-", är åtgärder som på något sätt är förändrande och som måste utföras i transaktionen i den första fasen, det vill säga före commit. Åtgärder som markerats med en kula, "-", är åtgärder som är icke förändrande och som i princip kan utföras efter den andra fasen, det vill säga efter commit.
Enligt föreliggande uppfinning stänger en transaktion tillgången till ett objekt eñer utförandet av de ännu ej utförda icke förändrande åtgärderna, Figur 6 beskriver förenklat hur en förändrande transaktion Tl kan se ut enligt föreliggande uppfinning. Vid tidpunkten "o" påbörjas den första fasen "A". I denna fas ges transaktionen Tl tillgång till de objekt lO, 20, 30, som berörs av transaktionen Tl, vilket i figuren visas med heldragna linjer mellan objekten och transaktionen. Relevanta lås sattes på respektive objekt, i figuren schematiskt visade med prickar inom låsta objekt, där en fylld prick visar ett exklusivt lås e. och en ofylld prick visar ett delat lås s.. 10 15 20 25 522 02 3 g: 1 _16- »ne-oo u I detta exempel utgöres låset på det andra objektet 20 av ett exklusivt lås e; eftersom trans- aktionen Tl är en förändrande transaktion avseende detta objekt. Låsen på de övriga objekten utgöres av delade lås s. eñersom transaktionen Tl är icke förändrande avseende dessa objekt.
I den första fasen "A" utföres samtliga förändrande åtgärder av transaktionen Tl. En sådan förändring är en uppdatering av det andra objektet 20 från en första version 201 till en andra version 202.
Vid tidpunkten "p" påbörjas den andra fasen "B". Denna fas omfattar ett släppande av satta lås samt ett committande av transaktionen Tl.
Enligt föreliggande uppfinning bibehålls dock en tillgänglighet av berörda objekt även efter den andra fasen. Denna tillgänglighet medför att objekten fortfarande är öppna för transaktionen T1, vilket visas med prickade linjer i figuren.
Efter att den andra fasen "B" genomförts påbörjas, vid tidpunkten "q", en tredje fas "C", vari resterande icke förändrande åtgärder utföres av transaktionen Tl. Exempel på sådana åtgärder är de som tidigare markerats med en kula.
Den tredje fasen "C" omfattar även ett släppande av tillgängligheten av objekten 10, 20, 30 för transaktionen TI, här benämnt att objekten stängs, och vilket är det sista som görs i den tredje fasen "C", det vill säga efier att resterande icke förändrande åtgärder är utförda.
På detta sätt erbjuds en transaktion Tl en bibehållen konsistent ögonblicksbild av berörda objekt inom databasen efter släppandet av samtliga lås, för de icke förändrande åtgärderna, det vill säga inom den tredje fasen "C" i figur 6.
Denna tillgång är tidsmässigt obegränsad eftersom den är helt icke blockerande i relation till andra transaktioner. En begränsning kan dock vara minnestillgången, eftersom tillgången kräver att aktuell version av objekten tillåts vara kvar i minnet. un u. n o -u -a u I n *' , s. s» u. -. ~ . o -o - :ß g ' Q o: :v oo v nu o n c ' _ l _ n. n. s s u.. ..- s 1 . , - u s s s . u . s - - - . s u n u _17.
För att en version av ett objekt som inte är låst av en transaktion, men som ändå är öppet för en transaktion enligt tidigare beskrivning, inte skall tas bort anvisar föreliggande uppfinning att tillgång till ett objekt i den tredje fasen "C" för en transaktion beståri att aktuell version av respektive objekt är markerade som använda av transaktionen, och att stängningen består i att 5 denna markering tas bort.
Det finns enligt känd teknik olika metoder att markera ett objekt som använt av en transaktion.
Föreliggande uppfinning är inte specifikt begränsad till någon av dessa metoder utan kan an- passas till respektive metod. I det följande skall utföringsformer av föreliggande uppfinning 10 beskrivas vilka är anpassade till de två vanligaste metodema att markera att ett objekt är använt av en transaktion.
Gemensamt för de olika metodema, och ett villkor för föreliggande uppfinning, är dock att en uppdatering av ett objekt sker genom att den nya versionen av objektet lagras på ett nytt ställe 15 inom databasen och att den gamla versionen sparas så länge som den är märkt såsom använd av en transaktion.
I en första föreslagen utföringsform av föreliggande uppfinning är varje version av ett objekt tilldelad en räknare, vilken inkrementeras när en transaktion tilldelas tillgång till denna version, 20 såsom vid sättandet av ett lås, och dekrementeras när en transaktion inte längre behöver till- gång till objektet, såsom vid släppandet av ett lås.
Vid en sådan transaktionshantering anvisar föreliggande uppfinning att markeringen består i att räknaren dekrementeras först när markeringen tas bort, i slutet av den tredje fasen "C" i figur - 25 6, och intei samband med att låsen släpps, i slutet av den andra fasen "B" i figur 6.
I detta fall tas aktuell version av objektet bort i samband med att räknaren dekrementerats till noll, såvida aktuell version inte utgöres av den senaste versionen av objektet.
JO Detta innebär att transaktionen coinniittas i samband med att låsen släpps. vilket görs så fort som samtliga törändrande åtgärder utförts av transaktionen, men att räknaren inte dekremen- 10 15 20 25 522 023 çnyrpgg; _13- e ...nu .ve-oo v u o o o v ~ o teras enligt känd teknik, utan att detta sker först när transaktionen inte längre behöver tillgång till objektversionen, vilket sker när återstående icke förändrande åtgärder utförts av transak- tionen och/eller när transaktionen inte längre behöver tillgång till objekten.
I en andra föreslagen utföringsform av föreliggande uppfinning är varje transaktion tilldelad en tidsstämpel, vilken tidsstämpel visar vid vilken tidpunkt som transaktionen påbörjats, där varje transaktion stämplar respektive version, av berörda objekt, med sin tidsstämpel, om inte aktuell objektversion är stämplad med en tidsstämpel från en yngre transaktion, och där varje version av ett objekt skall finnas kvar så länge som någon transaktion ännu ej avslutats som är äldre än, eller lika gammal som, den yngsta tidsstämpeln som tilldelats aktuell version.
Vid en sådan transaktionshantering anvisar föreliggande uppfinning att markeringen består av tidsstämpeln på aktuell version av respektive objekt, samt att transaktionen anses vara avslutad vid stängningen av tillgången till objektet.
Detta innebär att transaktionen committas i samband med att låsen släpps, i slutet av den andra fasen "B" i figur 6, vilket görs så fort som samtliga forändrande åtgärder utförts av transakti- onen, men att transaktionen anses leva kvar efter commit, det vill säga tidsstämpeln är fort- farande giltig, vilket medför att den aktuella versionen inte kan tas bort efiersom transaktionen med sin tidsstämpel fortfarande lever. Transaktionens tidsstämpel tas inte bort förrän trans- aktionen inte längre behöver tillgång till objekten, vilket sker när samtliga icke förändrande åtgärder utförts av transaktionen och/eller när transaktionen inte längre behöver tillgång till objekten, det vill säga i slutet av den tredje fasen "C" i figur 6.
En metod enligt föreliggande uppfinning har olika stor effekt beroende på vilken sorts trans- aktion det gäller. I det följande skall ett antal olika transaktioner beskrivas där föreliggande uppfinning får anses vara speciellt fördelaktig.
Det första exemplet på en sådan transaktion är där denna endast omfattar icke förändrande åtgärder, och där använt lås utgöres av ett delat lås, exempelvis en rent läsande transaktion. .wii 10 15 25 30 .u u: n n qø n nl v nu nu o. o. I I I ' ' f a: on co u f. o .n n. a n .ut nya n n n n o u n; u I n n o n u n tu _19- Denna transaktion medför att andra transaktioner kan beredas tillgång till berörda objekt innan det delade låset är släppt, dock med begränsningen att endast kunna läsa objekten.
Figur 7 visar att eñersom den tidsperiod "A", "B" som objekten är låsta endast är den tid som det tar att bereda tillgång till samtliga berörda objekt och låsa dessa "A", samt att därefier committa transaktionen och släppa låsen "B", så är denna tidsperiod relativt kort. Då inga förändrande åtgärder skall utföras committas transaktionen direkt efier att samtliga lås är satta, låsen släpps och kvar finns märkningen på aktuell version av respektive objekt som betyder att denna version ej får tas bort.
Aktuella objekt är således tillgängliga för andra icke förändrande transaktioner under hela tiden, eftersom satta lås endast är delade lås, och för förändrande transaktioner direkt eñer commit.
Tidsperioden fram till det att berörda objekt stängs "C" varierar beroende på vilka icke förän- drande åtgärder som skall utföras.
Figur 8 avser att illustrera det andra exemplet på en för föreliggande uppfinning speciellt fördelaktig transaktion Tl. Detta är en transaktion där samtliga objekt 10, 20, 30 som skall öppnas är kända innan transaktionen påbörjas, en här benämnd grupp-öppning. Denna transaktion kan naturligtvis omfatta både förändrande och icke förändrande åtgärder.
Oavsett om denna transaktion omfattar både förändrande och icke förändrande åtgärder eller endast icke förändrande åtgärder så skall ett öppnande av berörda objekt utföras i den första fasen "A"t Figur 9 avser att illustrera det tredje exemplet på en för föreliggande uppfinning speciellt för- delaktig transaktion Tl. Detta är en transaktion där ett eller flera startobjekt 10, 20, 30 är kända innan transaktionen påbörjas, och där ett eller flera av startobjekten refererar till ett eller flera ytterligare objekt 40, SO, 60, 70 som berörs av transaktionen, en så kallad rekursiv öppning. 10 15 20 5-22 023 _20- Oavsett om denna transaktion omfattar både förändrande och icke törändrande åtgärder eller endast icke förändrande åtgärder så skall ett öppnande av startobjekten 10, 20, 30 utföras i den första fasen "A", ett utvärderande av eventuella referenser till ytterligare objekt, det vill säga en navigation inom startobjekten 10, 20, 30, skall utföras i den första fasen "A", och ett öppnade av eventuella ytterligare objekt 40, 50, 60, 70 skall utföras i den första fasen "A".
I förekommande fall skall även ett utvärderande av eventuella referenser från de ytterligare objekten 40, 50, 60, 70 till ännu ytterligare objekt 80, 90, 100, 110 utföras i den forsta fasen "A", och ett öppnade av eventuella ännu ytterligare objekt 80, 90, 100, 110 skall utföras i den första fasen "A", och så vidare till eventuella ytterligare referenser, Här anvisas att en icke törändrande åtgärd, en navigation, skall utföras i den första fasen "A", vilket är nödvändigt för att berörda objekt skall kunna hittas och låsas i den första fasen "A".
För att begränsa den tidsperiod som krävs för att finna samtliga objekt, och för att begränsa antalet, av en transaktion, öppnade objekt, anvisar föreliggande uppfinning att det är möjligt att låta antalet tillåtna nivåer av objekt härrörande från referenser till ytterligare objekt från tidi- gare Öppnade objekt vara förutbestämt och begränsat "D". I figur 9 visas att antalet tillåtna nivåer är begränsat "D" till två, varför objekten 80, 90, 100, 110 inte öppnas.
Figur l0 avser att illustrera det fjärde exemplet på en för föreliggande uppfinning speciellt fördelaktig transaktion Tl. Detta är en transaktion där ett eller flera startobjekt 10, 20, 30 är kända innan transaktionen påbörjas, där ett eller flera av aktuella startobjekt refererar till ett eller flera ytterligare objekt 40, 50, 60, 70, och där ett utvärderande av eventuella referenser till ytterligare objekt utföres för ett förutbestämt startobjekt 30, av aktuella startobjekt 10, 20, 30, en här benämnd gren-öppning.
I figuren visas exempelvis att endast den gren som kommer från objektet 30 skall utvärderas genom begränsningen "E". 10 15 20 522 023 _21- Oavsett om denna transaktion omfattar både förändrande och icke förändrande åtgärder eller endast icke förändrande åtgärder så skall ett öppnande av aktuella startobjekt utföres i den första fasen "A", en navigation av det förbestämda startobjektet 30 skall ske i den första fasen "A", och ett öppnade av eventuella ytterligare objekt 70 skall utföras i den första fasen "A".
Vidare skall ett eventuellt utvärderande av eventuella referenser från de ytterligare objekten 70 till ännu ytterligare objekt 100, llO utföras i den första fasen "A", ett öppnade av eventuella ännu ytterligare objekt 100, 110 skall utföras i den första fasen "A", och så vidare till eventu- ella ytterligare referenser. Även här är det möjligt att begränsa den tidsperiod som krävs för att finna samtliga objekt, och att begränsa antalet, av en transaktion, öppnade objekt, genom att låta antalet tillåtna nivåer av objekt härrörande från referenser till ytterligare objekt från tidigare öppnade objekt vara förut- bestämt och begränsat "D".
Avsikten med figurema 8, 9 och 10 är att visa öppningsförfarandet av berörda objekt i den första fasen "A", och det skall förstås att det inbördes storleksförhâllandet mellan de olika visade faserna "A", "B", "C", i dessa figurer inte har någon signifikans för föreliggande uppfinning.
I samtliga fall av föreslagna transaktioner efierföljs följande mönster: - skapandet av en transaktion, - öppnandet av en mängd objekt, utan mellanliggande och tidskrävande beräkningar, - om access till ett eller flera objekt är blockerad, på grund av andra transaktioner, aborteras transaktionen för ett eventuellt senare försök, - om access bereds till samtliga berörda objekt utförs samtliga förändrande åtgärder och eventuellt nödvändiga icke förändrande åtgärder, - transaktionen committas och samtliga lås släpps, med en bibehållen icke förändrande tillgång till berörda objekt, - transaktionen har en konsistent ögonblicksbild av berörda objekt utan risk för att störa, 10 15 20 n ~ n . ø < | u. 522 022 saæswaaa>:~*^ _22- eller störas av, andra transaktioner, - återstående icke förändrande åtgärder utförs och - tillgängligheten till berörda objekt släpps.
En transaktionshantering enligt föreliggande uppfinning är inte helt icke blockerande eftersom vissa lås förekommer under den forsta "A" och andra "B" fasen, men enkelheten avseende im- plementation och exekvering i relation till helt icke blockerande system gör att denna kompro- miss är acceptabel och väl anpassad for vissa applikationer.
Med den begränsning att läsningen skall hanteras i två faser skall det förstås att detta även omfattar en transaktionshantering med ett sättande av lås och ett släppande av lås som om- fattar fler än två faser, men där en fas omfattar en begäran av tillgång till av en transaktion berörda objekt, samt en låsning av objekten efter att tillgång till dessa har erhållits, och där en annan fas omfattar att transaktionen committas, samt att samtliga i den första fasen satta lås släpps, oavsett vilka eventuella ytterligare faser som kan ingå i transaktionshanteringen.
Uppfinningen är givetvis inte begränsad till den ovan såsom exempel angivna utforingsformen utan kan genomgå modifikationer inom ramen för uppfinningstanken illustrerad i efterföljande patentkrav.

Claims (9)

10 15 20 25 30 522 023 i23 v u o v n - u = - n a» PATENTKRAV
1. Metod för att erbjuda en konsistent läsning av ett antal objekt inom en databas, inom vilken databas-transaktioner hanteras medelst låsning i två faser, där en första fas omfattar en begäran av tillgång till av nänmda transaktion berörda objekt, samt en låsning av nänmda ob- jekt efter att tillgång till dessa har erhållits, och där en andra fas omfattar att nämnda transak- tion committas, samt att samtligai nämnda första fas satta lås släpps, där det faktiska arbete som nämnda transaktion utför omfattar fór ett objekt förändrande åtgärder och/eller för ett ob- jekt icke förändrande åtgärder, och där en förändring, eller uppdatering, av innehållet i ett ob- jekt göres genom att nämnda transaktion skriver det förändrade innehållet till en ny version av nämnda objekt, där nämnda, tidsmässigt före nämnda transaktion, befintlig version av nämnda objekt, bibehålls till dess att inga ytterligare transaktioner längre använder nämnda befintliga version , och där nämnda transaktion utför samtliga förändrande åtgärder i nämnda första fas, k ä n n e t e c k n a d av, att nämnda transaktion kvarhåller tillgången för läsning av berörda objektversioner efter nämnda andra fas, att nämnda transaktion utför så många som möjligt av nämnda icke förändrande åtgärder efier nämnda andra fas, att nänmda transaktion stänger tillgången till nänmda objekt efter utförandet av nämnda icke förändrande åtgärder, varigenom nänmda transaktion erbjuds en, för nänmda icke förändrande åtgärder, bibehållen konsistent ögonblicksbild av berörda objekt inom nänmda databas efier släppandet av nänmda lås, 'att nänmda tillgång till ett objekt efter nämnda andra fas består i att aktuell version av respektive objekt är markerade som använda av nämnda transaktion, och att nänmda stängning består i att nänmda markering tas bort.
2. Metod enligt patentkravet 1, där varje version av ett objekt är tilldelad en räknare, vilken inkrementeras när en transaktion tilldelas tillgång till nänmda version, såsom vid sättandet av ett lås, och dekrementeras när en transaktion inte längre behöver tillgång till nämnda objekt- kännetecknad av I versionen, såsom vid släppandet av ett lås, att nämnda markering består av nämnda inkrementering av nänmda räknare, och att ett 10 15 20 25 30 522 0123 - 24 f s | ø « .o borttagande av nämnda markering erhålls genom en dekrementering av nämnda räknare.
3. Metod enligt patentkravet 1, där varje transaktion är tilldelad en tidsstämpel, vilken tids- stämpel visar vid vilken tidpunkt som nämnda transaktion påbörjats, där varje transaktion stämplar respektive version, av berörda objekt, med sin tidsstämpel, om inte en yngre trans- aktion tidsstämplat berörd objektversion, och där varje version av ett objekt tillåts finnas kvar så länge som någon transaktion ännu ej avslutats som är äldre eller lika gammal som, den yngsta tidsstämpeln som tilldelats nämnda version, k ä n n e t e c k - n a d av, att nämnda markering består av nämnda tidsstärnpel på nämnda version av respektive objekt, samt att nänmda transaktion anses vara avslutad vid nämnda stängning av tillgången till närrmda objekt.
4. Metod enligt något av föregående patentkrav 1, k ä n n e t e c k - n a d av, att närrmda transaktion endast omfattar icke förändrande åtgärder, och att näm- nda lås utgöres av ett här benärnnt delat lås, vilket medför att andra transaktioner kan beredas tillgång till nämnda objekt innan nämnda delade lås är släppt, dock med begränsningen att endast kunna läsa närrmda objekt.
5. Metod enligt något av patentkraven 1 till och med 3, k ä n n e t k n a d påbörjas, och att ett öppnande av nämnda objekt utföres i nämnda forsta fas. CC- av, att samtliga objekt som skall öppnas är kända innan nämnda transaktion
6. Metod enligt något av patentkraven l till och med 3, k ä n n e t k n a d där ett eller flera av närrmda startobjekt refererar till ett eller flera ytterligare objekt, att ett CC- av, att ett eller flera startobjekt är kända innan nämnda transaktion påbörjas, öppnande av nämnda startobjekt utföres i nämnda första fas, att ett utvärderande av eventuella referenser till ytterligare objekt utföres i nänmda första fas, att ett öppnade av nämnda ytter- ligare objekt utföres i närrmda första fas, att ett utvärderande av eventuella referenser från nänmda ytterligare objekt till ännu ytterligare objekt utföres i nämnda första fas, att ett öpp- nade av nämnda ännu ytterligare objekt utföres i nämnda första fas, och så vidare. 10 15 522 023 ø p » . f;
7. Metod enligt patentkravet 6, k ä n n e t e c k n a d av, att antalet tillåtna nivåer av objekt härrörande från referenser till ytterligare objekt från tidigare öppnade objekt är förutbestämt.
8. Metod enligt något av patentkraven 1 till och med 3, k ä n n e t e c - k n a d där ett eller flera av nämnda staitobjekt refererar till ett eller flera ytterligare objekt, att ett av, att ett eller flera startobjekt är kända innan nämnda transaktion påbörjas, öppnande av nämnda startobjekt utföres i nämnda forsta fas, att ett utvärderande av eventuella referenser till ytterligare objekt utföres för ett förutbestämt startobjekt, av nämnda startobjekt, i nämnda forsta fas, att ett öppnade av närnnda ytterligare objekt utföres i nänmda första fas, att ett utvärderande av eventuella referenser från nämnda ytterligare objekt till ärmu ytterligare objekt utföres i nämnda första fas, att ett öppnade av nämnda ännu ytterligare objekt utföres i nämnda första fas, och så vidare.
9. Metod enligt patentkravet 8, k ä n n e t e c k n a d av, att antalet tillåtna nivåer av objekt härrörande från referenser till ytterligare objekt från tidigare öppnade objekt är förutbestämt.
SE9800161A 1998-01-22 1998-01-22 Metod för konsistent läsning av objekt i en databas SE522023C2 (sv)

Priority Applications (9)

Application Number Priority Date Filing Date Title
SE9800161A SE522023C2 (sv) 1998-01-22 1998-01-22 Metod för konsistent läsning av objekt i en databas
PCT/SE1999/000087 WO1999038096A1 (en) 1998-01-22 1999-01-21 A method relating to databases
EP99904002A EP1048001A1 (en) 1998-01-22 1999-01-21 A method relating to databases
JP2000528931A JP2002501257A (ja) 1998-01-22 1999-01-21 データベースに関する方法
CN99804267A CN1119764C (zh) 1998-01-22 1999-01-21 关于数据库的方法
CA002319259A CA2319259C (en) 1998-01-22 1999-01-21 A method relating to databases
AU24464/99A AU2446499A (en) 1998-01-22 1999-01-21 A method relating to databases
KR1020007007955A KR100589816B1 (ko) 1998-01-22 1999-01-21 데이터베이스 관련 방법
US09/234,514 US6560601B1 (en) 1998-01-22 1999-01-21 Database transaction with locking in two phases and multiple versions of objects

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE9800161A SE522023C2 (sv) 1998-01-22 1998-01-22 Metod för konsistent läsning av objekt i en databas

Publications (3)

Publication Number Publication Date
SE9800161D0 SE9800161D0 (sv) 1998-01-22
SE9800161L SE9800161L (sv) 1999-07-23
SE522023C2 true SE522023C2 (sv) 2004-01-07

Family

ID=20409935

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9800161A SE522023C2 (sv) 1998-01-22 1998-01-22 Metod för konsistent läsning av objekt i en databas

Country Status (9)

Country Link
US (1) US6560601B1 (sv)
EP (1) EP1048001A1 (sv)
JP (1) JP2002501257A (sv)
KR (1) KR100589816B1 (sv)
CN (1) CN1119764C (sv)
AU (1) AU2446499A (sv)
CA (1) CA2319259C (sv)
SE (1) SE522023C2 (sv)
WO (1) WO1999038096A1 (sv)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030035122A (ko) * 2001-10-30 2003-05-09 포디홈네트 인터넷 정보 가전용 내장형 데이터베이스 관리시스템에서의 다중 버전을 이용한 동시성 제어 방법
GB0130399D0 (en) * 2001-12-19 2002-02-06 Ibm Message ordering in a messaging system
US7299285B2 (en) * 2002-05-15 2007-11-20 Adc Dsl Systems, Inc. Resource sharing with database synchronization
US8495131B2 (en) 2002-10-08 2013-07-23 International Business Machines Corporation Method, system, and program for managing locks enabling access to a shared resource
US7289992B2 (en) 2003-05-01 2007-10-30 International Business Machines Corporation Method, system, and program for lock and transaction management
US7496574B2 (en) 2003-05-01 2009-02-24 International Business Machines Corporation Managing locks and transactions
US7133884B1 (en) * 2003-11-26 2006-11-07 Bmc Software, Inc. Unobtrusive point-in-time consistent copies
US7272609B1 (en) * 2004-01-12 2007-09-18 Hyperion Solutions Corporation In a distributed hierarchical cache, using a dependency to determine if a version of the first member stored in a database matches the version of the first member returned
JP2005259057A (ja) * 2004-03-15 2005-09-22 Oki Electric Ind Co Ltd 更新履歴管理装置及び記録媒体
JP4451705B2 (ja) 2004-04-26 2010-04-14 株式会社日立製作所 ストレージ装置、これを備えたストレージシステム、このシステムのデータ管理方法、及びストレージ装置のコントローラ実行プログラム
CN100353325C (zh) * 2004-08-23 2007-12-05 华为技术有限公司 实现共享内存数据库的方法及内存数据库系统
EP1677233A1 (en) * 2004-12-29 2006-07-05 Sap Ag Technique for mass data handling in a preference processing context
US7461065B2 (en) 2006-01-31 2008-12-02 International Business Machines Corporation Method and system for utilizing shared numeric locks
US9280572B2 (en) * 2009-01-12 2016-03-08 Oracle International Corporation Managing product information versions
US8458181B2 (en) 2010-12-08 2013-06-04 International Business Machines Corporation Distributed free block map for a clustered redirect-on-write file system
US8396832B2 (en) 2010-12-08 2013-03-12 International Business Machines Corporation Independent fileset generations in a clustered redirect-on-write filesystem
US8904006B2 (en) 2010-12-08 2014-12-02 International Business Machines Corporation In-flight block map for a clustered redirect-on-write filesystem
US8626713B2 (en) * 2010-12-08 2014-01-07 International Business Machines Corporation Multiple contexts in a redirect on write file system
CN104156369B (zh) * 2013-05-14 2019-04-02 上海盛大网络发展有限公司 一种数据库镜像制作方法和一种数据库
JP6264872B2 (ja) * 2013-12-17 2018-01-24 日本電気株式会社 トランザクション処理システム
US9959308B1 (en) 2014-09-29 2018-05-01 Amazon Technologies, Inc. Non-blocking processing of federated transactions for distributed data partitions
US10754565B2 (en) * 2018-04-23 2020-08-25 Google Llc Systems and methods for deferred lock enforcement

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4627019A (en) * 1982-07-08 1986-12-02 At&T Bell Laboratories Database management system for controlling concurrent access to a database
US5170480A (en) * 1989-09-25 1992-12-08 International Business Machines Corporation Concurrently applying redo records to backup database in a log sequence using single queue server per queue at a time
US5261069A (en) 1990-08-13 1993-11-09 Hewlett-Packard Company Method of maintaining consistency of cached data in a database system
US5893117A (en) * 1990-08-17 1999-04-06 Texas Instruments Incorporated Time-stamped database transaction and version management system
US5280612A (en) * 1991-11-26 1994-01-18 International Business Machines Corporation Multiple version database concurrency control system
US6026401A (en) * 1997-10-14 2000-02-15 International Business Machines Corporation Locking tool data objects in a framework environment

Also Published As

Publication number Publication date
KR100589816B1 (ko) 2006-06-14
CA2319259C (en) 2008-06-10
CA2319259A1 (en) 1999-07-29
EP1048001A1 (en) 2000-11-02
CN1294714A (zh) 2001-05-09
SE9800161D0 (sv) 1998-01-22
AU2446499A (en) 1999-08-09
JP2002501257A (ja) 2002-01-15
KR20010034268A (ko) 2001-04-25
WO1999038096A1 (en) 1999-07-29
CN1119764C (zh) 2003-08-27
SE9800161L (sv) 1999-07-23
US6560601B1 (en) 2003-05-06

Similar Documents

Publication Publication Date Title
SE522023C2 (sv) Metod för konsistent läsning av objekt i en databas
EP3785122B1 (en) Backup and restore of linked clone vm
KR100398753B1 (ko) 효과적인 파일 갱신 처리 및 복구 처리를 이용하는트랜잭션 처리 시스템
JP4117265B2 (ja) ファイルシステムのバージョンを管理する方法およびシステム
US7849112B2 (en) Using a file handle for associating the file with a tree quota in a file server
US20050102255A1 (en) Computer-implemented system and method for handling stored data
US7426511B2 (en) Efficient support of consistent cyclic search with read-copy-update
US5261088A (en) Managing locality in space reuse in a shadow written B-tree via interior node free space list
US7987166B2 (en) Atomic renaming and moving of data files while permitting lock-free look-ups
CN1026631C (zh) 利用索引树对数据库记录进行并发存取的方法
JP3672582B2 (ja) ツリー構造ファイルへの変更を処理する方法及びシステム
US8762333B2 (en) Apparatus and method for read optimized bulk data storage
KR101738647B1 (ko) 데이터 유지 시스템
JP2002505481A (ja) 高速探索サーチ及びインデクシング法
US6256636B1 (en) Object server for a digital library system
US11494355B2 (en) Large content file optimization
US6480849B1 (en) Efficient concurrency control method for high dimensional index structures
Needham et al. The CAP filing system
US20070112771A1 (en) Directory entry locks
EP3063670A2 (en) Parallel materialisation of a set of logical rules on a logical database
Nurmi et al. Relaxed AVL trees, main-memory databases and concurrency
Krishna et al. Using Cuckoo Filters to Improve Performance in Object Store-based Very Large Databases
JPS62162136A (ja) 階層構造を有する索引をもつフアイルの同時更新制御方式
Van Weert et al. Containers
JPH01222344A (ja) データ管理処理方法

Legal Events

Date Code Title Description
NUG Patent has lapsed