Transakcja rozproszona - Distributed transaction

Transakcja rozproszona jest transakcja bazy danych , w których biorą udział dwie lub więcej hostów sieciowych. Zwykle hosty zapewniają zasoby transakcyjne , podczas gdy menedżer transakcji jest odpowiedzialny za tworzenie transakcji globalnej, która obejmuje wszystkie operacje na takich zasobach, i zarządzanie nią. Transakcje rozproszone, jak każda inna transakcja , muszą mieć wszystkie cztery właściwości ACID (atomowość, spójność, izolacja, trwałość) , gdzie atomowość gwarantuje wyniki typu wszystko albo nic dla jednostki pracy (pakiet operacji).

Open Group, konsorcjum dostawców, zaproponowało model X / Open Distributed Transaction Processing (DTP) (X / Open XA), który stał się de facto standardem zachowania komponentów modelu transakcyjnego.

Bazy danych są powszechnymi zasobami transakcyjnymi i często transakcje obejmują kilka takich baz danych. W tym przypadku transakcję rozproszoną można postrzegać jako transakcję bazy danych, którą należy zsynchronizować (lub zapewnić właściwości ACID ) między wieloma uczestniczącymi bazami danych, które są rozproszone w różnych lokalizacjach fizycznych. Właściwość izolacji (I z ACID) stanowi szczególne wyzwanie dla transakcji obejmujących wiele baz danych, ponieważ (globalna) właściwość serializacji może zostać naruszona, nawet jeśli zapewnia ją każda baza danych (patrz również globalna serializowalność ). W praktyce większość komercyjnych systemów baz danych używa silnego ścisłego dwufazowego blokowania (SS2PL) do kontroli współbieżności , co zapewnia globalną serializowalność, jeśli wszystkie uczestniczące bazy danych ją stosują. (zobacz także porządkowanie zobowiązań dla wielu baz danych).

Powszechnym algorytmem zapewniającym poprawne zakończenie transakcji rozproszonej jest zatwierdzanie dwufazowe (2PC). Algorytm ten jest zwykle stosowany do aktualizacji zdolnych do popełnienia w krótkim okresie czasu, od kilku milisekund do kilku minut.

Istnieją również długoterminowe transakcje rozproszone, na przykład transakcja rezerwacji podróży, która polega na rezerwacji lotu, wynajmu samochodu i hotelu. Ponieważ rezerwacja lotu może zająć nawet jeden dzień, aby otrzymać potwierdzenie, zatwierdzenie dwufazowe nie ma tutaj zastosowania, spowoduje to zablokowanie zasobów na tak długi czas. W tym przypadku używane są bardziej wyrafinowane techniki, które obejmują wiele poziomów cofania. Sposób, w jaki można cofnąć rezerwację hotelową dzwoniąc do biura i anulując rezerwację, można zaprojektować system do cofania pewnych operacji (chyba że zostaną nieodwracalnie zakończone).

W praktyce długoterminowe transakcje rozproszone są wdrażane w systemach opartych o Web Services . Zazwyczaj transakcje te wykorzystują zasady kompensacji transakcji , optymizmu i izolacji bez blokowania. Standard X / Open nie obejmuje długotrwałego DTP.

Kilka nowoczesnych technologii, w tym Enterprise Java Beans (EJB) i Microsoft Transaction Server (MTS), w pełni obsługują rozproszone standardy transakcji.

Zobacz też

Bibliografia

  • „Transakcje za pośrednictwem usług internetowych” . Zarchiwizowane od oryginału w dniu 11 maja 2008 r . Źródło 2 maja 2005 r .
  • „Nakrętki i śruby przetwarzania transakcji” . Artykuł o zarządzaniu transakcjami . Źródło 3 maja 2005 r .
  • „Szczegółowe porównanie Enterprise JavaBeans (EJB) i modeli Microsoft Transaction Server (MTS)” .

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