3. Systemy transakcyjne

Termin system transakcyjny jest stosowany zasadniczo w odniesieniu do dużych, kompleksowych systemów obejmujących, między innymi, takie elementy jak: system operacyjny, obsługę sieci, narzędzia do tworzenia i zarządzania aplikacjami, a także bazy danych. Ze względu na podstawowe cechy: rozmiary, funkcjonalność, cele, zadania, systemy charakteryzujące się transakcyjnym stylem przetwarzania są trudne do jednoznacznego sklasyfikowania. Granica między systemem transakcyjnym, a takim, który już za transakcyjny nie może uchodzić, jest w niektórych przypadkach wyjątkowo trudna do uchwycenia i pozostaje raczej w sferze umownej, niż jest wyznaczana przez faktyczne kryteria decydujące o architekturze i funkcjonalności systemu. Niemniej jednak, jeżeli chcielibyśmy sformułować możliwie ogólną definicję systemu transakcyjnego, to brzmiałaby ona w przybliżeniu w następujący sposób3.1:

System transakcyjny dostarcza narzędzi do łatwego lub automatycznego tworzenia, uruchamiania i administrowania aplikacjami. Typowe aplikacje transakcyjne działają w obrębie sieci urządzeń generujących zapytania lub dostarczających dane wejściowe. Na podstawie uzyskanych informacji aplikacja utrzymuje lokalną bazę danych, stanowiącą reprezentację pewnego stanu rzeczywistego. Ponadto, dane generowane przez aplikacje wyzwalają zazwyczaj czynniki ze świata rzeczywistego, odpowiedzialne za zmiany tego stanu. Zadaniem systemu transakcyjnego jest udostępnienie odpowiednich mechanizmów, zapewniających komunikację między aplikacjami i procesami zarządzającymi poszczególnymi typami zasobów systemu, z jednoczesnym zagwarantowaniem własności ACID dla całego cyklu przetwarzania. Aplikacje, bazy danych i sieć ewoluują od kilku dziesięcioleci. W efekcie, nowoczesne systemy w coraz większym stopniu są rozproszone geograficznie, zróżnicowane (heterogeniczne) pod względem sprzętu i oprogramowania oraz muszą spełniać ostre kryteria dotyczące niezawodności, dostępności i czasu odpowiedzi systemu.
W chwili obecnej znajduje zastosowanie wiele systemów transakcyjnych zaprojektowanych pierwotnie dla zupełnie odmiennych celów, takich jak systemy bankowe, telekomunikacyjne, czy też systemy rezerwacji biletów (np. lotniczych). Niemal wszystkie, chociaż spełniają różne funkcje, są jednak oparte na tym samym abstrakcyjnym modelu, charakteryzującym się pionową strukturą (rys. 3.1).

Rysunek 3.1: Wielowarstwowa architektura systemu transakcyjnego. Szarym kolorem zostały zaznaczone elementy dostarczane przez typowy monitor transakcyjny.



\resizebox*{1\textwidth}{!}{\includegraphics{ArchitekturaTPSPl.eps}}



W jego skład wchodzą następujące warstwy (w kolejności od położonej najniżej warstwy sprzętowej):

Warstwa fizyczna (sprzętowa)
obejmuje takie elementy, jak procesory, pamięć fizyczna, kable, światłowody.
Warstwa bazowego systemu operacyjnego
(ang. BOS -- Basic Operating System) stanowi oprogramowanie zarządzające sprzętem. Do jej zadań należy tworzenie i szeregowanie procesów, zarządzanie pamięcią, udostępnianie mechanizmu komunikacji międzyprocesowej (ang. IPC -- Interprocess Communication) oraz tworzenie i obsługa nazw dla lokalnych obiektów. Ponadto, umożliwia ona wykonywanie podstawowych operacji na plikach, jak też realizuje ochronę dostępu na ich poziomie. BOS powinien również zapewnić uwierzytelnianie i autoryzację użytkowników oraz podstawowe mechanizmy komunikacji sieciowej (kontrola sesji, nazwy fizyczne węzłów, porty itp.).
Warstwa transakcyjnego systemu operacyjnego
(ang. TPOS -- Transaction Processing Operating System), której podstawowym zadaniem jest prezentacja obiektów i usług BOS w stylu transakcyjnym. Oznacza to uzupełnienie poszczególnych składowych systemu (procesów, komunikatów, plików oraz sesji komunikacyjnych) o własność ACID. Aby to osiągnąć, udostępnia się zbiór dodatkowych mechanizmów, takich jak: Transakcyjne Zdalne Wywoływanie Procedur (TRPC3.2), interfejs do globalnego rejestru transakcji, trwałe kolejki komunikatów, czy też mechanizm rozproszonych blokad. Ponadto, TPOS przejmuje na siebie obowiązek obsługi całego cyklu przetwarzania transakcji od startu do jej zakończenia lub jej wycofania w razie wystąpienia błędu. Do jego zadań należy również odwzorowywanie danego typu nadchodzących żądań na odpowiedni typ zasobu, a następnie przekazanie zlecenia do wybranego programu zarządcy zasobu (ang. RM -- Resource Manager). Dodatkowo dokonuje on potwierdzenia tożsamości klienta nadawcy, szereguje nadchodzące zlecenia oraz zajmuje się restartem systemu w razie awarii i przywróceniem stanu sprzed jej wystąpienia. Poza tym definiuje zunifikowany interfejs do komunikacji z procesami zarządzającymi określonymi typami zasobów (ang. RMI -- Resource Manager Interface) w taki sposób, by system transakcyjny mógł zostać rozszerzony o nowe usługi i jednocześnie by zasoby te bez przeszkód mogły wykorzystać własność ACID (transakcyjności).
Warstwa usług transakcyjnych
(ang. TRAPS -- Transaction Processing Services) zapewnia środowisko programistyczne dla aplikacji transakcyjnych. Obejmuje ona zestaw zasobów i procesów nimi zarządzających, udostępniający szeroki wachlarz usług, takich jak: systemy bazodanowe (oparte na SQL-u), interfejs kontroli przepływu transakcji, ogólny mechanizm wywołania zdalnych serwerów (włączając w to przezroczystość lokalizacji serwerów). Poza tym udostępniane są interfejsy do monitorowania działania systemu, równoważenia obciążenia oraz zarządzania konfiguracją. Warstwa usług transakcyjnych powinna zawierać również narzędzia programistyczne do tworzenia i testowania aplikacji. Dodatkowo konieczne jest stworzenie obrazu systemu niezawodnego, odpornego na awarie (nawet takie jak katastrofy) i wysoko dostępnego, który realizuje przejścia stanowe w sposób atomowy na dowolnym poziomie abstrakcji.
Warstwa aplikacji
grupuje wszystkie programy budowane w oparciu o cztery wyżej omówione warstwy.



Podrozdziały

K. Kowalewski, R. Żmijewski
1999-12-17