Transaktionshantering - Transaction processing

Transaktionsbehandling är informationsbehandling inom datavetenskap som är indelad i individuella, odelbara operationer som kallas transaktioner . Varje transaktion måste lyckas eller misslyckas som en komplett enhet; det kan aldrig bara vara delvis komplett.

Till exempel, när du köper en bok från en bokhandel online, växlar du pengar (i form av kredit) mot en bok. Om din kredit är bra, säkerställer en serie relaterade operationer att du får boken och bokhandeln får dina pengar. Men om en enda operation i serien misslyckas under utbytet misslyckas hela växlingen. Du får inte boken och bokhandeln får inte dina pengar. Tekniken som ansvarar för att göra börsen balanserad och förutsägbar kallas transaktionsbehandling. Transaktioner säkerställer att dataorienterade resurser inte uppdateras permanent om inte alla operationer inom transaktionsenheten slutförs framgångsrikt. Genom att kombinera en uppsättning relaterade operationer till en enhet som antingen helt lyckas eller helt misslyckas kan man förenkla felåterställning och göra sin applikation mer tillförlitlig.

Transaktionsbehandlingssystem består av datorhårdvara och mjukvara som är värd för en transaktionsorienterad applikation som utför de rutinmässiga transaktioner som är nödvändiga för att bedriva affärer. Exempel är system som hanterar försäljningsorderinmatning, flygbokningar, löner, medarbetarregister, tillverkning och frakt.

Eftersom de flesta, men inte nödvändigtvis alla, transaktionshanteringen idag är interaktiv, behandlas termen ofta som synonymt med online -transaktionsbehandling .

Beskrivning

Transaktionsbearbetning är utformad för att upprätthålla ett systems integritet (vanligtvis en databas eller några moderna filsystem ) i ett känt, konsekvent tillstånd, genom att säkerställa att ömsesidigt beroende operationer på systemet antingen slutförs framgångsrikt eller att alla avbryts framgångsrikt.

Tänk till exempel på en typisk banktransaktion som innebär att $ 700 flyttas från en kunds sparkonto till en kunds checkkonto. Denna transaktion involverar minst två separata operationer i datortermer: debitera sparkontot med $ 700 och kreditering av kontot med $ 700. Om den ena operationen lyckas men den andra inte gör det, kommer bankens böcker inte att balanseras i slutet av dagen. Det måste därför finnas ett sätt att säkerställa att båda operationerna lyckas eller båda misslyckas så att det aldrig blir inkonsekvens i bankens databas som helhet.

Transaktionsbehandling länkar flera enskilda operationer i en enda, odelbar transaktion och säkerställer att antingen alla operationer i en transaktion slutförs utan fel, eller så är ingen av dem. Om en del av operationerna är slutförda men fel uppstår när de andra försöker "rullar" transaktionsbehandlingssystemet tillbaka alla transaktionsoperationer (inklusive de framgångsrika), vilket raderar alla spår av transaktionen och återställer systemet till det konsekventa, kända tillståndet att det var i innan behandlingen av transaktionen började. Om alla operationer i en transaktion slutförts transaktionen begås av systemet, och alla ändringar i databasen görs permanent; transaktionen kan inte rullas tillbaka när detta är gjort.

Transaktionsbehandling skyddar mot maskin- och mjukvarufel som kan leda till att en transaktion delvis slutförs. Om datorsystemet kraschar mitt i en transaktion, garanterar transaktionsbehandlingssystemet att alla operationer i alla icke -engagerade transaktioner avbryts.

I allmänhet utfärdas transaktioner samtidigt. Om de överlappar varandra (dvs. måste röra vid samma del av databasen) kan detta skapa konflikter. Till exempel, om kunden som nämns i exemplet ovan har $ 150 på sitt sparkonto och försöker överföra $ 100 till en annan person samtidigt som han flyttar $ 100 till bankkontot, kan bara en av dem lyckas. Att tvinga transaktioner att behandlas sekventiellt är dock ineffektivt. Därför är samtidiga implementeringar av transaktionsbearbetning programmerade för att garantera att slutresultatet återspeglar ett konfliktfritt resultat, detsamma som kan uppnås om transaktionerna utförs i följd i vilken ordning som helst (en egenskap som kallas serialiserbarhet ). I vårt exempel innebär detta att oavsett vilken transaktion som först utfärdades, antingen överföringen till en annan person eller flytten till bankkontot lyckas, medan den andra misslyckas.

Metodik

Grundprinciperna för alla transaktionsbehandlingssystem är desamma. Terminologin kan dock variera från ett transaktionsbehandlingssystem till ett annat, och termerna som används nedan är inte nödvändigtvis universella.

Rulla tillbaka

Transaktionsbehandlingssystem säkerställer databasintegritet genom att registrera mellanliggande tillstånd i databasen när den ändras och sedan använda dessa poster för att återställa databasen till ett känt tillstånd om en transaktion inte kan göras. Exempelvis reserverar kopior av information i databasen innan den ändras av en transaktion av systemet innan transaktionen kan göra några ändringar (detta kallas ibland en förebild ). Om någon del av transaktionen misslyckas innan den begås, används dessa kopior för att återställa databasen till det tillstånd den befann sig i innan transaktionen började.

Rulla framåt

Det är också möjligt att föra en separat journal över alla ändringar av ett databashanteringssystem. (kallas ibland efter bilder ). Detta krävs inte för återställning av misslyckade transaktioner, men det är användbart för att uppdatera databashanteringssystemet i händelse av ett databasfel, så vissa transaktionsbehandlingssystem tillhandahåller det. Om databashanteringssystemet misslyckas helt måste det återställas från den senaste säkerhetskopian. Säkerhetskopian återspeglar inte transaktioner som gjorts sedan säkerhetskopieringen gjordes. Men när databashanteringssystemet är återställt kan journal över efterbilder tillämpas på databasen ( rollforward ) för att uppdatera databashanteringssystemet. Alla pågående transaktioner vid felet kan sedan rullas tillbaka. Resultatet är en databas i ett konsekvent, känt tillstånd som innehåller resultaten av alla transaktioner som gjorts fram till felet.

Dödlås

I vissa fall kan två transaktioner under behandlingen försöka komma åt samma del av en databas samtidigt på ett sätt som hindrar dem från att fortsätta. Exempelvis kan transaktion A komma åt del X av databasen och transaktion B kan komma åt del Y av databasen. Om vid denna tidpunkt försöker transaktion A sedan komma åt del Y av databasen medan transaktion B försöker komma åt del X, inträffar ett dödläge och ingen av transaktionerna kan gå vidare. Transaktionsbehandlingssystem är utformade för att upptäcka dessa blockeringar när de uppstår. Normalt kommer båda transaktionerna att avbrytas och rullas tillbaka, och sedan kommer de att startas igen i en annan ordning, automatiskt, så att dödläget inte uppstår igen. Eller ibland kommer bara en av de låsta transaktionerna att avbrytas, rullas tillbaka och startas om automatiskt efter en kort försening.

Deadlocks kan också förekomma bland tre eller flera transaktioner. Ju fler transaktioner som är inblandade, desto svårare är de att upptäcka, till den grad som transaktionsbehandlingssystem finner att det finns en praktisk gräns för de blockeringar de kan upptäcka.

Ersättningstransaktion

I system där åtagande- och återföringsmekanismer inte är tillgängliga eller oönskade används ofta en kompensationstransaktion för att ångra misslyckade transaktioner och återställa systemet till ett tidigare tillstånd.

SUR -kriterier

Jim Gray definierade egenskaperna hos ett tillförlitligt transaktionssystem i slutet av 1970 -talet under förkortningen ACID - atomicitet, konsistens, isolering och hållbarhet.

Atomicitet

En transaktions förändringar av staten är atomiska: antingen händer allt eller inget händer. Dessa ändringar inkluderar databasändringar, meddelanden och åtgärder på givare.

Konsistens

Konsekvens : En transaktion är en korrekt omvandling av staten. De åtgärder som vidtas som en grupp bryter inte mot någon av integritetsbegränsningarna som är associerade med staten.

Isolering

Även om transaktioner utförs samtidigt, verkar det för varje transaktion T, att andra utfördes antingen före T eller efter T, men inte båda.

Varaktighet

När en transaktion slutförts framgångsrikt (förbinder sig) överlever dess ändringar i databasen misslyckanden och behåller dess ändringar.

Fördelar

Transaktionsbehandling har följande fördelar:

  • Det tillåter delning av datorresurser mellan många användare
  • Det flyttar tiden för jobbbehandling till när datorresurserna är mindre upptagna
  • Det undviker tomgång i datorresurser utan mänsklig interaktion och övervakning minut för minut
  • Det används på dyra datorklasser för att hjälpa till att amortera kostnaden genom att hålla höga utnyttjandegrader för de dyra resurserna

Nackdelar

  • De har relativt dyra installationskostnader
  • Det saknas standardformat
  • Hårdvara och mjukvara inkompatibilitet

Implementeringar

Standard transaktionsbearbetning programvara , till exempel IBM : s Information Management System , utvecklades först på 1960-talet, och var ofta nära kopplad till särskilda databashanterare . Klient -server -datorer implementerade liknande principer på 1980 -talet med blandad framgång. Under senare år har dock den distribuerade klient -server -modellen blivit betydligt svårare att underhålla. Eftersom antalet transaktioner ökade som svar på olika onlinetjänster (särskilt webben ) var en enda distribuerad databas inte en praktisk lösning. Dessutom består de flesta onlinesystem av en hel serie program som fungerar tillsammans, i motsats till en strikt klient -server -modell där den enda servern kunde hantera transaktionsbearbetningen. Idag finns ett antal transaktionsbehandlingssystem tillgängliga som fungerar på mellanprogramsnivå och som kan skala till stora system, inklusive stordatorer .

Ett försök är X/Open Distributed Transaction Processing (DTP) (se även Java Transaction API (JTA). Men proprietära transaktionsbehandlingsmiljöer som IBM: s CICS är fortfarande mycket populära, även om CICS har utvecklats till att även inkludera öppna industristandarder. .

Termen extrem transaktionsbehandling (XTP) användes för att beskriva transaktionsbehandlingssystem med ovanligt utmanande krav, särskilt genomströmningskrav (transaktioner per sekund). Sådana system kan implementeras via distribuerade eller klusterstilarkitekturer. Den användes åtminstone 2011.

Referenser

Vidare läsning

  • Gerhard Weikum, Gottfried Vossen, Transaktionsinformationssystem: teori, algoritmer och övning av samtidighetskontroll och återhämtning , Morgan Kaufmann, 2002, ISBN  1-55860-508-8
  • Jim Gray , Andreas Reuter, Transaction Processing-Concepts and Techniques, 1993, Morgan Kaufmann, ISBN  1-55860-190-2
  • Philip A. Bernstein, Eric Newcomer, Principles of Transaction Processing, 1997, Morgan Kaufmann, ISBN  1-55860-415-4
  • Ahmed K. Elmagarmid (redaktör), Transaktionsmodeller för avancerade databasapplikationer, Morgan-Kaufmann, 1992, ISBN  1-55860-214-3

externa länkar