Monitory transakcji

Wszystkie rekordy wydajności baz danych bije się przy użyciu monitorów transakcji

Wszystkie rekordy wydajności baz danych bije się przy użyciu monitorów transakcji

Transakcje to coś więcej niż operacje w biznesie: to także filozofia projektowania aplikacji informatycznych, gwarantująca solidność systemów rozproszonych. Korzystanie z pośrednictwa monitora transakcji zapewnia zarządzanie transakcjami, poczynając od stacji klienta, przez wiele serwerów i z powrotem do stacji klienta. Po zakończeniu transakcji wszystkie uczestniczące w niej strony są zgodne co do tego czy transakcja się udała, czy nie. Transakcja to coś w rodzaju kontraktu, wiążącego klienta z serwerami.

Właściwości transakcji

Transakcja w rozumieniu informatycznym ma cztery podstawowe właściwości zawarte w skrócie ACID.

- Atomowość (A - Atomicity) polega na tym, że stanowi niepodzielną jednostkę pracy: udaje się jedynie w całości albo wcale. W ramach transakcji można wykonać wiele różnych czynności - odczytać dane z jednej bazy, uaktualnić stan innej bazy danych, wyświetlić wyniki na stacji klienta. Atomowość transakcji jest definiowana z perspektywy jej

konsumenta.

- Spójność (C - Consistency) polega na tym, że po wykonaniu transakcji stan systemu jest spójny (jeżeli transakcja ma zmienić stan konta nadawcy i odbiorcy, musi wykonać te czynności). Jeżeli transakcja nie może osiągnąć spójnego stanu systemu, musi go przywrócić do stanu początkowego.

- Izolacja (I - Isolation) oznacza, że na stan transakcji nie mają wpływu inne transakcje jednocześnie wykonujące się w systemie. System obsługujący wielu użytkowników musi - z punktu widzenia jednego użytkownika - zachowywać się dokładnie, tak jakby obsługiwał tylko jego.

- Trwałość (D - Durability) - efekty transakcji są stabilne po jej zakończeniu.

Transakcja jest podstawową jednostką współbieżności działania systemu, odzyskiwania jego stanu po awarii i spójności. Jednakże aby system klient/serwer spełniał warunki transakcyjności, wszystkie aplikacje muszą stosować się do dyscypliny transakcyjnej.

Różne rodzaje transakcji

Istnieje kilka modeli systemu transakcyjnego. Najczęściej stosowany, najpopularniejszy i najłatwiejszy w realizacji jest model transakcji prostej (lub płaskiej): wszystkie operacje są wykonywane na tym samym poziomie. Zaczynają się poleceniem "begin transaction", a kończą poleceniem "commit" (transakcja udana) lub "rollback" (transakcja nieudana). W ramach transakcji prostej nie może nastąpić rozpoczęcie żadnej subtransakcji ani nie powinno mieć miejsce współdziałanie z użytkownikiem systemu, gdyż każda transakcja monopolizuje wiele zasobów systemowych. Długo trwająca transakcja może unieruchomić inne aplikacje lub wręcz zablokować cały system. Podobnie w ramach prostej transakcji nie da się wykonać operacji wymagających uaktualniania dużej liczby rekordów: w razie drobnego błędu

trzeba będzie wycofać pracę wykonywaną przez wiele godzin.

Transakcje łańcuchowe polegają na wykonywaniu operacji w długim ciągu z okresowym zapisywaniem stanu w tzw. punktach synchronizacji (syncpoint), będących wersją polecenia "commit". Nieudana transakcja cząstkowa oznacza cofnięcie się do ostatniego punktu synchronizacji. Jeżeli jednak wystąpi awaria, konieczne jest odwrócenie akcji całego ciągu.

Inny rodzaj transakcji łańcuchowej polega na rozpoczęciu całego łańcucha i okresowym zapisywaniu za pomocą cząstkowych poleceń "commit". W razie awarii następuje powrót do ostatniego takiego polecenia, a więc nie trzeba wycofywać wszystkich poprzednich działań. W specjalnym przypadku tzw. sagi, można - na żądanie użytkownika - wycofać działanie wszystkich operacji do samego początku łańcucha.

Transakcje zagnieżdżone hierarchicznie są najtrudniejsze zarówno koncepcyjnie, jak realizacyjnie. Co zrobić, gdy sukcesem kończy się subtransakcja, natomiast transakcja główna powinna być wycofana? Co zrobić z transakcją główną, gdy nie udaje się subtransakcja?

Rola monitora transakcji

Monitor transakcji jest specjalnym programem przeznaczonym do zarządzania transakcjami, szczególnie przydatnym w środowisku przetwarzania rozproszonego. Monitor transakcji nie jest wynalazkiem nowym: pierwsze monitory transakcji pojawiły się na mainframe'ach i zapewniały przede wszystkim bezpieczeństwo, równomierny rozdział obciążenia systemu i sprawną obsługę wielu użytkowników.

Jednym z ważniejszych zadań monitora transakcji w środowisku rozproszonym jest nadzór nad każdą transakcją, poczynając od miejsca jej powstania w stacji klienta, przez wszystkie uczestniczące w niej zasoby (serwery, bazy danych, sieć), rozdzielanie obciążenia i restart systemu po awarii.

Monitor transakcji a system operacyjny

Historycznie monitory transakcji służyły do zarządzania aplikacjami obsługującymi tysiące klientów. Wyobraźmy sobie typowy system komputerowy z działającym na nim serwerem bazy danych. Każdy dostęp stacji klienta do serwera bazy danych polega na obsłudze podłączenia do niego (sesji), wywołaniu procesu bazodanowego, przydzieleniu pamięci buforowej dla bazy i otwarciu bazy (co wiąże się z otwarciem kilku lub kilkunastu plików), a w końcu obsłudze żądania klienta. Typowy proces połączeniowy wymaga 50 KB pamięci, a otwarcie bazy dla klienta wymaga co najmniej 500 KB. Jeżeli jednocześnie działa 1000 klientów, zapotrzebowanie na zasoby systemowe jest tak duże (1000 połączeń, 1000 procesów bazy danych, ponad 500 MB pamięci, kilka tysięcy otwartych plików), że żaden system operacyjny nie jest w stanie sobie z tym poradzić.

Co robi monitor transakcji?

Monitor transakcji jest programem pośredniczącym między serwerem bazy danych a klientami. Jednoczesne działanie użytkowników systemu nie oznacza, że istotnie żądają oni dostępu do bazy dokładnie w tym samym momencie. Dla ich obsłużenia monitor transakcji otwiera pewną pulę połączeń z bazą i taką liczbę procesów serwera bazy danych. Następnie współdzieli te otwarte połączenia i procesy między wszystkimi obsługiwanymi klientami. Jeżeli więc we wspomnianym systemie z 1000 użytkowników, monitor transakcji otworzy 50 połączeń, to będzie musiał dzielić je między 20 klientami, ale zmaleją 20-krotnie wymagania na zasoby systemowe. Potrzeba będzie ok. 30 MB pamięci RAM i kilkaset jednocześnie otwartych plików.

Zalety monitora transakcji

Koszt. Prawie każdy potencjalny klient zainteresowany monitorami transakcji oburza się na jego wysoką cenę: zależnie od systemu operacyjnego i rodzaju klientów może ona wynosić od kilkuset USD do kilkudziesięciu, a nawet kilkuset tysięcy USD. Do tego trzeba doliczyć koszty monitora-klienta, działającego na stacjach roboczych z Windows (OS/2, Unix). Tymczasem łatwo jest wykazać, że użycie monitora transakcji może obniżyć całkowity koszt systemu. Jeżeli mamy obsługiwać 1000 klientów bez monitora transakcji, musimy zakupić serwer bazy danych zdolny do obsługi takiej liczby klientów; jego koszt jest wysoki. Umiejętne użycie monitora transakcji pozwoli ograniczyć się do zakupu znacznie tańszego serwera bazy danych specyfikowanego dla np. 50 lub 100 jednoczesnych sesji klienta. Proszę zauważyć, że wielu producentów określa koszt systemu zależnie od liczby użytkowników lub liczby sesji.

Rozdział obciążenia. Monitory transakcji są w stanie decydować o priorytetach obsługi klientów (np. w czasie godzin pracy pierwszeństwo mają użytkownicy interaktywni, poza nimi obsługuje się także prace wsadowe), rozdzielać statycznie lub dynamicznie obciążenie na różne serwery bazy danych pracujące w systemie (kierując zapytania wyłącznie do kopii bazy, a uaktualnienia do bazy głównej).

Wysoka dostępność. Monitory transakcji zostały opracowane z myślą o radzeniu sobie ze wszelkiego rodzaju awariami, co umożliwia tworzenie systemu komputerowego do obsługi transakcji bez punktów potencjalnej awarii.

Ochrona aplikacji. Monitory transakcji zapewniają ochronę zasobów przed źle działającymi aplikacjami i aplikacji między sobą, tworząc swoiste ściany ogniowe.

Produkty

Trzy produkty mają ponad 90% udział w rynku monitorów transakcji: IBM CICS, BEA Tuxedo i Transarc Encina. Inne produkty działają na ograniczonej liczbie platform sprzętowych lub systemowych i ich udział w rynku jest mały.

Najbardziej znany i najpopularniejszy monitor transakcji to CICS, opracowany i stosowany w produktach IBM. Spośród wszystkich opracowanych do tej pory programów dla dowolnego typu komputera - CICS przyniósł swemu producentowi największy dochód. Ocenia się, że obecnie działa ponad 40 mln aplikacji wykorzystujących CICS! Działa on na wszystkich platformach IBM-owskich, a ostatnio pojawiła się jego realizacja dla systemów HP z serii 9000.

W firmie AT&T opracowano popularny w systemach unixowych monitor transakcji Tuxedo, sprzedany następnie do Novella, a ostatnio przejęty przez firmę BEA, zajmującą się jedynie jego rozwojem i promocją.

Firma Transarc (w której znaczny udział ma IBM) oferuje monitor transakcji Encina, dostępny dla wielu platform sprzętowych i systemowych. Stanowi on także podstawę standardów przemysłowych w zakresie zestawu funkcji API do obsługi transakcji.


TOP 200