Przetwarzanie transakcji - Transaction processing

Z Wikipedii, wolnej encyklopedii

Przetwarzanie transakcji to przetwarzanie informacji w informatyce, które jest podzielone na indywidualne, niepodzielne operacje zwane transakcjami . Każda transakcja musi zakończyć się sukcesem lub niepowodzeniem jako całość; nigdy nie może być tylko częściowo zakończona.

Na przykład, kupując książkę w księgarni internetowej, wymieniasz pieniądze (w formie kredytu) na książkę. Jeśli twój kredyt jest dobry, seria powiązanych operacji gwarantuje, że otrzymasz książkę, a księgarnia otrzyma pieniądze. Jeśli jednak pojedyncza operacja w serii zakończy się niepowodzeniem podczas wymiany, cała wymiana nie powiedzie się. Nie dostajesz książki, a księgarnia nie dostaje pieniędzy. Technologia odpowiedzialna za zrównoważenie i przewidywalność wymiany nazywa się przetwarzaniem transakcji. Transakcje zapewniają, że zasoby zorientowane na dane nie są stale aktualizowane, chyba że wszystkie operacje w jednostce transakcyjnej zakończą się pomyślnie. Łącząc zestaw powiązanych operacji w jednostkę, która całkowicie się powiedzie lub całkowicie zawodzi, można uprościć odzyskiwanie po błędzie i zwiększyć niezawodność aplikacji.

Systemy przetwarzania transakcji składają się ze sprzętu komputerowego i oprogramowania obsługującego aplikację transakcyjną, która wykonuje rutynowe transakcje niezbędne do prowadzenia działalności. Przykłady obejmują systemy, które zarządzają wprowadzaniem zamówień sprzedaży, rezerwacjami linii lotniczych, listami płac, dokumentacją pracowniczą, produkcją i wysyłką.

Ponieważ większość dzisiejszych przetwarzania transakcji, choć niekoniecznie wszystkie, ma charakter interaktywny, termin ten jest często traktowany jako synonim przetwarzania transakcji online .

Opis

Przetwarzanie transakcji ma na celu utrzymanie integralności systemu (zazwyczaj bazy danych lub niektórych nowoczesnych systemów plików ) w znanym, spójnym stanie, poprzez zapewnienie, że współzależne operacje w systemie są albo wszystkie zakończone pomyślnie, albo wszystkie pomyślnie anulowane.

Na przykład rozważmy typową transakcję bankową, która obejmuje przeniesienie 700 USD z konta oszczędnościowego klienta na rachunek bieżący klienta. Ta transakcja obejmuje co najmniej dwie oddzielne operacje w kategoriach komputerowych: obciążenie rachunku oszczędnościowego kwotą 700 USD i uznanie rachunku rozliczeniowego kwotą 700 USD. Jeśli jedna operacja się powiedzie, a druga nie, księgi banku nie będą się bilansować na koniec dnia. Dlatego musi istnieć sposób na zapewnienie, że obie operacje zakończą się sukcesem lub obie zakończą się niepowodzeniem, tak aby nigdy nie było żadnych niespójności w bazie danych banku jako całości.

Przetwarzanie transakcji łączy wiele pojedynczych operacji w jedną, niepodzielną transakcję i zapewnia, że ​​wszystkie operacje w transakcji są zakończone bez błędów lub żadna z nich nie jest. Jeśli niektóre operacje są zakończone, ale przy próbie wykonania innych pojawiają się błędy, system przetwarzania transakcji „wycofuje” wszystkie operacje transakcji (w tym te zakończone sukcesem), usuwając w ten sposób wszystkie ślady transakcji i przywracając system do spójnego, znanego stanu, w jakim znajdował się przed rozpoczęciem przetwarzania transakcji. Jeśli wszystkie operacje transakcji zostaną zakończone pomyślnie, transakcja zostaje popełnione przez system, a wszystkie zmiany w bazie danych są stałe; transakcja nie może zostać wycofana po wykonaniu tej czynności.

Przetwarzanie transakcji chroni przed błędami sprzętu i oprogramowania, które mogą spowodować, że transakcja będzie częściowo zakończona. Jeśli system komputerowy ulegnie awarii w trakcie transakcji, system przetwarzania transakcji gwarantuje, że wszystkie operacje w niezatwierdzonych transakcjach zostaną anulowane.

Zasadniczo transakcje są wydawane jednocześnie. Jeśli nakładają się na siebie (tj. Trzeba dotykać tej samej części bazy danych), może to powodować konflikty. Na przykład, jeśli klient wymieniony w powyższym przykładzie ma na koncie oszczędnościowym 150 USD i próbuje przelać 100 USD innej osobie, jednocześnie przenosząc 100 USD na rachunek bieżący, tylko jednemu z nich powiedzie się. Jednak wymuszanie sekwencyjnego przetwarzania transakcji jest nieefektywne. W związku z tym współbieżne implementacje przetwarzania transakcji są zaprogramowane tak, aby zagwarantować, że wynik końcowy odzwierciedla wynik wolny od konfliktów, taki sam, jaki można by osiągnąć, wykonując transakcje sekwencyjnie w dowolnej kolejności (właściwość zwana serializowalnością ). W naszym przykładzie oznacza to, że bez względu na to, która transakcja została wydana jako pierwsza, albo przelew na inną osobę, albo przeniesienie na rachunek bieżący się powiedzie, a druga nie.

Metodologia

Podstawowe zasady wszystkich systemów przetwarzania transakcji są takie same. Jednak terminologia może się różnić w zależności od systemu przetwarzania transakcji, a użyte poniżej terminy niekoniecznie są uniwersalne.

Wycofywanie

Systemy przetwarzania transakcji zapewniają integralność bazy danych, rejestrując stany pośrednie bazy danych podczas jej modyfikacji, a następnie wykorzystując te rekordy do przywrócenia bazy danych do znanego stanu, jeśli transakcja nie może zostać zatwierdzona. Na przykład kopie informacji w bazie danych przed jej modyfikacją przez transakcję są odkładane przez system, zanim transakcja będzie mogła wprowadzić jakiekolwiek modyfikacje (jest to czasami nazywane obrazem przed ). Jeśli jakakolwiek część transakcji nie powiedzie się przed jej zatwierdzeniem, kopie te służą do przywrócenia bazy danych do stanu, w jakim znajdowała się przed rozpoczęciem transakcji.

Do przodu

Możliwe jest również prowadzenie oddzielnego dziennika wszystkich modyfikacji systemu zarządzania bazami danych. (czasami nazywane obrazami ). Nie jest to wymagane do wycofywania nieudanych transakcji, ale jest przydatne do aktualizacji systemu zarządzania bazą danych w przypadku awarii bazy danych, więc niektóre systemy przetwarzania transakcji zapewniają to. Jeśli system zarządzania bazą danych ulegnie całkowitej awarii, należy go przywrócić z najnowszej kopii zapasowej. Kopia zapasowa nie będzie odzwierciedlać transakcji zatwierdzonych od momentu utworzenia kopii zapasowej. Jednak po przywróceniu systemu zarządzania bazą danych dziennik obrazów następczych można zastosować do bazy danych ( rollforward ), aby zaktualizować system zarządzania bazą danych. Wszystkie transakcje w toku w momencie awarii można następnie wycofać. Rezultatem jest baza danych w spójnym, znanym stanie, która zawiera wyniki wszystkich transakcji popełnionych do momentu niepowodzenia.

Impas

W niektórych przypadkach dwie transakcje mogą w trakcie ich przetwarzania próbować uzyskać dostęp do tej samej części bazy danych w tym samym czasie, w sposób uniemożliwiający ich kontynuację. Na przykład transakcja A może uzyskać dostęp do części X bazy danych, a transakcja B może uzyskać dostęp do części Y bazy danych. Jeśli w tym momencie transakcja A następnie próbuje uzyskać dostęp do części Y bazy danych, podczas gdy transakcja B próbuje uzyskać dostęp do części X, następuje zakleszczenie i żadna transakcja nie może ruszyć do przodu. Systemy przetwarzania transakcji są zaprojektowane tak, aby wykrywać te zakleszczenia, gdy się pojawią. Zwykle obie transakcje zostaną anulowane i wycofane, a następnie zostaną uruchomione ponownie w innej kolejności, automatycznie, aby zakleszczenie się nie powtórzyło. Czasami tylko jedna z zakleszczonych transakcji zostanie anulowana, wycofana i automatycznie uruchomiona ponownie po krótkim opóźnieniu.

Zakleszczenia mogą również wystąpić między co najmniej trzema transakcjami. Im więcej transakcji jest zaangażowanych, tym trudniej jest je wykryć, do tego stopnia, że ​​systemy przetwarzania transakcji stwierdzają, że istnieje praktyczny limit zakleszczeń, które mogą wykryć.

Transakcja kompensacyjna

W systemach, w których mechanizmy zatwierdzania i wycofywania nie są dostępne lub niepożądane, transakcja kompensacyjna jest często używana do cofania nieudanych transakcji i przywracania systemu do poprzedniego stanu.

Kryteria ACID

Jim Gray zdefiniował właściwości niezawodnego systemu transakcyjnego w późnych latach siedemdziesiątych pod akronimem ACID - atomowość, spójność, izolacja i trwałość.

Atomowość

Zmiany stanu transakcji są atomowe: albo wszystkie się zdarzają, albo nic się nie dzieje. Te zmiany obejmują zmiany bazy danych, komunikaty i działania na przetwornikach.

Konsystencja

Spójność : transakcja to poprawna transformacja stanu. Działania podejmowane jako grupa nie naruszają żadnych ograniczeń integralności związanych z państwem.

Izolacja

Mimo że transakcje są wykonywane jednocześnie, dla każdej transakcji T wydaje się, że inne zostały wykonane albo przed T, albo po T, ale nie obie.

Trwałość

Po pomyślnym zakończeniu transakcji (zatwierdzeniu) jej zmiany w bazie danych przetrwają awarie i zachowają zmiany.

Korzyści

Przetwarzanie transakcji ma następujące zalety:

  • Umożliwia udostępnianie zasobów komputera wielu użytkownikom
  • Przesuwa czas przetwarzania zadania do mniejszego obciążenia zasobów obliczeniowych
  • Pozwala uniknąć bezczynności zasobów obliczeniowych bez interakcji i nadzoru z minuty na minutę
  • Jest używany w drogich klasach komputerów, aby pomóc zamortyzować koszty, utrzymując wysokie wskaźniki wykorzystania tych drogich zasobów

Niedogodności

  • Mają stosunkowo drogie koszty konfiguracji
  • Brakuje standardowych formatów
  • Niezgodność sprzętu i oprogramowania

Wdrożenia

Standardowe przetwarzanie transakcji oprogramowanie , takie jak IBM „s Management Information System , został opracowany w 1960 roku i był często ściśle sprzężony z poszczególnych systemów zarządzania bazami danych . Przetwarzanie klient-serwer wdrożyło podobne zasady w latach 80. z mieszanymi sukcesami. Jednak w ostatnich latach rozproszony model klient-serwer stał się znacznie trudniejszy w utrzymaniu. Ponieważ liczba transakcji rosła w odpowiedzi na różne usługi online (zwłaszcza Internet ), pojedyncza rozproszona baza danych nie była praktycznym rozwiązaniem. Ponadto większość systemów online składa się z całego zestawu programów działających razem, w przeciwieństwie do ścisłego modelu klient-serwer, w którym pojedynczy serwer mógł obsługiwać przetwarzanie transakcji. Obecnie dostępnych jest wiele systemów przetwarzania transakcji, które działają na poziomie międzyprogramowym i które skalują się do dużych systemów, w tym komputerów mainframe .

Jednym z rozwiązań jest X / Open Distributed Transaction Processing (DTP) (patrz także Java Transaction API (JTA). Jednak zastrzeżone środowiska przetwarzania transakcji, takie jak IBM CICS, są nadal bardzo popularne, chociaż CICS ewoluował, aby uwzględnić również otwarte standardy branżowe .

Termin ekstremalne przetwarzanie transakcji (XTP) został użyty do opisania systemów przetwarzania transakcji o niezwykle trudnych wymaganiach, w szczególności wymaganiach dotyczących przepustowości (liczba transakcji na sekundę). Takie systemy mogą być wdrażane za pomocą architektur rozproszonych lub klastrowych. Był używany co najmniej do 2011 roku.

Bibliografia

Dalsza lektura

  • Gerhard Weikum, Gottfried Vossen, Transakcyjne systemy informacyjne: teoria, algorytmy i praktyka kontroli i odzyskiwania współbieżności , Morgan Kaufmann, 2002, ISBN   1-55860-508-8
  • Jim Gray , Andreas Reuter, Przetwarzanie transakcji - pojęcia i techniki, 1993, Morgan Kaufmann, ISBN   1-55860-190-2
  • Philip A. Bernstein, Eric Newcomer, Zasady przetwarzania transakcji, 1997, Morgan Kaufmann, ISBN   1-55860-415-4
  • Ahmed K. Elmagarmid (redaktor), Modele transakcji dla zaawansowanych aplikacji baz danych, Morgan-Kaufmann, 1992, ISBN   1-55860-214-3

Linki zewnętrzne