Rozproszone bazy danych (cz.2) Henryk Telega BD 2006 Wykład 12
2PC w systemie Oracle Typy węzłów: Koordynator globalny: węzeł sieci, w którym zainicjowano transakcję rozproszoną Uczestnik Węzeł zatwierdzania (ang. commit point site) BD 2006 Wykład 12
2PC w systemie Oracle Faza przygotowania - koordynator koordynator globalny określa węzeł zatwierdzania (na podstawie parametru COMMIT_POINT_STRENGTH skonfigurowanego w każdym węźle) koordynator globalny wysyła do uczestników zadanie przygotowania do zatwierdzania (PREPARE) BD 2006 Wykład 12
2PC w systemie Oracle Faza przygotowania - uczestnik odbiór komunikatu od koordynatora globalnego żądającego przygotowania do zatwierdzania wysłanie żądania przygotowania do zdalnych węzłów, do których odwołuje się uczestnik w przypadku braku modyfikacji danych: wysłanie do koordynatora globalnego komunikatu READ-ONLY zapisanie zawartości bufora dziennika powtórzeń do pliku dziennika (online redo log) jeśli inne zdalne węzły dołączone do uczestnika zgłosiły gotowość i sam uczestnik jest gotów: wysłanie komunikatu PREPARED do koordynatora globalnego w przeciwnym przypadku: wycofanie lokalnej transakcji wyslanie ABORT BD 2006 Wykład 12
2PC w systemie Oracle Faza zatwierdzania: koordynator globalny odbiera potwierdzenia od uczestników PREPARED READ-ONLY (brak modyfikacji) ABORT (niemożliwość przygotowania do zatwierdzania) jeśli wszyscy odpowiedzieli PREPARED, to koordynator globalny wysyła żądanie zatwierdzenia transakcji do węzła zatwierdzania węzeł zatwierdzania zatwierdza transakcję i wysyła komunikat do koordynatora globalnego koordynator globalny wysyła zadanie zatwierdzenia do pozostałych węzłów jeśli choć jeden uczestnik odpowiedział ABORT, to koordynator wysyła zadanie wycofania transakcji do węzła zatwierdzania węzeł zatwierdzania wycofuje transakcję i wysyła komunikat do koordynatora globalnego koordynator wysyła żądanie wycofania do uczestników BD 2006 Wykład 12
2PC w systemie Oracle Faza zatwierdzania - uczestnik: odbiór od koordynatora globalnego komunikatu żądającego zatwierdzenia transakcji zatwierdzenie lokalnej transakcji zwolnienie blokad zapis informacji o zatwierdzeniu w pliku dziennika powtórzeń BD 2006 Wykład 12
2PC w systemie Oracle Transakcje „in-doubt” odtwarzanie automatyczne odtwarzanie ręczne standardowe mechanizmy testowania awarii BD 2006 Wykład 12
Replikacja BD 2006 Wykład 12
Replikacja BD 2006 Wykład 12
Replikacja w MS SQL Serwerze Serwer, który udostępnia dane nazywa się wydawcą (publisher), serwer pobierający dane jest subskrybentem (subscriber). Między wydawcą a subskrybentem jest serwer dystrybucyjny – dystrybutor (distributor). Publikacji podlegają artykuły. Artykuł to na ogół tabela lub część tabeli. Artykuł jest najmniejszą jednostką replikacji. W artykule możliwe jest pionowe i poziome filtrowanie danych (wybieranie kolumn i wierszy). Można również replikować procedury składowane (definicję) lub wykonanie procedury. Replikację konfiguruje się dla zestawu artykułów, który nazywa się publikacją. Subskrypcja może być wymuszana (push) lub żądana (pull), w zależności od tego, czy jest inicjowana odpowiednio przez wydawcę, czy subskrybenta. BD 2006 Wykład 12
Replikacja w MS SQL Serwerze Procesem replikacji w MS SQL Serwerze sterują tzw. agenci. Najważniejsi agenci to: Snapshot Agent – tworzy początkowe migawki (snaphots) i przekazuje je do dystrybutora; działa na dystrybutorze Distribution Agent – przekazuje migawki i dane transakcyjne do subskrybentów; typowo działa na dystrybutorze dla subskrypcji wymuszanych i u subskrybentów dla subskrypcji żądanych. Log Reader Agent – śledzi dziennik transakcji wydawcy i rejestruje zatwierdzone transakcje w bazie danych distribution Merge Agent – scala dane z wielu serwerów BD 2006 Wykład 12
Replikacja w MS SQL Serwerze Typy replikacji (1) Migawkowa (snaphot): dane (migawki) są przesyłane standardowo od wydawcy do subskrybenta zgodnie z pewnym harmonogramem, zwykle niezbyt często (np. raz dziennie, raz na kilka godzin). Standardowo zmiany replikowanych danych są możliwe tylko u wydawcy (chociaż można to zmienić). Transakcyjna (transactional): zmiany w danych podlegających replikacji są wykrywane przez agenta Log Reader i przesyłane przez agenta o nazwie Distribution Agent do subskrybentów natychmiast, albo zgodnie z pewnym harmonogramem. Tu również standardowo zmiany replikowanych danych są możliwe tylko o wydawcy (chociaż można to zmienić). Replikacja transakcyjna może obejmować wykonywanie procedur składowanych. BD 2006 Wykład 12
Replikacja w MS SQL Serwerze Typy replikacji (2) Scalana (merge): dane są przekazywane zgodnie z pewnym harmonogramem, na ogół stosunkowo rzadko (podobnie jak w replikacji migawkowej). Istotne jest jednak to, że standardowo subskrybenci też mogą zmieniać dane, a zatem synchronizacja jest w obie strony – od wydawcy do subskrybenta oraz od subskrybenta do wydawcy. Mogą się w związku z tym pojawić konflikty, np. jeśli wydawca zmieni pewien wiersz i pewien subskrybent zmieni ten sam wiersz. Konflikty aktualizacji są rozwiązywane automatycznie lub ręcznie. Standardowy sposób rozwiązywania konfliktów jest taki, że wydawca zawsze „wygrywa” z subskrybentami, natomiast różnym subskrybentom można przypisać różne poziomy ważności. BD 2006 Wykład 12
Replikacja w MS SQL Serwerze Typy replikacji (3) W replikacji migawkowej i transakcyjnej można włączyć mechanizmy umożliwiające aktualizację subskrybentów: immediate updating (subskrybent po zmianie replikowanych danych powiadamia natychmiast wydawcę, który zmiany akceptuje lub odrzuca w ramach transakcji rozproszonej z wykorzystaniem protokołu 2PC). queued updating (zmiany u subskrybenta są kolejkowane i przesyłane do wydawcy jeśli jest połączenie z wydawcą, nie działają tu transakcje rozproszone). BD 2006 Wykład 12
Replikacja w MS SQL Serwerze Modele replikacji Modele replikacji (terminologia firmy Microsoft): Jeden wydawca – wielu subskrybentów Jeden subskrybent – wielu wydawców Wielu wydawców i wielu subskrybentów Dowolny typ replikacji można łączyć z dowolnym modelem replikacji. BD 2006 Wykład 12
Prosta replikacja w Oracle - migawki Migawki (snapshots), perspektywy zmaterializowane. Tylko do odczytu (read-only snapshots), asynchroniczne, primary copy. Metoda przesyłania dla prostych kwerend: odświeżenie przyrostowe (fast refresh); wymaga założenia specjalnego dziennika lub odświeżenie pełne (reexecute query). Moment i częstotliwość odświeżania: manualnie automatycznie po zatwierdzeniu transakcji modyfikującej dane zgodnie z harmonogramem nigdy Grupa odświeżania – grupa migawek o wspólnych ustawieniach odświeżania BD 2006 Wykład 12
Zaawansowana replikacja w Oracle Replikacja migawkowa (materialized view replication). Rozszerzenie koncepcji migawki w wersji podstawowej o możliwość modyfikowania migawki. Środowisko replikacji migawkowej tworzą węzły nadrzędne i węzły migawkowe. Węzeł migawkowy to instancja bazy danych, zawierająca migawki, dla których źródłami danych są tabele z węzła nadrzędnego. Węzeł migawkowy może być węzłem nadrzędnym dla innych węzłów migawkowych (architektura wielowarstwowa). Replikacja multimaster (multiaster replication). Wszystkie węzły są równoważne, każdy węzeł jest typu master (nadrzędny). Zmiana wprowadzona w którymkolwiek węźle zostaje zaaplikowana we wszystkich pozostałych węzłach środowiska. Replikacja hybrydowa (mieszana). BD 2006 Wykład 12
Zaawansowana replikacja w Oracle Zaawansowana replikacja może być zarówno synchroniczna, jak i asynchroniczna. Zmiany danych mogą być wykonywane w węzłach migawkowych w przypadku migawki modyfikowalnej (updatable snapshot): zmiany są przekazywane asynchronicznie do węzła nadrzędnego, lub migawki zapisywalnej (writeable snapshot): można zmieniać dane w migawce, ale zmiany te nie są przekazywane do węzła nadrzędnego. BD 2006 Wykład 12