Delsystemet för återvinning av ett experimentellt datahanteringssystem beskrivs och utvärderas. Transactmn-konceptet gör det möjligt för programprogram att begå, avbryta eller delvis ångra sina effekter. DO-UNDO-REDO-protokollet gör det möjligt att lägga till nya återvinningstyper och operationer i återvinningssystemet Apphcation-program kan registrera data m transaktionsloggen för att underlätta applikationsspecifik återhämtning. Transaktion ångra och göra om är baserade på poster som förs i en transaktionslogg. Kontrollpunktens mekanism är baserad på olika pommes frites (skuggor). Återhämtningsloggen spelas in på disk istället för band. CR Categortes: 4.33 Att göra datorer lättare att använda är målet för de flesta program. Databashanteringssystem tillhandahåller i synnerhet ett programmeringsgränssnitt för att underlätta uppgiften att skriva elektroniska bokföringsprogram. Recovery Manager för ett sådant system i sin tur underlättar uppgiften att skriva feltoleranta program. System R [ASTR76] är ett databassystem som stöder relationsmodellen för data. SQL-språket [CHAM76] ger operatörer som manipulerar databasen. Vanligtvis skriver en användare en PL/I eller COBOL program som har inbäddade SQL uttalanden. En samling av sådana uttalanden krävs för att göra en konsekvent omvandling av databasen. För att överföra pengar från ett konto till ett annat krävs till exempel två SQL-utdrag: ett för att debitera det första kontot och ett för att kreditera det andra kontot. Dessutom registrerar transaktionen troligen överföringen i en historikfil för senare rapportering och för revisionsändamål. Figur 1 ger ett exempel på ett sådant program skrivet i pseudo-PL/I. Programmet påverkar en konsekvent omvandling av böckerna i en hypotetisk bank. Dess åtgärder är antingen att • upptäcka ett fel, • acceptera inmatningsmeddelandet, och • producera ett felmeddelande, eller • upptäcka inga fel, • acceptera inmatningsmeddelandet, Permismon att kopiera utan avgift hela eller en del av detta material beviljas, förutsatt att kopiorna inte görs eller ¢hstnbuted för direkt kommersiell fördel, ACM copyright notme och titeln på publikationen och dess datum visas, och notme ges att kopiering är av Pernusmon Association for Computing Machinery. Att kopiera på annat sätt, eller att återpublicera, kräver en avgift och/eller ett särskilt tillstånd. • debitera källkodskontot med AMOUNT, • kreditera destinationskontot med AMOUNT, • registrera transaktionen i en historikfil, och • producera ett framgångsmeddelande. Den programmerare som skriver ett sådant program säkerställer att det är korrekt genom att säkerställa att det utför den önskade omvandlingen både i databastillståndet och i omvärlden (via meddelanden). Programmeraren och användaren vill båda att utförandet ska vara • atomisk: antingen utförs alla åtgärder (transaktionen har en effekt) eller så är resultatet av alla åtgärder ogjort (transaktionen har ingen effekt); • varaktig: när transaktionen är klar kan dess effekter inte gå förlorade på grund av datorfel; • konsekvent: transaktionen inträffar som om den hade utförts på ett system som i följd endast utför en transaktion åt gången. För att ange denna avsikt har SQL-programmeraren konfirmerar omvandlingarna med SQL-uttalandena, BEGIN__ TRANSACTION för att signalera transaktionens början och COMMIT___ TRANSACTION för att signalera dess slutförande. Om programmeraren vill återgå till början av transaktionen, kommer kommandot RESTORE__TRANSACTION att ångra alla åtgärder sedan utfärdandet av kommandot BE-GIN__TRANSACTION (se figur 1 ). System R återställningshanteraren stöder dessa kommandon och garanterar en atomär, hållbar körning. System R driver i allmänhet flera transaktioner samtidigt. System R:s mekanism för konvergenskontroll döljer sådan överensstämmelse från programmeraren genom en låsteknik [EswA76, GRAY78, NAUM78] och ger intryck av ett konsekvent system. System R består av ett externt skikt som kallas Forskningsdatasystemet (RDS), och ett helt internt skikt som kallas Forskningslagringssystemet (RSS) (se figur 2). Det yttre skiktet ger en relationell datamodell, och operatörer därav. Det ger också kataloghantering, en datalexikon, behörighet, och alternativa vyer av data. RDS manipuleras med hjälp av språket SQL System R består av två lager ovanför operativsystemet. RSS ger transaktionskonceptet, återställningsbegreppen och en dataåtkomstmetod som gör det möjligt att registrera data. RDS accepterar program PL/I eller COBOL-program som innehåller SQL-uttalanden. Det översätter dem till COBOL eller PL/I program plus subrutiner som representerar sammanställningen av SQL uttalanden i RSS-samtal. Det finns inga uppgifter som tyder på att det finns ett samband mellan detta och det faktum att det inte finns något samband mellan detta och det faktum att det inte finns något samband mellan detta och det faktum att det inte finns något samband mellan det faktum att det inte finns något samband mellan detta och det faktum att det inte finns något samband mellan det faktum att det inte finns något samband mellan det faktum att det inte finns något samband mellan detta och det faktum att det inte finns något samband mellan detta och det faktum att det inte finns något samband mellan det faktum att det finns ett samband mellan det faktum att det inte finns något samband mellan det faktum att det inte finns något samband mellan det faktum att det finns ett samband mellan å ena sidan det faktum att det finns ett samband mellan å ena sidan och å andra sidan, å andra sidan, och å andra sidan, å andra sidan, å andra sidan, att det finns ett samband mellan å ena sidan, å ena sidan, å andra sidan, och å andra sidan, och å andra sidan, å andra sidan, å andra sidan, å andra sidan, och å andra sidan, å andra sidan, å andra sidan, å andra sidan, å andra sidan, å andra sidan, Tyvärr har dessa objekt icke-standardnamnen "segment", "relation", "tuple", "fält", "bild", "länk" och "scan" i System R-dokumentationen. De tidigare, mer standardiserade, namnen används här. RSS tillhandahåller åtgärder för att skapa instanser av dessa objekt och för att hämta, ändra och ta bort dem. RSS-stödet för data är betydligt mer sofistikerat än det som normalt finns i en åtkomstmetod; det stöder fält med variabel längd, index på flera fält, flera poster typer per fil, interffle och intraffle uppsättningar, fysisk klusterering av poster efter attribut, och en katalog som beskriver data, som behålls som en fil som kan manipuleras som alla andra data. Ett annat viktigt bidrag av RSS är dess stöd för begreppet transaktion, en enhet för återvinning som består av en tillämpning specificerad sekvens av RSS-åtgärder. I en ansökan förklaras att en transaktion inleds genom att en BEGIN-åtgärd vidtas. Därefter ligger alla RSS-åtgärder från den applikationen inom tillämpningsområdet för den transaktionen tills applikationen utfärdar en COMMIT eller en ABORT-åtgärd. RSS tar allt ansvar för att driva samtidiga transaktioner och för att säkerställa att varje transaktion ser en konsekvent bild av databasen. RSS är också ansvarig för att återställa data till deras senaste konsekventa tillstånd i händelse av transaktion, åtgärd, system, eller media fel eller en användare begäran om att avbryta transaktionen. En slutlig komponent i System R är operativsystemet. System R körs under VM/370 [GRAY75] och MVS-operativsystemet på IBM S/370-processorer. System R Recovery Manager är också en del av SQL/DS-produkten som körs på DOS/CICS. Operativsystemet tillhandahåller processer, ett enkelt filsystem och terminalhantering. System R allokerar en operativsystemsprocess för varje användare för att köra både användarens program och System R databashanteraren. Programprogram är skrivna på ett konventionellt programmeringsspråk (t.ex. COBOL eller PL/I) förstärkt med SQL-språket. En SQL preprocessor kartlägger SQL-uttalandena till sekvenser av RSS-anrop. Vanligtvis utgör ett enda program eller grupp av program (huvud plus subrutiner) en transaktion. I detta papper ignorerar vi RDS och antar att program, liksom de som produceras av SQL kompilatorn, består av konventionella program som åberopar sekvenser av RSS-operationer. Återhämtningshanteraren underlättar uppgiften att skriva feltoleranta program. Det gör det genom en noggrann användning av redundans. Att välja lämplig redundans kräver en kvantitativ modell av systemfel. Enligt vår erfarenhet genomför cirka 97 procent av alla transaktioner framgångsrikt. Av de återstående, nästan alla misslyckas på grund av felaktig användarinmatning eller på grund av användarens avbokning. Ibland (mycket mindre än 1 procent) transaktioner avbryts av systemet som ett resultat av någon överbelastning såsom dödläge. I ett typiskt system som kör en transaktion per sekund, transaktion ångra inträffar ungefär två gånger i minuten. På grund av sin frekvens, transaktion ångra måste köra ungefär lika snabbt som framåt behandling av transaktioner. Varannan dag startar systemet om (efter en krasch). Nästan alla krascher beror på maskinvarans eller operativsystemets fel, även om System R också startar krasch och omstart när det upptäcker skador på sina datastrukturer. Det primära minnet går förlorat efter en krasch. Vi antar att läget för diskarna (sekundär och tertiär lagring) bevaras över krascher, så ibland, integriteten av disktillståndet kommer att förloras vid omstart. Detta kan orsakas av hårdvara fel (diskhuvud krasch eller disk tappade på golvet) eller av programvara fel (dålig data skriven på en disk sida av System R eller annat program). Sådana händelser kallas mediafel och initierar en rekonstruktion av det nuvarande tillståndet från en arkivversion (gamla och oskadade version av systemtillståndet) plus en logg av aktivitet sedan dess. Detta förfarande åberopas en eller två gånger per år och förväntas slutföras inom en timme. Om alla dessa återvinningsförfaranden misslyckas har användaren förlorat data på grund av ett oåtervinnbart fel. Vi har mycket begränsad statistik om oåtervinnbara misslyckanden. Den nuvarande utgåvan av System R har upplevt cirka 25 år av tjänst i en mängd olika installationer, och enligt vår kunskap har nästan alla oåtervinnbara fel berott på operationer fel {t.ex., underlåtenhet att göra arkiv dumps) eller från buggar i operativsystemet verktyg för dumpning och återställa diskar. Det faktum att arkivmekanismen bara är en mindre källa till oåtervinnbara fel tyder förmodligen på att den är lämpligt utformad. Tabell 1 sammanfattar denna diskussion. Om arkivmekanismen misslyckas en gång vart hundrade år av drift, och om det finns 10.000 installationer av System R, då kommer det att misslyckas någon gång i månaden. Ur det här perspektivet kan det vara underdesignat. Vi antar att System R, operativsystemet, mikrokoden, och hårdvaran alla har buggar i dem. Var och en av Recovery Manager System R Database Manager • 227 dessa system gör en hel del kontroll av sina datastrukturer (defensiv programmering}. Vi postulerar att dessa fel upptäcks och att systemet kraschar innan uppgifterna är allvarligt skadade. Om detta antagande är felaktigt behandlas situationen som ett mediefel. Denna attityd förutsätter att arkiv- och loggmekanismen är mycket tillförlitlig och har fellägen oberoende av övriga delar av systemet. Vissa kommersiella system är mycket mer krävande. De kör hundratals transaktioner per sekund, och eftersom de har hundratals diskar, de ser disk fel hundratals gånger så ofta som typiska användare av System R {en gång i veckan snarare än en gång om året). De kan inte heller tolerera stilleståndstider som överstiger några minuter. Även om de begrepp som presenteras i detta dokument är tillämpliga på sådana system, mycket mer redundans behövs för att möta sådana krav (t.ex. duplexed processorer och diskar, och verktyg som kan återställa små delar av databasen utan att behöva återställa det hela varje gång). Recovery manager presenteras här är en lärobok en, vars grundläggande anläggningar är endast en delmängd av dem som tillhandahålls av mer sofistikerade system. Transaktionsmodellen är ett ogenomförbart ideal. I bästa fall minimerar noggrann användning av redundans sannolikheten för oåtervinnbara fel och därav följande förlust av gjorda uppdateringar. Redundant kopior är utformade för att ha oberoende fellägen, vilket gör det osannolikt att alla poster kommer att gå förlorade på en gång. Murphys lag garanterar dock att alla återvinningsmetoder ibland misslyckas. Som visas nedan, kan System R tolerera varje enskilt fel och kan ofta tolerera flera fel. BESKRIVNING AV SYSTEM R ÅTERHÄMTNING RSS tillhandahåller åtgärder på de objekt den implementerar. Dessa åtgärder inkluderar åtgärder för att skapa, förstöra, manipulera, hämta och ändra RSS-objekt (filer, spela in typer, registrera instanser, index, uppsättningar och markörer). Varje RSS-åtgärd är atomisk - det antingen händer eller har ingen effekt - och konsekvent - om två åtgärder relaterar till samma objekt, de verkar utföra i någon serieordning. Dessa två egenskaper säkerställs genom att 1) upphäva de partiella effekterna av åtgärder som misslyckas och 2) låsa nödvändiga RSS-resurser under åtgärdens varaktighet. RSS-åtgärder är ganska primitiva. I allmänhet kräver funktioner som "hyra en anställd" eller "göra en insättning på ett konto" flera åtgärder. Vid kartläggningen av abstraktioner som "anställd" eller "konto" i ett sådant system måste användaren kombinera flera åtgärder till en atomisk transaktion. Det klassiska exemplet på en atomisk transaktion är en överföring av pengar som debiterar ett konto, krediterar ett annat, skriver en aktivitetspost, och gör en del terminalinmatning eller utmatning. Användaren av en sådan transaktion vill att det ska vara en allt-eller-ingenting affär, eftersom han inte bara vill att några av de åtgärder som ska ha skett. Om transaktionen genomförs korrekt ser den ut och agerar atomär. I en fleranvändarmiljö tar transaktioner på sig det ytterligare attributet att två transaktioner som samtidigt fungerar på gemensamma objekt verkar köras seriellt (dvs. som om det inte fanns någon samstämmighet). Denna egenskap kallas konsekvens och hanteras av delsystemet RSS-lås [ESWA76, GRAY76, GRAY78, NAUM78]. I ansökan förklaras en sekvens av åtgärder som en transaktion genom att starta sekvensen med en BEGIN-åtgärd och avsluta den med en COMMIT-åtgärd. Alla mellanliggande åtgärder genom den ansökan (vare sig det rör sig om en eller flera processer) anses utgöra delar av en enda återvinningsenhet. Om programmet får problem kan det utfärda ABORT-åtgärden som upphäver alla åtgärder i transaktionen. Dessutom kan systemet ensidigt avbryta pågående transaktioner i händelse av ett tillståndsbrott, resursbegränsning, dödläge, systemavstängning eller krasch. Figur 3 visar de tre möjliga utfallen - commit, abort, eller systemabort-av en transaktion, och figur 4 visar resultaten av fem urval transaktioner i händelse av en systemkrasch. Om en transaktion antingen avbryter eller avbryts, måste systemet ångra alla åtgärder av den transaktionen. När en transaktion begår, dock, dess uppdateringar och meddelanden till Och T3 kommer att överleva en systemkrasch eftersom de har åtagit sig. Detta kallas hållbarhet. Men effekterna av transaktioner T4 och T5 kommer att upphävas eftersom de pågick vid tidpunkten för kraschen (har ännu inte gjorts). yttervärlden måste bestå – dess effekter måste vara varaktiga. Systemet kommer att "komma ihåg" resultatet av transaktionen trots eventuella efterföljande fel. När systemet förbinder sig att "öppna kassalådan" eller "dra tillbaka reaktorstavarna" kommer det att uppfylla detta åtagande. Det enda sättet att upphäva effekten av en genomförd transaktion är att genomföra en ny transaktion som kompenserar för dessa effekter. RSS definierar tilläggsbegreppet transaktionssparpunkt. En sparpunkt är en brandvägg som gör det möjligt att ångra en transaktion för att inte ångra hela transaktionen. Om en transaktion hamnar i trubbel (t.ex. dödläge eller myndighetsöverträdelse), kan det vara tillräckligt att backa upp endast så långt som en mellanliggande sparpunkt. Varje sparpunkt är numrerad, och början av en transaktion är att spara punkt 1. Programmet förklarar en spara punkt genom att utfärda en SAVE åtgärd som anger en spara punkt post som ska skrivas in i loggen. Denna post kan hämtas om och när transaktionen återgår till motsvarande sparpunkt. Figur 5 visar användningen av sparpunkter. Det beskriver en konversationstransaktion Figur 5. En multihop flygbolag bokning transaktion med hjälp av spara poäng. Om programmet eller biljett agent upptäcker ett fel, transaktionen kan ångra till en tidigare spara punkt och fortsätta framåt därifrån gör en multihop flygbolag bokning som omfattar flera biljett agent interaktioner - en per humle. Programmet etabhshes en spara punkt före och efter varje interaktion, med spara punktdata inklusive det aktuella tillståndet för programvariabler och biljett agent skärmen. Om biljettagenten gör ett fel eller om en flygning är otillgänglig, kan agenten eller programmet backa upp till den senaste ömsesidigt godtagbara spara punkt, vilket minimerar agentens omtypning. När hela biljetten är komponerad gör transaktionen att databasen ändras och skriver ut biljetten. Programmet kan begära en retur för att spara punkt N genom att utfärda UNDO N åtgärd. Naturligtvis kan alla spara poäng tvättas bort av ett system omstart eller allvarligt dödläge, men de flesta felsituationer kan lösas med en minimal förlust av biljettagentens arbete. System R Save Point-faciliteten står i kontrast till de flesta system där varje meddelande gör att uppdateringar av transaktionen görs. I sådana system antingen agenten måste manuellt ta bort tidigare steg i transaktionen när något går fel, eller programmet program måste genomföra återhämtning genom att hålla en ångra logg eller skjuta upp alla uppdateringar till det sista steget. Sådana program återhämtningssystem komplicerar programmet och kan fungera felaktigt eftersom lås inte hålls mellan steg (t.ex. förlorade uppdateringsproblem som beskrivs i GRAY76). ............................................................................................................. Åtgärder A2, A4 och A7 definierade spara poäng $ 1, $ 2, och $ 3 som blir bonad subtransact]ons av T. Dessa är förmodligen RDS Actmns som består av flera RSS-aktmner. Varje RSS-åtgärd är en minitransaktion på RSS-tillståndet. Om RSS Actmn får problem, det backar upp till början av åtgärden och tyglar. Om det misslyckas, ångra propagerar till närmaste spara punkt som kan lösa problemet. Detta är kontrollsfärerna notatmn av DAVI73. operationer, och RDS garanterar att varje SQL uttalande är atomär. RDS stöder Atomic SQL uttalanden genom att starta varje sådan komplex operation med en spara punkt och backa upp till denna spara punkt om RSS eller RDS misslyckas någon gång under operationen. Figur 6 visar användningen av sparpunkter.
Här hanteras ett fel med en ångra-redo logg REF.
The Recovery Manager of the System R Database Manager
{'venue': 'CSUR', 'journal': None, 'mag_field_of_study': ['Computer Science']}