(dtp) xa oraz tx - Modele Inżynierii Teleinformatyki
Transkrypt
(dtp) xa oraz tx - Modele Inżynierii Teleinformatyki
MAREK IWANIAK WŁODZIMIERZ KHADZHYNOV E-mail: [email protected], [email protected] Wydział Elektroniki i Informatyki, Politechnika Koszalińska Śniadeckich 2, 75-453 Koszalin PRZEGLĄD DOSTĘPNYCH IMPLEMENTACJI STANDARDÓW PRZETWARZANIA TRANSAKCJI ROZPROSZONYCH (DTP) XA ORAZ TX Streszczenie: Celem artykułu jest usystematyzowanie wiedzy na temat dostępnych implementacji standardów realizacji transakcji rozproszonych. Kontekst powstania tego artykułu oraz opis wcześniejszych prac badawczych zostały przedstawione we wstępie. W punkcie drugim dokonano przypomnienia definicji transakcji oraz transakcji rozproszonej na podstawie protokołu dwufazowego zatwierdzania. W punkcie trzecim omówiono oparty na protokole dwu-fazowego zatwierdzania model systemu rozproszonego przetwarzania transakcji wprowadzony przez standard X/Open. Opisane zostały komponenty oraz standaryzowane interfejsy XA oraz TX. W punkcie 4 przedstawiono wybrane implementacje wspomnianych standardów razem z opisem ich wymagań oraz ograniczeń. Słowa kluczowe: transakcje, bazy danych, SQL 1. Wstęp W dotychczasowych badaniach zorientowanych na wykorzystanie sieci Petriego w obszarze rozproszonych baz danych z wykorzystaniem zwykłych oraz Kolorowanych sieci Petriego przeprowadzaliśmy modelowanie protokołu 3PC (ang. Three Phase Commit) z jednym uczestnikiem [1], protokołu 2PC (ang. Two Phase Commit) z jednym uczestnikiem [2] oraz protokołu 2PC z wieloma uczestnikami [3]. Badania były owocne oraz pozwoliły na wyciągnięcie szeregu wniosków. Opracowana metodologia przedstawienia transakcji rozproszonej 82 Marek Iwaniak, Włodzimierz Khadzhynov była czysto teoretyczna. Aby uzyskać jej dalszy rozwój należy ją zastosować do odwzorowania działania rzeczywistego systemu rozproszonych baz danych. Dwukrotnie badany przez nas protokół 2PC został wykorzystany w trakcie tworzenia technicznych standardów XA [4] oraz TX [5] przez konsorcjum X/Open (obecnie część The Open Group). Projektując rzeczywisty system rozproszonej bazy danych należy odpowiednio dobrać poszczególne komponenty spełniające wspomniane standardy. W celu usystematyzowania wiedzy oraz wyłonienia optymalnego dla naszych potrzeb zestawu komponentów konieczne stało się przeprowadzenie przeglądu dostępnych implementacji w ramach rozwiązań typu Open-Source, W dalszej części niniejszego opracowania wyjaśniona zostanie istota transakcyjności oraz rozproszonego zatwierdzania transakcji z wykorzystaniem protokołu dwufazowego zatwierdzania. Następnie przedstawiony zostanie architektura systemu przetwarzania transakcji rozproszonej za pomocą, którego opisane zostały obowiązujące standardy publikowane przez The Open Group. W dalszej części przedstawimy przegląd dostępnych implementacji tych standardów. W podsumowaniu przedstawimy wnioski z przeglądu oraz propozycję zestawy komponentów. 2. Zatwierdzanie transakcji rozproszonych Dane przechowywane w bazie danych są w pełni przydatne tylko wtedy gdy 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, Isotation, Durability) czyli Atomowość, Spójność, Izolacja, Trwałość. Na Rys. 1 przedstawiono protokół dwufazowego zatwierdzania w postaci algorytmu. Przedstawiona reprezentacja została przygotowana na podstawie [7]. 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. Przegląd dostępnych implementacji standardów przetwarzania transakcji… 83 Rys. 1. Algorytm przedstawiający realizacje protokołu dwufazowego zatwierdzania z jednym uczestnikiem Samodzielny DBMS (ang. Database management 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żerami transakcji pełniącymi rolę uczestników transakcji. Sposób komu- 84 Marek Iwaniak, Włodzimierz Khadzhynov nikacji między koordynatorem, a uczestnikami definiuje określony protokół rozproszonego zatwierdzania. Klasycznym przykładem takiego protokołu jest zatwierdzanie dwu-fazowe (2 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. 3. Architektura X/Open DTP Publikacje The Open Group [6] posługują się modelem funkcjonalnym określanym jako „X/Open Distributed Transaction Processing architecture”. Model zaprezentowany na Rys.2 przedstawia system rozproszony jako zestaw komponentów oraz interfejsów. Na Rys.2 wykorzystano pierwotne angielskie nazewnictwo. Po omówieniu znaczeń poszczególnych komponentów będziemy posługiwać się przyjętymi skrótami. • AP (Application Program) reprezentuje aplikacje biznesową realizującą funkcje pożądane przez użytkownika końcowego. Dany AP zawiera sekwencje operacji wykorzystujące różne źródła danych takie jak bazy danych lub inne. AP odpowiada za rozpoczęcie oraz zakończenie globalnej transakcji oraz korzysta z zasobów w ramach transakcji. AP rozpoczyna oraz kończy transakcje rozproszoną poprzez interfejs opisany standardem TX. AP komunikuje się z każdym RM za pomocą dedykowanego interfejsu (jeżeli natywnym interfejsem danego zasobu jest język SQL, komunikacja AP-RM powinna odbywać się z wykorzystaniem SQL). • RM (Resource Manager) zarządza pewnymi zasobami komputera, najczęściej jest to system DBMS, ale może nim być również np. system plików. Przegląd dostępnych implementacji standardów przetwarzania transakcji… 85 • TM (Transaction Manager) na żądanie AP dba o realizację globalnej transakcji poprzez wygenerowanie unikalnego identyfikatora transakcji XID, przekazanie go wszystkim RM. Nadzoruje atomowy przebieg transakcji rozproszonej za pomocą dwu-fazowego protokołu zatwierdzania. Rys. 2. Model architektury X/OPEN DTP Schemat działania transakcji rozproszonej w kontekście architektury DTP wygląda następująco. 1. AP informuje TM o rozpoczęciu transakcji. TM generuje identyfikator transakcji XID i go zwraca do AP. 2. TM informuje RM o rozpoczęciu rozproszonej transakcji o identyfikatorze XID. 3. Z wykorzystaniem XID AP łączy się z wszystkimi uczestniczących RM za pomocą natywnego interfejsu wykonując zaplanowane operacje. 4. AP próbuje zatwierdzić transakcje zlecając TM przeprowadzenie procesu zatwierdzania. 5. TM rozpoczyna proces dwu-fazowego zatwierdzania. Zwraca informacje o powodzeniu operacji do AP. 86 Marek Iwaniak, Włodzimierz Khadzhynov 3.1. Standardy XA i TX Standardy te opisują architekturę systemu DTP. Standard XA specyfikuje wszystkie funkcje jakie TM może wykonywać podczas komunikacji z RM oraz jakich wyników może się spodziewać. Wszystkie funkcje w relacji TM-RM rozpoczynają się przedrostka „xa_”. Przedstawia również plik nagłówkowy <xa.h> z definicjami funkcji oraz struktur w języku C. Standard TX specyfikuje wszystkie funkcje jakie AP może wykonać po połączeniu z TM. Wszystkie funkcje w relacji AP-TM rozpoczynają się przedrostka „tx_”. Przedstawia również plik nagłówkowy <tx.h> z definicjami funkcji oraz struktur w języku C oraz jego odpowiednik w języku COBOL. Dodatkowo stawiane są specjalne wymogi wobec poszczególnych komponentów: • AP musi używać TM i przekazywać mu odpowiedzialność z przeprowadzenie transakcji rozproszonej. • AP może mieć rozpoczętą tylko jedną transakcje rozproszoną. • AP nie uczestniczy w procesie zatwierdzania • AP w komunikacji z RM korzysta z natywnego interfejsu tak jakby TM nie istniał. Do TM odwołuje się tylko wtedy gdy konieczne jest przeprowadzenie procesu rozproszonego zatwierdzania. • RM musi móc rozpoznawać identyfikator XID oraz łączyć go operacjami wykonywanymi przez AP, aby zatwierdzić lub wycofać zmiany w trakcie zatwierdzania transakcji nadzorowanej przez TM. 4. Dostępne implementacje Poszukując komponentów do stworzenia rozproszonej bazy danych poszukiwania musimy przeprowadzić dwóch kategoriach: menadżera transakcji (TM), menadżera zasobu (RM). Po za wykazem wymienić można komercyjne produkty takie jak bazy danych Oracle czy Microsoft SqlServer, które jako zaawansowane narzędzia w zależności od konfiguracji mogą pełnić role zarówno TM jak i RM. 4.1. LIXA Projekt LIXA (Libre XA) jest darmowym menadżerem transakcji (TM) rozwijanym jako oprogramowanie OpenSource. Projekt hostowany jest na sourceforge.org od 2009 roku, ostatnia aktualizacja kodu miała miejsce w 2012 roku. Projekt można uruchomić jedynie na platformie UNIXowej, możliwość imple- Przegląd dostępnych implementacji standardów przetwarzania transakcji… 87 mentacji na platformie Windows nie jest planowana oraz wymagałaby gruntownego przebudowania kodu aplikacji ze względu na wykorzystanie specyficznych dla UNIXowego jądra funkcji. Manager transakcji LIXA można wykorzystać w projekcie tworzonym w języku C, ale możliwe jest również zaadaptowania kodu aplikacji do rozszerzenia języka PHP. Pozwala to na przygotowanie własnego AP jako skryptu PHP po uprzednim załadowaniu rozszerzenia LIXA oraz odpowiednich bibliotek pozywających na komunikacje z RM. 4.2. Bitronix Bitronix jest manager transakcji napisanym w języku JAVA. Wspiera zarówno proces zatwierdzania jak i proces odtwarzania transakcji rozproszonej. Możliwość komunikacji z RM ograniczony jest do takich, które posiadają implementacje sterownika opartą klasę javax.sql.XADataSource. Wspierane są zatem następujące bazy danych: Apache Derby, IBM DB2, Informix, Microsoft SQL Server, Oracle, PostgreSQL, Sybase ASE. 4.3. MySQL MySQL od wersji 5.0 wspiera transakcje rozproszone zgodnie ze standardem XA. Możliwość wykorzystanie zasobów bazy danych MySQL ograniczona jest jednak tylko do mechanizmów przechowywania InnoDB. MySQL może pełnić jedynie rolę RM. MySQL posiada pewne ograniczenia w tym jedno poważne, przez które w przypadku zerwania połączenia lub wyłączenia serwera powoduje wycofanie przygotowanej transakcji. W wersji 5.7 ograniczenie to nadal jest wymieniane w dokumentacji. 4.4. PostgresSQL Do PostgreSQL wprowadzono obsługę dwu-fazowego zatwierdzania w wersji 8.3 poprawiając w kolejnych wersjach zauważane zgłaszane błędy. W ramach projektu rozwijane jest rozszerzenie JDBC dedykowane dla tej bazy, a pełniące rolę RM. 5. Podsumowanie Analizując dostępne oprogramowanie możemy zauważyć, że rozbudowane komercyjne programy dosyć szybko po opublikowaniu standardów zostały roz- 88 Marek Iwaniak, Włodzimierz Khadzhynov budowane o niezbędne funkcje. Oprogramowanie Open-Source potrzebowało co najmniej kilka lat więcej, aby zaadaptować nowe standardy. Ze względu na możliwość wykorzystania TM LIXA jako rozszerzenia języka PHP zbudowanie prototypowej aplikacji typu AP komunikującej się z kilkoma RM zapowiada się obiecująco i nie powinno wymagać dużych nakładów pracy. Należy jednak rozważyć przygotowanie systemu DTP z wykorzystaniem dojrzałych RM takich jak PostgreSQL i Oracle XE, TM Bitronix oraz standardu JTA (Java Transaction API). Literatura 1. 2. 3. 4. 5. 6. 7. Iwaniak M., Khadzhynov W.: Wykorzystanie sieci Petriego do modelowania transakcji rozproszonych. Zeszyty naukowe STUDIA INFORMATICA Volume 33, Number 2A (105), strony 255-270, Wydawnictwo Politechniki Śląskiej, 2012 Iwaniak M., Khadzhynov W.: „Zastosowanie kolorowej sieci Petriego do modelowania transakcji rozproszonej”, Modele inżynierii teleinformatyki Tom 7, Politechnika Koszalińska, 2012 Iwaniak M., Khadzhynov W.: „Odwzorowanie działania protokołu dwu fazowego zatwierdzania z wieloma uczestnikami za pomocą kolorowej sieci Petriego”, Zeszyty naukowe STUDIA INFORMATICA Volume 34, Number 2A (111), strony 57-70 Wydawnictwo Politechniki Śląskiej, 2013 X/Open Company Ltd., Distributed Transaction Processing: The XA Specification, 1991, http://opengroup.org/ X/Open Company Ltd., Distributed Transaction Processing: The TX (Transaction Demarcation) Specification, 1995, http://opengroup.org/ X/Open Company Ltd., Distributed Transaction Processing: Reference Model, Version 3, 1996, http://opengroup.org/ Tamer Özsu M., Valduriez P.: Principles of Distributed Database Systems III ed. Springer 2011 http://dev.mysql.com/doc/refman/5.7/en/xa.html 8. 9. 10. http://docs.codehaus.org/display/BTM 11. http://sourceforge.net/p/lixa/wiki/Home/treszczenie