Marek IWANIAK, Włodzimierz KHADZHYNOV Wydział Elektroniki i Informatyki, Politechnika Koszalińska E mail: marek.iwaniak@tu.koszalin.pl, hadginov@ie.tu.koszalin.pl 1. Wstęp Zastosowanie kolorowej sieci Petriego do modelowania transakcji rozproszonej Teoria i praktyka rozproszonych baz danych jest bardzo złożonym zagadnieniem. Przez wiele lat badań nie udało się jednak wykształcić standardu, który wspomógłby projektowanie, implementacje i wdrażanie rozwiązań opartych o rozproszone bazy danych. W szczególności brak obowiązującego standardu dla środowiska heterogenicznego. Teoria sieci Petriego znajduje zastosowanie w modelowaniu i analizie procesów współbieżnych. Strukturę i działanie sieci Petriego można przedstawić w postaci algebraicznej i przetwarzać ją z wykorzystaniem metod numerycznych. Poszukiwanym rozwiązaniem jest możliwość projektowania, modelowania i weryfikowania procesów zachodzących w rozproszonej bazie danych za pomocą sieci Petriego. Tak opracowana i sprawdzona sieć, mogłaby posłużyć do nadzorowania przepływu danych w węzłach rozproszonej bazy danych lub do generowania konfiguracji zapewniających realizację zaprojektowanych procesów. Praca ta jest kontynuacją badań rozpoczętych w pracy [1], w której przedstawiono propozycje stworzenia modelu transakcji rozproszonej za pomocą zwykłej sieci Petriego. W trakcie budowania drzewa osiągalnych rozwiązań dla zaproponowanej sieci wykryto szereg niepożądanych stanów sieci oraz konfliktów odpaleń. Dla uniknięcia wykrytych nieprawidłowości zaproponowano wykonanie modelu za pomocą kolorowej sieci Petriego. Zaproponowane rozwiązanie przedstawione zostało w niniejszej pracy. 2. Sieci Petriego Teoria matematyczna sieci Petriego została stworzona przez Carla Adama Petriego. Znajduje ona szerokie zastosowanie w analizie oraz modelowaniu. Podstawową siecią Petriego jest sieć zwyczajna (ang. ordinary) określana również jako sieć klasy pozycja/tranzycja. Jej graficzną reprezentacją jest graf dwudzielny, składający się z dwóch typów węzłów łączonych łukami. Węzły te to: miejsca (pozycje, ang. places) - reprezentowane przez okręgi tranzycje (przejścia, ang. transitions) - reprezentowane przez prostokąty lub kreski Sieć Petri'ego można przedstawić jako trójkę N = (P, T, D) gdzie: P jest zbiorem miejsc P =m T jest zbiorem tranzycji T = n
48 Marek Iwaniak, Włodzimierz Khadzhynov D jest macierzą incydencji (ang. incidence matrix) o rozmiarze m x n, macierz ta opisuje relacjee zbiorów miejsc oraz tranzycji D - jest macierzą pre-incydencji (ang. pre-incidence matrix) o rozmiarze m x n, zawie- j, czyli łuku ra elementy d - ij = w(i,j) określające wagę łuku wejściowego tranzycji bezpośrednio łączącego miejsce i z tranzycją j D + jest macierzą post-incydencji (ang. post-incidence matrix) o rozmiarze m x n, zawiera elementy d - ij = w(i,j) określające wagę łuku wyjściowego tranzycji j, czyli łurozmiarze m x n, ku bezpośrednio łączącego tranzycje i z miejscem i D = [D - - D + ] jest macierzą incydencji (ang. incidence matrix) o macierz ta tworzona jest poprzez odjęcie macierzy post-incydencji oraz prez odjęcia wag łu- incydencji, zawiera elementy d ij = d - ij - d + ij. Elementy te powstają ków wyjściowych danej tranzycji od wag łuków wejściowych. Znakowaną sieć Periego można przedstawić jako czwórkę PN=(P, T, D, M 0 ), gdzie M 0 : P {0,1,2,..} jest znakowaniem początkowym sieci, oznaczającym rozkład żetonów (znaczników, markerów, tokenów) w miejscach sieci. Dla danego znakowania w sieci mogą zachodzić zdarzenia dynamiczne. Jeżeli w miej- wadze scach wejściowych danej tranzycji zgromadzi się liczba żetonów odpowiadająca łuków wejściowych tej tranzycji, to tranzycja ta może zostać odpalonaa (ang. fired). Po odpaleniu danej tranzycji ze wszystkich jej miejsc wejściowych, zgodnie z wagami łuków wejściowych żetony zostają usunięte. Do miejsc wyjściowych tranzycji żetony zostają dodane zgodnie z wagami łuków wyjściowych. Proces ten przedstawia rysunek 1. Rys. 1. a) tranzycjaa gotowa do odpalenia b) tranzycja po odpaleniu Fig. 1. a) transition ready to be fired b) transtion after firing W sieci może dochodzić do konfliktu odpaleń tranzycji, gdy dla danego znakowania początkowego przygotowanych jest więcej niż jedna tranzycja lub też, gdy odpalenie jednej lub więcej tranzycji uniemożliwia odpalenie pozostałych tranzycji [3]. W zależności od znakowania początkowego zbiór osiągalnych rozwiązań danej sieci, może być dla każdego znakowania inny. Zbiory możliwych znakowań tworzy się i pre- osiągalności. zentuje za pomocą grafu skierowanego nazywanego również drzewem Reprezentuje w skończony sposób kolejne odpalenia tranzycji oraz zmiany znakowania zwane również wykonaniem sieci. Korzeniem drzewa jest znakowanie początkowe. Węzłami drzewa są znakowania osiągalne, a łuki reprezentują odpaleniee danej tranzycji. Liśćmi drzewa są znakowania końcowe lub powtórzone. Graf osiągalnych rozwiązań można przygotować analizując odpalenia kolejnych tranzy- sieci. cji. Analiza ta może zostać uproszczona dzięki algebraicznym własnościom Ko-
Zastosowanie kolorowej sieci Petriego do modelowania transakcji rozproszonej 49 lumny macierzy D określają zmianę znakowania sieci po odpaleniu tranzycji j. Kolejne znakowania możemy obliczyć wg następującego równania. M k = M k-1 + e[t j ]D (1) Gdzie k=1,2,3,.. a e[t j ] jest wektorem odpalenia zawierającym 1 w pozycji odpowiadającej j-tej tranzycji. W kolorowanej sieci Petriego (Coloured Petri Net) żetonom krążącym wewnątrz sieci przypisane zostają kolory jednoznacznie określające ich typ. W zwyczajnej sieci definiując wagi łuków wejściowych i wyjściowych tranzycji, można było określić przy jakiej ilości żetonów w miejscu wejściowym tranzycji nastąpi jej wzbudzenie oraz ile żetonów zostanie dodanych do miejsc wyjściowych po odpaleniu. Ponieważ zakres typów żetonów w sieci kolorowej zostaje rozszerzony, rozszerzeniu o nowe typy podlegają również wagi łuków oraz macierze incydencji. 3. Zatwierdzanie transakcji rozproszonych Dane przechowywane w bazie danych są w pełni przydatne tylko wtedy gry są pewne i spójne. Każda zmiana wykonywana na danych w bazie powoduje przejście do zupełnie nowego stanu bazy danych. Kolejne zmiany mogą występować równocześnie lub generować błędy. O zapewnienie poprawności i spójnego stanu bazy danych dba mechanizm transakcji. Właściwościami gwarantującymi poprawne przetwarzanie transakcji, są reguły ACID (ang. Atomicity, Consistency, Isolation, Durability) czyli Atomowość, Spójność, Izolacja, Trwałość. Samodzielny DBMS (ang. database managment system) czyli system zarządzania bazą danych ma zaimplementowanego TM (ang. transaction manager) zwanego menadżerem transakcji, dbającego o prawidłowe zarządzenia stanem bazy danych (zagwarantowanie spełnienia reguł ACID) oraz komunikację z klientami. W rozproszonej bazie danych pojawia się dodatkowa specjalistyczna komunikacja pomiędzy innymi menadżerami transakcji. Komunikacja ta zachodzi pomiędzy menadżerem transakcji pełniącym rolę koordynatora, a pozostałymi menadżrami transakcji pełniącymi rolę uczestników transakcji. Sposób komunikacji między koordynatorem, a uczestnikami definiuje określony protokół rozproszonego zatwierdzania. Klasycznym przykładem takiego protokołu jest zatwierdzanie dwufazowe (Two-Phase Commit - 2PC). Protokół ten zgodnie z nazwą realizuje dwie fazy: fazę głosowania i fazę zatwierdzania. Faza głosowania następuje po przesłaniu przez koordynatora zapytania o możliwość zatwierdzenia danej transakcji rozproszonej. Komunikaty zwrotne od uczestników do koordynatora zawierają informacje o gotowości danego uczestnika do zatwierdzenia transakcji. Po zebraniu głosów od wszystkich uczestników następuje faza zatwierdzania lub wycofywania. Jeżeli koordynator otrzymał od wszystkich uczestników potwierdzenie gotowości, wysyła komunikat o globalnym zatwierdzeniu transakcji. Jeżeli którykolwiek uczestnik zagłosuje przeciw zatwierdzeniu transakcji lub w ogóle nie prześle komunikatu (np. z powodu awarii), wówczas koordynator prześle komunikat o globalnym odrzuceniu tej transakcji. Podejmowanie decyzji o zatwierdzeniu tylko przy jednomyślnym głosowaniu jest podstawowym sposobem zapewnienia atomowości transakcji rozproszonej.
50 Marek Iwaniak, Włodzimierz Khadzhynov Rys. 2. Algorytm przedstawiający realizacje protokołu dwufazowego zatwierdzania z jednym uczestnikiem Fig. 2. Two Phase Commit protocol algorithm with one participant Na rysunku 2 przedstawiono protokół dwufazowego zatwierdzania w postaci algorytmu. Przedstawiona reprezentacja została przygotowana na podstawie [2]. Nazwy stanów, komunikatów oraz zapisów do logów pozostały w oryginalnej angielskojęzycznej formie. Okręgi przedstawiają stany procesu koordynatora oraz uczestnika. Prostokąty przedstawiają operacje logowania otrzymanych komunikatów i podjętych decyzji do dziennika systemowego. Strzałki opisują przepływ komunikatów i sterowania. 4. Model protokołu dwufazowego jako kolorowa sieć Petriego Przedstawiony w punkcie 3 protokół 2PC przedstawiony został jako sieć Petriego na rysunku 3. Przykład został stworzony dla przypadku koordynatora i jednego uczestnika transakcji rozproszonej. Miejsca związane z koordynatorem znajdują się przy lewej krawędzi rysunku, a miejsca związane z uczestnikiem znajdują się przy prawej krawędzi rysunku. Miejsca oraz tranzycje zostały wykazane i opisane w tabeli 1. Nazwy miejsc zostały poszerzone o prefiksy K oraz U określające przynależność miejsca do koordynatora lub uczestnika. Liczby przy łukach oznaczają wagi łuków. Ponieważ rysunek nie oddaje kolorów, dokładny rozkład wag wszystkich kolorów zdefiniowanych w sieci przedstawiono w tabelach 2 oraz 3. Zdefiniowano trzy typy (kolory) żetonów: INIT (I) żeton inicju-
Zastosowanie kolorowej sieci Petriego do modelowania transakcji rozproszonej 51 jący proces, COMMIT (C) żeton reprezentujący komunikat commit lub vote-commit, ABORT (A) żeton reprezentujący komunikat abort lub vote-abort. Rys. 3. Sieć Petriego odwzorowująca algorytm protokółu 2PC Fig. 3. Petri Net of 2PC protocol algorithm Tab. 1. Miejsca i tranzycje związane z koordynatorem Tab. 1. Place and transitions of coordinator Miejsca Tranzycje P 0 K_INITIAL T 0 1) wpis do logu (begin_commit), 2) wiadomość do uczestników (prepare) P 1 K_READY T 1 1) wpis do logu (abort), 2) wiad. do uczestników (global-abort) P 2 K_ABORT T 2 1) wpis do logu (commit) 2) wiad. do uczestników (commit) P 3 K_COMMIT T 3 1) wpis do logu (abort), 2) wiad. do koordynatora (vote-abort) P 4 U_INITIAL T 4 1) wpis do logu (ready), 2) wiad. do koordynatora (vote-commit) P 5 U_READY T 5 1) wpis do logu (abort), 2) potwierdzenie do koordynatora P 6 U_ABORT T 6 1) wpis do logu (commit), 2) potwierdzenie do koordynatora P 7 U_COMMIT
52 Marek Iwaniak, Włodzimierz Khadzhynov Tab. 2. Macierz pre-incydencji Tab. 2. Pre Incidence Matrix D - t 0 t 1 t 2 t 3 t 4 t 5 t 6 P 0 INIT 1_I P 1 WAIT 2_I, 1_A 2_I, 1_C P 2 P 3 ABORT COMMIT P 4 INIT 1_I, 1_A 1_I, 1_C P 5 READY 1_A 2_C P 6 P 7 ABORT COMMIT Tab. 3. Macierz post-incydencji Tab. 3. Post Incidence Matrix D + t 0 t 1 t 2 t 3 t 4 t 5 t 6 P 0 INIT P 1 WAIT 1_I 1_I, 1_A 1_I, 1_C P 2 ABORT 1_I P 3 COMMIT 1_C P 4 INITIAL 1_I P 5 READY 1_I 1_C P 6 ABORT 1_A 1_A P 7 COMMIT 1_C Tab. 4. Macierz incydencji Tab. 4. Incidence Matrix D t 0 t 1 t 2 t 3 t 4 t 5 t 6 P 0 INIT -1_I P 1 READY 1_I -2_I, -1_A -2_I, -1_C 1_I, 1_A 1_I, 1_C P 2 ABORT 1_I P 3 COMMIT 1_C P 4 INITIAL 1_I -1_I, -1_A -1_I, -1_C P 5 READY 1_I 1_C -1_A -2_C P 6 ABORT 1_A 1_A P 7 COMMIT 1_C Wiersze Tabeli 2,3,4 zawierają miejsca P 0,P 1,P 2,P 3 reprezentujące stany koordynatora oraz P 4,P 5,P 6,P 7 reprezentujące stany uczestnika. Kolumny t 0 - t 6 reprezentują tranzycje
Zastosowanie kolorowej sieci Petriego do modelowania transakcji rozproszonej 53 (przejścia). Puste komórki oznaczają brak łuków łączących dane miejsce z daną tranzycją. Dla czytelności zrezygnowano z wpisywania w te komórki liczby 0. Tabela 2 przedstawia macierz pre-incydencji, która oznaczana jest jako [D - ]. Zawiera liczby opisujące wagi zdefiniowanych kolorów w łukach wejściowych. danej tranzycji. Tabela 3 przedstawia macierz post-incydencji, która oznaczana jest jako [D + ]. Zawiera liczby opisujące wagi zdefiniowanych kolorów w łukach wyjściowych. danej tranzycji. Tabela 4 przedstawia połączoną macierz incydencji, wyliczoną poprzez odjęcie macierzy postincydencji i pre-incydencji [D + - D - ]. Opisuje ona dynamikę zmian zachodzących w danej sieci Petriego. Zawiera informacje o tym ile, żetonów danego typu zostanie dodanych lub odjętych we wszystkich miejscach po odpaleniu danej tranzycji t j. Mając przygotowana macierz incydencji, po określeniu znakowania początkowego można przystąpić do analizy osiągalnych znakowań sieci. Wyniki takiej analizy w przypadku zwykłej sieci przedstawia się za pomocą grafu (drzewa) osiągalnych rozwiązań, dzięki czemu można przedstawić alternatywne zakowania wynikające np. z jednoczesnego wzbudzenia dwóch tranzycji. Dzięki zastosowaniu kolorowych żetonów możemy przeanalizować odpalenia kolejnych tranzycji dla interesująch dwóch przypadków bez tworzenia grafu. Wyniki analizy osiągalnych rozwiązań zostaną przedstawione w formie tabelarycznej. Tab. 5. Znakowania osiągalne dla znakowania z przypadku 1. Tab. 5. Reachability sets for case 1 marking Miejsca Wzbudzona tranzycja P 0 P 1 P 2 P 3 P 4 P 5 P 6 P 7 M 0 1_I 0 0 0 1_C 0 0 0 T 0 M 1 0 1_I 0 0 1_I,1_C 0 0 0 T 4 M 2 0 2_I,1_C 0 0 0 1_C 0 0 T 2 M 3 0 0 0 1_C 0 2_C 0 0 T 6 M 4 0 0 0 1_C 0 0 0 1_C - Tab. 6. Znakowania osiągalne dla znakowania z przypadku 2 Tab. 6. Reachability sets for case 2 marking Znakowanie Znakowanie Miejsca Wzbudzona tranzycja P 0 P 1 P 2 P 3 P 4 P 5 P 6 P 7 M 0 1_I 0 0 0 1_A 0 0 0 T 0 M 1 0 1_I 0 0 1_I,1_A 0 0 0 T 3 M 2 0 2_I,1_A 0 0 0 0 1_A 0 T 1 M 3 0 0 1_A 0 0 1_A 1_A 0 T 5 M 4 0 0 1_A 0 0 0 2_A 0 - Przypadek 1 zakłada gotowość uczestnika do zatwierdzenia transakcji rozproszonej. Dla realizacji tego przypadku w naszej sieci dla znakowania M 0 w miejscu P 4 umieszczamy jeden żeton typu COMMIT (1_C). Przypadek ten przedstawiony został w tabeli 5. Przypadek 2 zakłada odrzucenie transakcji rozproszonej przez uczestnika. Dla realizacji tego przypadku w naszej sieci dla znakowania M 0 w miejscu P 4 umieszczamy jeden żeton typu ABORT (1_A). Przypadek ten przedstawiony został w tabeli 6.
54 Marek Iwaniak, Włodzimierz Khadzhynov 5. Podsumowanie Problem występowania konfliktów odpaleń oraz niepożądanych znakowań jakie pojawiły się we wcześniejszych badaniach został rozwiązany poprzez zastosowanie kolorowej sieci Petriego. W toku dalszych badań opracowany zostanie model kolorowej sieci Petriego odwzorowujący przypadek transakcji rozproszonej z więcej niż jednym uczestnikiem. Pozwoli to na zbadanie przypadku,w którym głosy za zatwierdzeniem nie będą jednomyślne, czyli atomowość transakcji rozproszonej nie zostanie spełniona. Literatura 1. Iwaniak M., Khadzhynov W.: Wykorzystanie sieci Petriego do modelowania transakcji rozproszonych. VIII Krajowa Konferencja Bazy Danych: Aplikacje i Systemy (BDAS`12) 2. Tamer Özsu M., Valduriez P.: Principles of Distributed Database Systems III ed. Springer 2011 3. Banaszak Z., Majdzik P., Wójcik R.: Procesy współbieżne: modele efektywności funkcjonowania, Rozdział 2 Modele sieci Petriego, str. 93-143, Politechnika Koszalińska, Koszalin 2011 Streszczenie W rozdziale przedstawiono odwzorowanie protokołu 2PC (ang. Two-Phase Commit), czyli protokołu dwufazowego zatwierdzania z wykorzystaniem kolorowej sieci Petriego. Wprowadzone zostały podstawowe pojęcia dotyczące sieci Petriego. Wyjaśniono istotę transakcji w rozproszonych bazach danych oraz opisano działanie protokołu dwufazowego zatwierdzania. Przedstawiono kolorową sieć Petriego odwzorowującą działanie protokołu 2PC wraz macierzami incydencji oraz analizą osiągalnych. Wykorzystanie sieci kolorowej pozwoliło rozwiązać problem postawiony we wcześniejszych badaniach. Usage of coloured Petri Net for distributed transaction modeling Summary In this work the usage of Coloured Petri Net to model and study Two-Phase Commit protocol (2PC) is presented. Brief overview of Petri Nets is introduced. The nature of distributed transactions is explained and 2PC protocol actions are described. The Petri Net of 2PC protocol followed by incidence matrixes and reachability analysis is presented. Usage of Coloured Petri Net resolves the problem stated in previous research work.