Przetwarzanie transakcji - Transaction processing

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

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, szereg powiązanych operacji zapewnia, że ​​otrzymasz książkę, a księgarnia dostanie Twoje pieniądze. Jeśli jednak pojedyncza operacja w serii nie powiedzie się podczas wymiany, nie powiedzie się cała wymiana. Nie dostaniesz książki, a księgarnia nie dostanie twoich pieniędzy. Technologia odpowiedzialna za zrównoważenie i przewidywalność giełdy nazywa się przetwarzaniem transakcji. Transakcje zapewniają, że zasoby zorientowane na dane nie są trwale aktualizowane, chyba że wszystkie operacje w jednostce transakcyjnej zostaną pomyślnie zakończone. Łącząc zestaw powiązanych operacji w jednostkę, która całkowicie się powiedzie lub całkowicie zawiedzie, można uprościć odzyskiwanie błędów i zwiększyć niezawodność aplikacji.

Systemy przetwarzania transakcji składają się ze sprzętu komputerowego i oprogramowania obsługującego aplikację zorientowaną na transakcje, 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 lotniczymi, listą płac, aktami pracowniczymi, produkcją i wysyłką.

Ponieważ większość, choć niekoniecznie wszystkie, przetwarzanie transakcji jest obecnie interaktywne, 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, zapewniając, że współzależne operacje w systemie zostały pomyślnie zakończone lub wszystkie pomyślnie anulowane.

Rozważmy na przykład typową transakcję bankową, która polega na przeniesieniu 700 USD z konta oszczędnościowego klienta na konto czekowe klienta. Transakcja ta obejmuje co najmniej dwie oddzielne operacje w ujęciu komputerowym: obciążenie rachunku oszczędnościowego kwotą 700 zł oraz uznanie rachunku czekowego kwotą 700 zł. Jeśli jedna operacja się powiedzie, a druga nie, księgi bankowe nie zostaną zbilansowane na koniec dnia. Dlatego musi istnieć sposób, aby albo obie operacje zakończyły się sukcesem, albo obie zakończyły się niepowodzeniem, tak aby nigdy nie było żadnej niespójności w bazie danych banku jako całości.

Przetwarzanie transakcji łączy wiele pojedynczych operacji w jedną niepodzielną transakcję i zapewnia, że ​​albo wszystkie operacje w transakcji zostaną zakończone bez błędów, albo żadna z nich nie zostanie zakończona. Jeśli niektóre operacje zostaną zakończone, ale przy próbie wykonania innych wystąpią 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 którym 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ętowymi i programowymi, które mogą spowodować częściowe zakończenie transakcji. Jeśli system komputerowy ulegnie awarii w trakcie transakcji, system przetwarzania transakcji gwarantuje, że wszystkie operacje w niezatwierdzonych transakcjach zostaną anulowane.

Na ogół transakcje są wystawiane jednocześnie. Jeśli się nakładają (tj. muszą 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 swoim koncie oszczędnościowym 150 zł i próbuje przelać 100 zł innej osobie, jednocześnie przenosząc 100 zł na rachunek bieżący, tylko jedna z nich może się udać. Jednak wymuszenie sekwencyjnego przetwarzania transakcji jest nieefektywne. Dlatego 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 osiągnąć, wykonując transakcje sekwencyjnie w dowolnej kolejności (właściwość o nazwie serializability ). W naszym przykładzie oznacza to, że bez względu na to, która transakcja została wystawiona jako pierwsza, albo przelew do innej osoby, albo przeniesienie na rachunek bieżący się powiedzie, a druga się nie powiedzie.

Metodologia

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

Wycofanie

Systemy przetwarzania transakcji zapewniają integralność bazy danych, rejestrując stany pośrednie bazy danych podczas jej modyfikacji, a następnie używając tych rekordów 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 dokonać jakichkolwiek modyfikacji (jest to czasami nazywane obrazem przed ). Jeśli jakakolwiek część transakcji nie powiedzie się przed jej zatwierdzeniem, kopie te są używane do przywrócenia bazy danych do stanu, w jakim była przed rozpoczęciem transakcji.

Do przodu

Możliwe jest również prowadzenie oddzielnego dziennika wszystkich zmian w systemie zarządzania bazą danych. (czasami nazywane po obrazach ). Nie jest to wymagane w przypadku wycofywania nieudanych transakcji, ale jest przydatne do aktualizowania systemu zarządzania bazą danych w przypadku awarii bazy danych, dlatego udostępniają ją niektóre systemy przetwarzania transakcji. 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 dokonanych od momentu utworzenia kopii zapasowej. Jednak po przywróceniu systemu zarządzania bazą danych można zastosować dziennik obrazów po obrazach do bazy danych ( rollforward ), aby zaktualizować system zarządzania bazą danych. Wszystkie transakcje w toku w momencie niepowodzenia można następnie wycofać. Rezultatem jest baza danych w spójnym, znanym stanie, która zawiera wyniki wszystkich transakcji popełnionych do momentu awarii.

Zakleszczenia

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 wykonanie. 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 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 przejść do przodu. Systemy przetwarzania transakcji są zaprojektowane do wykrywania tych zakleszczeń, gdy się pojawią. Zazwyczaj 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 zablokowanych transakcji zostanie anulowana, wycofana i automatycznie uruchomiona ponownie po krótkim opóźnieniu.

Zakleszczenia mogą również wystąpić w przypadku co najmniej trzech transakcji. Im więcej transakcji jest zaangażowanych, tym trudniej 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 są niepożądane, transakcja kompensacyjna jest często używana do cofania nieudanych transakcji i przywracania systemu do poprzedniego stanu.

Kryteria KWASU

Jim Gray zdefiniował właściwości niezawodnego systemu transakcyjnego pod koniec lat 70. pod akronimem ACID — atomowość, spójność, izolacja i trwałość.

Atomowość

Zmiany stanu transakcji są niepodzielne: albo wszystko się dzieje, albo nic się nie dzieje. Zmiany te obejmują zmiany w bazie danych, komunikaty i działania na przetwornikach.

Spójność

Spójność : Transakcja to poprawna transformacja stanu. Działania podejmowane jako grupa nie naruszają żadnych ograniczeń integralności skojarzonych ze stanem.

Izolacja

Mimo że transakcje są wykonywane jednocześnie, 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 zachowują zmiany.

Korzyści

Przetwarzanie transakcji ma następujące zalety:

  • Umożliwia udostępnianie zasobów komputera wielu użytkownikom
  • Przesuwa czas przetwarzania zadań do czasu, gdy zasoby obliczeniowe są mniej zajęte
  • Pozwala uniknąć bezczynności zasobów obliczeniowych bez interakcji człowieka i nadzoru minuta po minucie
  • Jest stosowany 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 instalacji
  • Brakuje standardowych formatów
  • Niekompatybilność sprzętu i oprogramowania

Realizacje

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 . Komputery typu klient-serwer wdrożyły podobne zasady w latach 80. z mieszanym sukcesem. Jednak w ostatnich latach rozproszony model klient-serwer stał się znacznie trudniejszy do utrzymania. Ponieważ liczba transakcji rosła w odpowiedzi na różne usługi online (zwłaszcza WWW ), 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 może 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 przedsięwzięć 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ędniać również otwarte standardy branżowe .

Termin ekstremalne przetwarzanie transakcyjne (XTP) został użyty do opisania systemów przetwarzania transakcji o niezwykle trudnych wymaganiach, w szczególności wymagania dotyczące przepustowości (transakcje na sekundę). Takie systemy mogą być implementowane za pośrednictwem architektury rozproszonej lub klastrowej. 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 — koncepcje 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

Zewnętrzne linki