Maria Dems Bazy rozproszone Maria Dems Systemy baz danych Komponenty SBD: • Platforma sprzętowo-operacyjna • Baza danych • Funkcje (programy) użytkownika • System Zarządzania Bazą Danych SO BD FU SZBD Warstwy Systemu baz danych: a warstwa danych, a warstwa Systemu Zarządzania Bazami Danych, a warstwa oprogramowania użytkowego. 2 1 Maria Dems Architektura systemów baz danych * * * * * W a r ia n ty r o z w ią z a ń : S c e n tr a liz o w a n a B D W ie lo d o s tę p n a BD S ie ć lo k a ln a A r c h ite k tu r a k lie n t /s e r w e r S ie ć r o z le g ła (r o z p r o s z o n a B D ) aSystemy jednostanowiskowe Układ warstw w systemie jednostanowiskowym 3 Systemy jednostanowiskowe baz danych BD, FU SO, SZBD użytkownik ż k ik użytkownik 2 użytkownik n Baza scentralizowana: sprzęt oprogramowanie i użytkownik sprzęt, ==> w jednym miejscu Baza wielodostępna: sprzęt, oprogramowanie i użytkownicy ==> w jednym miejscu, dostęp dzielony 4 2 Maria Dems Systemy sieciowe BD Podział warstw systemu: awarstwa danych znajduje się na wydzielonym komputerze (serwer plików), k t ( likó ) awarstwa SZBD i oprogramowania użytkowego - na każdym komputerze z oprogramowaniem bazy danych Układ warstw w systemie sieciowym 5 Systemy sieciowe BD SO BD SZBD, FU SZBD, FU Baza w sieci lokalnej - BD, SO ==> w jednym miejscu, SZBD, programy, użytkownicy oddzieleni FU SO , SZBD BD FU FU Architektura klient/serwer: rozdzielenie programów od pozostałych elementów 6 3 Maria Dems Architektura klient - serwer Klient - komputer lub stacja robocza włączona do sieci, sieci która pozwala po ala na dostęp do BD Serwer - komputer (superkomputer, minikomputer, stacja robocza, zasoby LAN) udostępniający zasoby sieci (serwery transakcji i serwery danych) Korzyści stosowania architektury K/S: ∗ dostęp do elementów sieci ∗ otwarta architektura ∗ indywidualizacja przetwarzania klientów ∗ integracja zasobów i BD ∗ rozwiązywanie problemów komunikacyjnych w ramach architektury K/S (przetwarzanie jedno- , i wielotorowe, serwery równoległe) 7 Architektura klient - serwer Klient Serwer Program aplikacyjny (FU) Pamięć dzielona Zdalnie dostępny interfejs BD Serwer BD (SZBD+BD) Interfejs sieci Interfejs sieci 8 4 Maria Dems Rozproszona baza danych SO, SZBD, BD, FU SO, SZBD BD, FU SO, SZBD, BD, FU Rozproszone BD: Wiele baz połączonych ze sobą 9 Rozproszona baza danych Wrocław Warszaw a BD BD Sieć komunikacyjna Szczecin Kraków BD BD Przykład R*BD 10 5 Maria Dems Pojęcie rozproszonych baz danych Rozproszona BD (ang. Distributed Database) - SBD, w którym wiele węzłów przetwarzania połączono w sieć i istnieje możliwość dostępu z dowolnego miejsca do całej BD Przesłanki realizacji Rozproszonej Bazy Danych: arozproszenie systemu informacyjnego arozwój teleprzetwarzania ahierarchizacja przetwarzania danych apoprawa parametrów eksploatacyjnych Bazy rozproszone dzielimy na: jednorodne homogeniczne, niejednorodne - heterogeniczne i federacyjne 11 Zasady „rozpraszania” BD wg Date’a 0. Fundamentalna (Rozproszona BD jak zwykła BD) 1. 1 Lokalna L k l autonomia i węzła ł (local (l l autonomy)) 2. Równorzędność wszystkich węzłów (no reliance on a central site) 3. Ciągłość przetwarzania (continuous operation) 4. Niezależność lokalizacji danych w BD (location independence) 5. Niezależność fragmentacji BD (fragmentation independence) 6. Niezależność replikacji BD (replication independence) 12 6 Maria Dems Zasady „rozpraszania” BD wg Date’a 7. Rozproszone przetwarzanie zapytań (distributed query processing) i ) 8. Rozproszone zarządzanie transakcjami (distributed transaction management) 9. Niezależność sprzętowa BD (hardware independence) 10. Niezależność „operacyjna” BD (operation system independence) 11. Niezależność sieci komputerowej BD (network indepenedence) 12. Niezależność SZBD (DBMS independence) 13 Właściwości Rozproszonej BD aRozproszona BD stanowi kolekcję logicznie powiązanych i współużytkowanych danych aBD jest podzielona na szereg fragmentów aFragmenty mogą być replikowane aFragment/repliki są alokowane w węzłach aWęzły są połączone w sieć o uzgodnionych zasadach współpracy aDane w każdym węźle są pod kontrolą SZBD (autonomia) aPrzetwarzania Rozproszonej BD odbywa się na dwóch poziomach: globalnym i lokalnym aKażdy SZBD w Rozproszonej BD uczestniczy przynajmniej w jednej globalnej aplikacji 14 7 Maria Dems Rozłożenie danych w rozproszonym systemie BD W systemach rozproszonych rozróżniamy dwa modele da yc : dane rozproszone ozp oszone i dane replikowane. eplikowane. Dane a e danych: rozproszone pomiędzy bazy lokalne mogą być rozłożone poprzez fragmentaryzację. Rozróżnia się: a fragmentaryzację pionową - podzbiory kolumn w tabeli, a fragmentaryzację poziomą - podzbiory wierszy w tabeli. Działanie Rozkład danych Fragmentaryzacja pozioma Selekcja Scalenie danych Suma (UNION) Fragmentaryzacja pionowa Rzut na podzbiór kolumn zawierający klucz główny Złączenie naturalne w oparciu o wartość klucza głównego 15 Dane rozproszone a Każdy serwer w systemie rozproszonym odpowiada za swoje ęp do danych y jjest możliwy y z wielu miejsc j p p dane. Dostęp poprzez sieć. W systemie istnieje tylko jedna kopia każdej z danych. a Czas odpowiedzi dla operacji na lokalnych danych jest krótki. Gdy jedno ze zdalnych stanowisk jest niedostępne, można korzystać z danych z innych serwerów. a Częste korzystanie ze zdalnych danych wiąże się ze spadkiem eefektywności e tyw ośc p przetwarzania. etwa a a. W wypad wypadku u awa awarii jed jednego ego zee stanowisk, zakończenie transakcji może nie być możliwe do chwili usunięcia uszkodzenia. a Model jest odpowiedni gdy przeważająca część przetwarzania dotyczy danych lokalnych, a odwołania do innych serwerów są stosunkowo rzadkie. 16 8 Maria Dems Dane replikowane aKażde stanowisko posiada kopie wszystkich potrzebnych na tym stanowisku danych, danych w związku z czym te same dane są powielone w kilku miejscach. Model ten wymaga większej liczby zasobów i jest odpowiedni gdy te same dane są wykorzystywane na wielu różnych stanowiskach. aReplikacja p j danych y poprawia p p efektywność y wykonywania zapytań oraz zwiększa dostępność danych i odporność na awarie. 17 Właściwości Rozproszonej BD Podstawowe własności rozproszonej bazy danych są następujące: aprzezroczystość geograficzna – użytkownik nie musi wiedzieć, w którym miejscu są przechowywane dane, aprzezroczystość fragmentaryzacji - użytkownik nie musi wiedzieć, w jaki sposób są podzielone dane, apr e roc ystość replikacji - użytkownik nie musi aprzezroczystość wiedzieć, w jaki sposób są replikowane dane, jakie i w ilu bazach składowych. 18 9 Maria Dems Właściwości Rozproszonej BD Niezależność fragmentacji danych P racow nik P IN 123 234 456 567 789 ydział Wy W1 W2 W2 W3 W3 P łaca 2000 2400 1800 1900 2500 W rocław P IN 123 234 W ydział P łaca W1 2000 W2 2400 Kraków P IN 456 567 789 W ydział W2 W3 W3 P łaca 1800 1900 2500 19 Właściwości rozproszonej BD Niezależność „replikacji” danych Wrocław PIN Wydzia y Płaca PIN ł 123 W1 2000 456 234 W2 2400 567 789 PIN 456 567 789 Wydzia Płaca PIN ł W2 1800 123 W3 1900 234 W3 2500 Kraków Wydział y Płaca W2 W3 W3 1800 1900 2500 Wydzia Płaca ł W1 2000 W2 2400 20 10 Maria Dems Komponenty rozproszonej BD Globalny katalog systemowy Globalny katalog k t l systemowy SZR*BD Węzeł 1 SZR*BD Sieć komputerowa Moduł komunika komunikacyjny Węzeł 2 Moduł komunika- SZBD cyjny BD 21 Zalety i wady rozproszonej BD Za alepsza obsługa struktur organizacyjnych awspólny dostęp i lokalna autonomia węzłów apoprawa dostępności BD apoprawa wiarygodności BD a i k azwiększenie i wydajności d j ś i przetwarzania alepszy wskaźnik efektykoszty amodularyzacja rozwoju BD Przeciw aduża złożoność awyższe koszty utrzymania aobniżenie bezpieczeństwa atrudniejsze sterowanie poprawnością aniedostatek standardów i doświadczeń abardziej złożone projektowanie aproblemy związane z wydajnością sieci 22 rozległych 11 Maria Dems Reguły Rozproszonej BD a Autonomia lokalnych BD: Lokalne dane powinny podlegać lokalnym regułom własności i powinny być zarządzane lokalnie. p zą pprzetwarzania z z g miejsca: j a Brak ppodporządkowania do konkretnego Spełnienie tej reguły umożliwia uniknięcie wąskich gardeł, dzięki decentralizacji wszystkich funkcji rozproszonego SZBD. a Ciągłość funkcjonowania: Przestoje w wykonywaniu operacji nie powinny być skutkiem dodania nowych miejsc lub ich usunięcia a Niezależność od lokalizacji: Użytkownicy lub aplikacje nie muszą wiedzieć, gdzie dane są fizycznie przechowywane. a Niezależność od rozczłonkowania: Fragmenty jednego zbioru danych mogą być przechowywane i zarządzane przez rozproszony SZBD jako jedna całość a Niezależność od replikacji: Pojawienie się replik danych nie powinno wpływać na postępowanie użytkowników ani na 23 konieczność przeróbek aplikacji. Reguły Rozproszonej BD a Rozproszone przetwarzanie zapytań: System powinien zapewniać sprawne przetwarzanie rozproszonych zapytań umożliwiające zredukowanie zarówno czasu przetwarzania, jak i obciążenia sieci transmisji danych. a Zarządzanie rozproszonymi transakcjami: Zasady zarządzania transakcjami oraz sterowania współbieżnością powinny obowiązywać dla operacji w rozproszonej bazie danych. a Niezależność od sprzętu i systemu operacyjnego: Dowolne p g rozproszonego p g SZBD p powinno p pracować na oprogramowanie różnych platformach. a Niezależność od sieci: Aplikacje działające na rozproszonej bazie danych nie powinny być uzależnione od protokołów sieciowych. a Niezależność od SZBD: Powinno być możliwe przyłączenie do rozproszonej bazy danych lokalnej bazy danych zarządzanej 24 przez dowolny lokalny SZBD. 12 Maria Dems System Zarządzania Rozproszoną Bazą Danych SZRBD posiada pełną funkcjonalność scentralizowanego SZBD. aUmożliwia połączenie rozproszonych zasobów w jedną całość, a Utrzymuje spójność tych zasobów, zasobów a Udostępnia zasoby użytkownikom, a Ukrywa rozproszenie zasobów. 25 System Zarządzania Rozproszoną Bazą Danych a Ze względu na awarie, SZBD nie powinien się znajdować w jednym miejscu, lecz zarówno dane jak i oprogramowanie powinny być rozproszone. a Katalog systemowy rozproszonej bazy danych powinien zawierać informacje o położeniu fragmentów i replikacji. a W systemie rozproszonym optymalizator zapytań powinien móc użyć informacji topologicznych o sieci, przy podejmowaniu decyzji, jak najlepiej wykonać dane zapytanie a Zwielokrotnienie problemów związanych ze współbieżnością oraz problemów propagowania aktualizacji do szeregu różnych węzłów. 26 13 Maria Dems Funkcje Systemu Zarządzania Rozproszoną Bazą Danych Powinny być dostępne wszystkie funkcje SZBD obsługującego bazę scentralizowaną, tzn.: aObsługa komunikacji zapewniającej dostęp do zasobów Rozproszonej BD aAdministrowanie poszerzonym katalogiem systemu zawierającym szczegóły „rozpraszania” BD aRozproszone p p przetwarzanie zapytań py (z ( optymalizacją) py ją) a Poszerzona obsługa współbieżnego przetwarzania zapewniająca spójność replikowanych danych a Poszerzona obsługa funkcji odtwarzania Rozproszonej BD przeciwdziałająca uszkodzeniom węzłów i połączeń 27 sieciowych Klasyfikacja rozproszonychBD Systemy wielu baz danych (multidatabases) Niefederacyjne rozproszone BD Jednorodne BD Rozproszone BD z globalnym schematem Federacyjne BD Słabo skojarzone (loosely coupled) Ściśle skojarzone (tightly coupled) Pojedyncze • Niefederacyjne RBD: brak autonomii. federacje • Słabo skojarzone FBD: brak federacyjnego (pojedynczy schematu i zarządzania, operacje schemat) w zależności od aplikacji. • Ściśle skojarzone FBD: FSZBD jest odpowiedzialny za zarządzanie całością federacji. Wielokrotne federacje (wiele schematów) 28 14 Maria Dems Federacyjna Baza Danych a Jest to kolekcja heterogenicznych, autonomicznych baz danych, p ą y siecią ą komputerową, p ą zarządzana ą yj y połączonych Federacyjnym Systemem Zarządzania Bazą Danych (FSZBD). Może włączać dziesiątki, setki, tysiące lub więcej lokalnych baz danych. a FSZBD umożliwia tworzenie aplikacji globalnych, działających na całości federacyjnej bazy danych. Jest ona zdefiniowana schematem federacyjnym, będącym sumą schematów eksportowych lokalnych baz danych. a FSZBD zapewnia warunki pracy twórców aplikacji globalnych określane jako przezroczystość i niezależność danych. a FSZBD może być zainstalowany w wielu węzłach sieci, umożliwiając tworzenie aplikacji globalnych w wielu miejscach geograficznych. Poszczególne FSZBD współpracują ze sobą celem 29 zapewnienia spójności i integralności przetwarzania. Architektura federacyjnej BD Aplikacje globalne FSZBD 1 Przestrzeń robocza Aplikacje globalne ... Schemat FBD FSZBD m Przestrzeń robocza Schemat FBD Sieć komputerowa Schemat S h eksportowy k 1 Osłona 1 API 1 Lokalny SZBD 1 BD 1 Aplikacje lokalne Schemat S h eksportowy k 2 Osłona 2 API 2 Lokalny SZBD 2 BD 2 Aplikacje lokalne ... Schemat S h eksportowy k n Osłona n API n Lokalny SZBD n BD n Aplikacje lokalne 30 15 Maria Dems Przyczyny heteregoniczności FBD a Niezależność działania: twórcy systemów nie uzgadniają między sobą ich cech. Standardy są spóźnione i niekompletne a Konkurencja a Różne rozwiązanie dla złożonego problemu. Różne zespoły znajdują różne rozwiązania, bazujące często na odmiennych celach i założeniach. a Efektywność finansowa i kompromisy: Wytwórcy oferują produkty p y o różnejj cenie, funkcjonalności j i jjakości a Systemy spadkowe (legacy): Systemy, które dawno zostały wdrożone i działają efektywnie, nie mogą być z tego działania wyłączone. Nie jest możliwe (lub jest bardzo kosztowne) zastąpienie ich nowymi systemami. Nowe systemy, o podobnym przeznaczeniu, posiadają inne założenia, cechy i funkcjonalności 31 Autonomia lokalnej BD Autonomia lokalnej bazy danych w federacji baz danych oznacza: a Lokalne dane podlegają lokalnym priorytetom, regułom własności, autoryzacji dostępu, bezpieczeństwa, itd. Lokalna baza danych może odrzucić zlecenia przychodzace z federacji, o ile naruszają one lokalne ograniczenia lub zbytnio obciażają czas procesora lub inne lokalne zasoby. a Lokalna baza danych może udostępniać aplikacjom działającym na federacji baz danych tylko określoną część swoich danych i usług. Programiści tych aplikacji nie mają jakichkolwiek środków dostępu do pozostałych danych i usług. a Włączenie lokalnej bazy danych do federacji nie może powodować konieczności zmiany programów aplikacyjnych 32 działających na lokalnej BD. 16 Maria Dems Autonomia lokalnej BD a Federacja może przetwarzać lokalne zasoby tylko poprzez j p g p j ((API)) specyficzny p y y dla interfejs programowania aplikacji lokalnego systemu. Inne metody (np. bezpośredni dostęp do plików) są niedozwolone. a Federacja nie może żądać od lokalnej bazy danych zmiany/rozszerzenia jej usług (np. udostępnienia lokalnego dziennika transakcji). Federacyjną bazę danych powinna charakteryzować: • przezroczystość • niezależność danych 33 a Przezroczystość lokacji i dostępu : te same metody działania na wszystkich bazach danych objętych federacją, programy aplikacyjnych są zwolnione z konieczności uwzględniania informacji o położeniu danych. a Przezroczystość implementacji danych: zwolnienie programów aplikacyjnych z konieczności uwzględniania informacji o implementacji i organizacji danych. a Przezroczystość protokołów komunikacyjnych: zwolnienie programów aplikacyjnych z konieczności uwzględniania aktualnych protokołów komunikacyjnych. a Przezroczystość współbieżności: umożliwienie jednoczesnej pracy programów g aplikacyjnych p yj y bez utraty y spójności p j i wielu p integralności danych. a Przezroczystość skalowania: umożliwienie dodawania/usuwania baz danych do/z federacji bez wpływu na postać programów aplikacyjnych. a Przezroczystość awarii: minimalizacja skutków awarii węzłów lub linii komunikacyjnych dla programów aplikacyjnych. 34 17 Maria Dems Niezależność danych Możliwość działań na danych niezależnie od programów, które na nich operują. Nie ma potrzeby zmiany kodu programów aplikacyjnych mimo zmian organizacji lub schematów danych. a Fizyczna niezależność danych: ukrycie detali organizacji fizycznej i technik dostępu, dzięki czemu możliwa jest ich zmiana bez wpływu na kod aplikacji. a Logiczna niezależność danych: umożliwienie niektórych zmian schematu logicznego bez wpływu na kod aplikacji, np. dodanie atrybutów do relacji, zmiana kolejności atrybutów, zmiana ich typów, utworzenie nowych relacji, itd. a Ewolucja schematu (schema evolution): umożliwienie daleko idących zmian schematu danych przy jednoczesnym utworzeniu perspektyw (views) zachowujących stary schemat. 35 Hurtownie danych Hurtownie danych służą do do składowania i przetwarzania dużych ilości danych pochodzących z różnych źródeł, najczęściej heterogenicznych h t i h i rozproszonych h oraz do d tworzenia t i i przechowywanie kopii bezpieczeństwa danych strategicznych. a Z każdym z heterogenicznych źródeł informacji związana jest warstwa oprogramowania – konwerter/monitor, integrator. a Zadaniem modułu konwertera jest transformowanie danych z formatu wykorzystywanego w źródle do formatu stosowanego w hurtowni. a Zadaniem modułu monitora jest wykrywanie zmian w danych źródłowych i ich przekazywanie do warstwy oprogramowania integratora (po konwersji do modelu danych hurtowni). a Zadaniem modułu integratora jest uaktualnianie danych w 36 hurtowni. 18 Maria Dems Problemy budowy i eksploatacji Rozproszonej BD aNiezawodność połączeń komunikacyjnych aSterowanie współbieżnością - blokowanie aObsługa katalogu zawartości BD - powielanie aAktualizacja kopii BD - kopia pierwotna aOptymalizacja zapytań - lokalna i globalna Budowa RBD dla baz istniejących polega na: „rozpraszaniu” centralnych BD „integracji” istniejących lokalnych BD „re-projektowaniu” BD Budowa nowej BD: - ==> projektowanie RBD 37 Fazy projektowania RBD Koncepcja projektowania Koncepcja projektowania „top-down” Analiza potrzeb Cele Projektowanie schematu globalnego Projektowanie j podschematów zewnętrznych Projekt RBD 38 19 Maria Dems Fazy projektowania RBD Problemy zasadnicze: adecyzje dotyczące lokalizacji: ==> SZRBD, SZRBD SO ==> BD, aplikacji aprojekt i parametry sieci Problemy szczegółowe: • • • • • • dlaczego fragmentować RBD, co i jak fragmentować. jak testować poprawność fragmentowanej BD, czy i jak replikować BD. jak alokować zasoby Rozproszonej BD. jakie są czynniki istotne dla projektowania. 39 Fazy projektowania RBD Metodyka projektowania aZaprojektowanie schematu globalnego aDekompozycja p y j schematu gglobalnego g na schematy y lokalne (projekty relacji + schemat fragmentacji) aProjektowanie schematu alokacji BD aProjekt lokalnych schematów BD aintegracja baz lokalnych Zalety fragmentacji: a użytkowość a efektywność a współbieżność a bezpieczeństwo Wady fragmentacji: a wydajność a integralność 40 20 Maria Dems Fazy projektowania RBD Techniki fragmentacji aPozioma (HF) g j p pozioma ((PHF)) ==> Pierwotna fragmentacja ==> Wtórna fragmentacja pozioma (WHF) aPionowa (VF) ==> Trudniejsza w realizacji (więcej alternatyw) ==> Podejścia: • grupowanie (atrybuty do fragmentów) • dzielenie (relacja do fragmentów) aMieszana (MF) Relacja lub fragment jest dzielona przynajmniej na dwie części, które są różnie przetwarzane, przynajmniej przez jedną aplikację 41 Fazy projektowania RBD Fragmentacja mieszana R HF HF R1 R2 VF VF VF VF R11 R12 R21 R22 VF R23 42 21 Maria Dems Fazy projektowania RBD Kryteria poprawności fragmentacji kompletność odtwarzalność rozłączność Replikacje w rozproszonej BD Replikacja - proces generowania i utrzymywania kopii danych w jednym bądź wielu węzłach przetwarzania Korzyści K ś i replikacji: lik ji • poprawa wydajności przetwarzania • wzrost wiarygodności i dostępności do danych • wspomaganie hurtowni danych i przetwarzania „przenośnego” • równoważenie obciążeń a Możliwe rozwiązania rozproszonej bazy danych: • nie-replikowana (rozdzielona) - każdy fragment BD umieszczony jest w jednym węźle • częściowa replikacja - wybrane fragmenty w określonych węzłach • pełna replikacja - każdy fragment w każdym węźle 44 22 Maria Dems Rodzaje replikacji w rozproszonych BD a Rodzaje replikacji: - synchroniczna - asynchroniczna a Dodatkowe funkcje replikacji: skalowanie, transformowanie danych, obsługa obiektów BD, mechanizmy subskrypcji i inicjacji a Warianty replikacji: pełna i częściowa (migawka), a Zestaw Zesta replik składa się z wzorca orca ((utworzonego t or onego z BD) i replik poszczególnych użytkowników a Modele własności danych: - nadrzędny/podrzędny, - przekazywany, 45 - swobodny. Synteza projektowania rozproszonej bazy danych Relacje globalne FRAGMENTACJA REPLIKACJA Relacje fragmentowane Relacje replikowane ALOKACJA Relacje lokalne 46 23 Maria Dems Projektowanie alokacji w rozproszonej bazie danych F={F1, F2, ...F3} W={W1, W2, ... W3} Z={Z1, Z2, ...Z3} fragmenty węzły zapytania (aplikacje) a fragmenty nie są indywidualnymi relacjami a dostęp do bazy bardziej złożony a konieczność rozważenia kosztów integralności a konieczność rozważenia kosztów współbieżności ==> Optymalizacja: * minimalny koszt (komunikacja, pamięć, przetwarzanie) * wykonanie (czas reakcji) * ograniczenia (węzły, pamięć, przetwarzanie) 47 Projektowanie alokacji w rozproszonej bazie danych W procedurze alokacji istotne informacje to: a BD: BD selektywność l kt ść i rozmiar i fragmentów f tó a aplikacja: typ i liczba dostępów, lokalizacja dostępu a węzeł: koszt pamiętania i przetwarzania fragmentu w węźle Ograniczenia przy projektowaniu alokacji są następujące: a koszt przetwarzania zapytania a koszt i zakres przesyłania danych a przepustowość: suma zapytań ładowanych do węzła <= wydajność węzła a czas reakcji: czas realizacji zapytania <= max. dopuszczalnego czasu a pamięć: wymagana suma pamięci dla fragmentów <= dostępnej pamięci. 48 24 Maria Dems Katalog systemowy rozproszonej bazy danych Zawartość katalogu systemowego (KSRBD): a dane o strukturach i użytkownikach BD (schemat i podschematy BD, indeksy, użytkownicy itp.) a dane dotyczące przetwarzania rozproszonego (fragmentacja, alokacja, replikacja) Warianty przechowywania KSRBD: a Scentralizowany (cały katalog w wybranym węźle) a Powielony (cały katalog w każdym węźle) a Podzielony (każdy węzeł utrzymuje katalog dla własnych obiektów; cały katalog jest sumą wszystkich katalogów lokalnych) a Mieszany (1+3; utrzymywanie własnego katalogu, kopie przechowywane w węźle centralnym) 49 Zapytania równoległe a Zapytania równoległe występują, jeśli w komputerze jest więcej niż jeden procesor. SQL `Server identyfikuje zapytania, które mogłyby być wykonywane równolegle, za pomocą kilku wątków systemu operacyjnego i wstawia do planu wykonania tzw. operatory wymiany. `Operatory wymiany zarządzają procesem redystrybucji danych i sterowaniem przepływu – jest to tak zwany plan wykonania zapytań równoległych. Może on korzystać z więcej niż jednego wątku, przy czym liczbę wątków nazywamy stopniem nierównoległości. a SQL Server sam ustala optymalna liczbę wątków przy każdym uruchomieniu zapytania. 50 25 Maria Dems Zapytania rozproszone a Zapytania rozproszone umożliwiają: `dostęp do danych na tym samym lub innych komputerach, `dostęp do rozproszonych danych przechowywanych na wielu komputerach z uruchomionym SQL Serverem, `dostęp do niejednorodnych danych z różnych relacyjnych i nierelacyjnych baz danych, jak również do danych przechowywanych w nierelacyjnych źródłach, takich jak arkusze kalkulacyjne czy pliki tekstowe. a Wymagają one obecności albo dostawcy OLE DB, implementującego niezbędne interfejsy OLE DB (API), albo sterownika ODBC. Jeśli korzystamy z dostawcy OLE DB, możemy posługiwać się instrukcjami Transact-SQL, które są takie same jak instrukcje dla normalnej tabeli SQL Servera. 51 Zapytania rozproszone a Zapytania rozproszone są podobne do mechanizmu tabel połączonych w MS Access. Mechanizm ten jest wbudowany w SQL Serverze poprzez OLE DB, DB jak interfejs do danych zewnętrznych. a Aby uzyskać dostęp do źródła danych zewnętrznych OLE DB z serwera SQL trzeba podać: `nazwę dostawcy OLE DB, `informacje wymagane przez OLE DB do zlokalizowania źródła danych, `identyfikatory logowania dla źródła danych, `nazwę obiektu (zdalnej tabeli) lub zapytania, które spowoduje udostępnienie zestawu rekordów przez dostawcę OLE DB. 52 26 Maria Dems Zapytania rozproszone a Stosowane są techniki: `Kwerenda „ad hoc”, wykorzystująca funkcję OPENROWSET. Należy podać potrzebne informacje do połączenia połąc enia zee źródłem danych dan ch OLE DB, DB oraz ora nazwę na ę obiektu obiekt lub zapytania generującego zestaw rekordów - stosowana, przy dorywczym korzystaniu z danych. `Kwerenda serwera połączonego, umożliwiająca stały dostęp do źródła danych OLE DB, stosowana przy częstym korzystaniu z zapytań rozproszonych. W celu uzyskania stałego dostępu do danych można użyć nazwy dołączonego serwera, zdefiniowanej za pomocą procedury przechowywanej sp_addlinkedserver sp_addlinkedserver. Serwer połączony jest ze źródłem danych OLE DB, które jest wstępnie rejestrowane na lokalnym serwerze SQL, a więc, przy odwołaniu lokalny serwer zna lokalizację zdalnych danych. 53 Wykonywanie zapytań Jawne zapytania (Ad Hoc) Wydzielenie istotnych danych Rozwiązanie Parse Optymalizacja Kompilacja Parse Wykonanie Parse Ukryte zapytania Pierwsze wykonanie Wydzielenie istotnych y informacji Rozwiązanie Parse Kolejne wykonanie Optymalizacja Kompilacja Parse Procedura ukrycia Wykonanie Parse Wykonanie 54 27 Maria Dems Zapytania rozproszone y rozproszone p gą być y p a Kwerendy mogą przetwarzane: `na lokalnym serwerze, `na zdalnym serwerze, będącym źródłem danych OLE DB, za pośrednictwem kwerendy przekazującej OPENQUERY a Za pomocą zapytań rozproszonych nie można tworzyć nowych tabel, tabel ani modyfikować już istniejących. istniejących Dane w zdalnej tabeli można aktualizować lub usuwać tylko wtedy, gdy ma ona unikatowy indeks. 55 Wykonywanie kwerendy „ad hoc” na zdalnym źródle danych Funkcji OPENROWSET należy używać w przypadku, gdy nie jest przewidywany stały dostęp do źródła danych Funkcji OPENROWSET należy używać przy dostępie do danych zdalnych bez ustawiania serwera połączonego OPENROWSET (‘nazwa_dostawcy’ {‘źródło_danych’; ‘id_uzytkownika’ ; ‘hasło’|’ciąg_dostawcy’}, {[katalog.][schemat.]obiekt | ‘kwerenda’}) SELECT a.* FROM OPENROWSET('SQLOLEDB', 'LONDON1'; 'newcustomer';'mypassword', 'SELECT productid, unitprice FROM northwind.dbo.products ORDER BY unitprice') AS a 56 28 Maria Dems Konfigurowanie środowiska serwerów Lokalny serwer SQL połączonych Serwer SQL pozwala na dostęp do innych źródeł danych Serwery zdalne muszą być połączone z lokalnym komputerem, na którym znajduje się serwer SQL Zdalny serwer SQL Inne źródła danych Zdalny serwer SQL Serwer połączony jest źródłem danych OLE DB, 57 Konfigurowanie środowiska serwerów połaczonych Polega na ustanowienia połączenia ze zdalnym źródłem danych i ustanowieniu zabezpieczeń pomiędzy serwerami a Łączenie Ł i ze zdalnym d l serwerem SQL Sp_addlinkedserver {‘serwer’, ‘nazwa_produktu’, ‘nazwa_dostawcy’,‘źródło_danych’, ‘lokalizacja’,’ciąg_dostawcy’} EXEC sp_addlinkedserver @server = 'AccountingServer', @product_name = 'SQL Server' a Łączenie ze źródłem danych OLE DB EXEC sp_addlinkedserver @server = 'OracleFinance', @product_name = 'Oracle', @provider_name = 'MSDAORA', @data_source = 'OracleDB' 58 29 Maria Dems Ustanawianie zabezpieczeń dla serwerów połączonych a Przy wykonywaniu kwerendy rozproszonej lokalny serwer musi zalogować się do zdalnego serwera w imieniu użytkownika a Jeżeli konto logowania użytkownika istnieje na obu serwerach, można go użyć do zalogowania się do zdalnego serwera a Przy użyciu procedury sp_addlinkedsrvlogin można mapować konta logowania i hasła pomiędzy serwerami a Bez delegowania bezpieczeństwa, należy mapować lokalne konto logowania na konto logowania serwera połączonego Sp_addlinkedsrvlogin {‘nazwazdalserw’} [,‘użyjwłasn’ [,lokalnekonto’ [,‘zdalużytkownik’ [,‘zdalhasło’] ] ] ] EXEC sp_addlinkedsrvlogin @rmtsrvname = AccountingServer, @useself = false, @locallogin = 'Accountwriter', @rmtuser = 'rmtAccountWriter', @rmtpassword = 'financepass' 59 Informacje o serwerach połączonych Systemowa procedura przechowywana Zwraca sp_linkedservers Listę serwerów połączonych zdefiniowanych na lokalnym serwerze sp_catalogs Listę katalogów i opisów dla określonego serwera połączonego sp_indexes Informacje o indeksach dla określonej zdalnej tabeli sp_primarykeys Kolumny klucza podstawowego dla określonej tabeli, jeden wiersz na kolumnę sp_foreignkeys p g y Klucz obcyy zdefiniowanyy dla określonejj zdalnejj tabeli sp_tables_ex Informacje dotyczące tabel z określonego serwera połączonego sp_columns_ex Informacje dotyczące kolumn dla tabeli połączonej, dla wszystkich kolumn lub określonej kolumny 60 30 Maria Dems Praca z serwerami połączonymi a Podczas wykonywania kwerend rozproszonych należy odwołać się do obiektów na serwerach połączonych, za pomocą czteroczęściowej nazwy w postaci: nazwa_serwera_połączonego.nazwa_katalogu. ł k l nazwa_schematu.nazwa_obiektu a Dozwolone instrukcje języka Transact-SQL `SELECT z klauzulą WHERE lub JOIN, `INSERT, UPDATE, DELETE a Niedozwolone instrukcje języka Transact-SQL `CREATE, ALTER, DROP `ORDER BY dla zdalnych tabel zawierających duże obiekty `READTEXT, WRITETEXT, UPDATETEXT a Kwerendy serwera połączonego są przetwarzane lokalnie 61 Wykonywanie kwerend na serwerze połączonym a Aby wykonać kwerendę przekazującą na serwerze połączonym, należy wykonać funkcję OPENQUERY a W miejscu nazwy tabeli w instrukcji SELECT można użyć funkcji OPENQUERY a Jako tabeli docelowej instrukcji INSERT, UPDATE lub DELETE można użyć wyniku funkcji OPENQUERY SELECT companyname FROM AccountingServer.northwindremote.dbo.suppliers AccountingServer northwindremote dbo suppliers SELECT * FROM OPENQUERY (AsiaServer, 'SELECT productid, royalty FROM Northwind.dbo.ProductInfo') 62 31 Maria Dems Wykonywanie procedury przechowywanej na serwerze połączonym Serwer lokalny Serwer zdalny Wywołanie procedury przechowywanej Parametry i wyniki Przetwarzanie zdalnych procedur Klient połączony z jednym serwerem SQL może wykonywać procedury przechowywane na innym serwerze SQL bez potrzeby ustanowienia połączenia z tym serwerem Użytkownik EXEC accounting.master.dbo.sp_helpntgroup EXECUTE nazwa_serwera.nazwadb.właściciel.nazwa_procedury 63 Modyfikowanie danych na serwerze połączonym a Transakcję rozproszoną można rozpocząć przez: `Wykonanie instrukcji BEGIN DISTRIBUTED TRANSACTION - LUB `Wywołanie funkcji API z klienta a Należy rozważyć następujące fakty: `Instrukcje BEGIN DISTRIBUTED TRANSACTION nie mogą być zagnieżdżone `Instrukcja ROLLBACK TRANSACTION anuluje całą transakcję rozproszoną `Punkty kontrolne zapisu nie są obsługiwane obsługiwane. Jeśli serwer SQL anuluje transakcję rozproszoną, to jest ona cała anulowana od początku `Pomiędzy serwerami połączonymi należy ustawić opcję sesji XACT_ABORT - wtedy w przypadku niepowodzenia transakcja zostanie anulowana. W przeciwnym przypadku anulowana 64 będzie tylko jedna instrukcja. 32 Maria Dems Dystrybucja danych MS DTC AKTUALIZACJA Replikacja AKTUALIZACJA AKTUALIZACJA Replikacja Program MS Distributed Transaction Coordinator kontroluje transakcje rozproszone i zapewnia ich integralność i zgodność aktualizacji danych 65 Replikacja danych a Replikacja danych jest to generowanie i utrzymywanie kopii danych w jednym bądź więcej węzłach przetwarzania i ich automatyczna synchronizacja. Zastosowania replikacji są następujące: ą wielokrotnymi y kopiami p danych y w różnych y `Zarządzanie lokalizacjach. `Przenoszenie informacji bliżej użytkowników, którzy ich potrzebują. `Większa autonomia punktów aktualizujących dane. `Udział w strategii bezpieczeństwa. `Wsparcie dla systemów wspomagania decyzji oraz hurtowni danych. a Można wykonać replikację między bazą źródłową (source database) i bazą docelową (destination database), w przypadku gdy obie bazy są na tym samym serwerze sieciowym, jak również na różnych serwerach, połączonych siecią LAN, WAN lub poprzez Internet. 66 33 Maria Dems Replikacja danych a Bazy mogą być synchronizowane natychmiast, lub zmiany mogą być zachowywane i przesyłane według potrzeb. a Replikacje mogą być wykonywane między bazami SQL Servera, lub innymi typami baz danych danych, np np. MS Access Access, Oracle itp. itp a Replikacja w SQL Serverze oparta jest na technice publikacji i subskrypcji danych. a Serwer udostępniający dane jest publikatorem danych. Przesyła on kopie wszystkich zmian opublikowanych danych do serwera zajmującego się dystrybucja, tzw. dystrybutora. a Dystrybutor zawiera bazę dystrybucji, która otrzymuje wszelkie zmiany wprowadzane w danych, przechowuje je i przesyła do serwerów subskrypcji (subskrybentów), obsługujących bazę docelową, która odbiera opublikowane dane i przechowuje ich kopię. a Subskrybent może pobierać wszystkie dane publikowane przez serwer źródłowy lub tylko ich część. Serwer dystrybucji i publikator 67 mogą być na tym samym komputerze lub na innych. Komponenty replikacji Komponenty replikacji są następujące: a Publikator – serwer udostępniający dane innym serwerom. Przechowuje dane o wszystkich publikacjach dokonanych w bazie y danych. a Dydtrybutor – serwer zawierający bazę zarządzającą dystrybucją danych a Subskrybent - serwer przechowujący kopie publikacji i przesyłający lub odbierający zmiany od publikatora. Może być również publikatorem dla innych subskrybentów. a Artykuł – zbiór danych, który ma być replikowany i może zawierać dane przechowywanej procedury lub tablicy przeznaczonej do replikacji. a Publikacja – zbiór jednego lub wielu artykułów. Subskrybenty subskrybują publikacje, a nie artykuły. a Subskrybcja – tworzona jest w celu pobrania publikacji przeznaczonych do replikacji. 68 34 Maria Dems TOPOLOGIE REPLIKACJI (CENTRALNY WYDAWCA) Publikator i Dystrybutor Subskrybent Publikator i Dystrybutor Subskrybenci 69 TOPOLOGIE REPLIKACJI (CENTRALNY WYDAWCA ZE ZDALNYM DYSTRYBUTOREM) Publikator Dystrybutor Subskrybenci 70 35 Maria Dems TOPOLOGIE REPLIKACJI (POWTÓRNY PUBLIKATOR) Publikator i Dystrybutor Wolne lub drogie łącze sieciowe Subskrybent i Powtórny publikator Subskrybenci 71 TOPOLOGIE REPLIKACJI (CENTRALNY SUBSKRYBENT) Publikatorzy S b k b t Subskrybent 72 36 Maria Dems Rodzaje subskrypcji Rozróżnia się dwa podstawowe rodzaje subskrypcji: a Subskrypcja inicjowana przez publikatora publikatora, polegająca na tym, że publikator przesyła wprowadzone w danych zmiany do subskrybenta. jest b k b t Stosowana St j t dla dl aplikacji, lik ji w których któ h zmiany i muszą być przesłane zaraz po wprowadzeniu, dla publikacji, w których wymagana jest ochrona replikowanych danych oraz dla publikacji, które musza być wykonywane w ściśle określonych przedziałach czasu. Powoduje duże obciążenie procesora po stronie publikatora. yp j inicjowana j przez subskrybenta p subskrybenta, y ,p polegająca g ją na tym, y , że a Subskrypcja subskrybent zapytuje publikator o nowe publikacje. Stosowana jest dla aplikacji, w których zmiany są przesłane co pewien czas, dla publikacji, w których nie jest wymagana ochrona replikowanych danych oraz w przypadku bardzo dużej liczby subskrybentów (np. dla aplikacji przeznaczonych dla potrzeb Internetu). Pojedyncza aplikacja może korzystać z obu rodzajów subskrypcji. 73 Planowanie replikacji Przy planowaniu replikacji należy często rozstrzygnąć konflikty między potrzebami różnych aplikacji i różnych środowisk, oraz często w samej aplikacji. Istotnymi problemami jest tu zachowanie spójności transakcyjnej, przy jednoczesnym zachowaniu autonomii pewnych komputerów uczestniczących w replikacji, jak również konieczność dzielenia danych. Rozróżnia się trzy rodzaje spójności transakcyjnej: a Gwarantowana ścisła spójność – wszystkie lokacje maja gwarancję, że będą miały w każdej chwili te same dane, gdyż dane mogą być zmieniane tylko w jednej lokacji. W przypadku awarii serwera zarządzającego d j pozostałe t ł serwery nie i będą b d mogły ł uzgadniać d i ć danych. d h a Gwarantowana luźna spójność – wszystkie lokacje mają te same dane, ale niekoniecznie w tej samej chwili, gdyż w chwili modyfikacji danych w jakiejś lokacji ich spójność nie musi być zachowana, a Brak gwarancji spójności – modyfikacja danych może spowodować, że przez pewien czas różne lokacje mogą mieć różne zestawy danych. 74 37 Maria Dems Planowanie replikacji Strategią pozwalającą na uniknięcie konfliktów między danymi jest dzielenie danych. W takim przypadku każda lokacja otrzymuje swój p y zapisanych p y w ggłównejj bazie,, co zapewnia p podzbiór danych również autonomię lokacji. Istnieją dwie techniki dzielenia danych: `Pozioma (horyzontalna) – dzielone są rekordy danych `Pionowa (wertykalna) – dzielone są pola danych Obie techniki można ze sobą łączyć. Rozróżniamy następujące rodzaje replikacji: `Replikacja R lik j migawkowa i k (ang. ( snapshot h t replication) replication li ti ) `Replikacja transakcyjna (ang. transactional repliaction) repliaction) `Replikacja uzgadniana (ang. merge replication) replication) 75 Replikacja migawkowa a Przy replikacji migawkowej dane przechowywane u publikatora zastępują dane subskrybenta w określonych odstępach czasu. a Początkowa synchronizacja wymaga przekopiowania wszystkich danych bazy źródłowej do docelowej, a następnie, w określonych odstępach czasu, zmienione dane są przesyłane do bazy docelowej a Serwer automatycznie synchronizuje dane we wszystkich lokacjach, kopiując do nich dane z bazy podstawowej. a Replikacja migawkowa może być stosowana, o ile nie jest niezbędne ciągłe uaktualnianie danych. Jest to odświeżania tablic według rozkładu a Możemy sami zdefiniować, w jakich odstępach czasu dane będą odświeżane we wszystkich subskrybujących dane serwerach. Odstępy te powinny być tak dobrane, aby nie utrudniać korzystania z bazy, gdyż w czasie transferu danych zablokowana jest możliwość korzystania z bazy. 76 38 Maria Dems Replikacja migawkowa a Należy zapewnić odpowiednią ilość wolnego miejsca w katalogu roboczym replikacji, tak aby zmieściły się wszystkie zdjęcia danych z wszystkich publikacji jednocześnie. a Tablice replikowane w replikacji migawkowej nie wymagają kluczy podstawowych. Podstawowe cechy replikacji migawkowej są następujące: • Dane są statyczne i rzadko ulegają zmianom. • Replikowane są małe ilości informacji. • Znacząca ilość publikowanych elementów zmienia się w tym samym momencie, w określonych odstępach czasu tak, że przesyłanie zmian nie opłaca się. • Do zaakceptowania jest sytuacja posiadania na subskrybentach kopii nie zawsze aktualnych danych, danych, czyli dane nie są krytyczne. 77 REPLIKACJA MIGAWKOWA (SCHEMAT DZIAŁANIA) Aplikacja kliencka Publikowana baza danych Subskrybowana baza danych Publikator Subskrybent Agent migawkowy Katalog g na migawki g danych Agent dystrybucji Baza dystrybucji Dystrybutor Dane lub transakcje Zapis historii i błędów 78 39 Maria Dems Replikacja transakcyjna a Przy replikacji transakcyjnej zatwierdzone transakcje z dziennika transakcji bazy źródłowej rozsyłane są w ciągu kilku sekund do baz docelowych, przy czym zamiast rzeczywistych danych do serwerów docelowych odpowiednie instrukcje (INSERT, d l h przychodzą h d d i d i i k j (INSERT UPDATE, DELETE), w porządku, w jakim zostały wprowadzone w publikatorze. a Przesyłane są tylko transakcje zrealizowane, a użytkownicy nie są wyłączeni z korzystania z tablic, w czasie ich aktualizacji. Technika ta pozwala zachować spójność transakcyjną. a Dziennik transakcji bazy danych publikatora przechowuje transakcje przeznaczone do replikacji, dopóki nie zostaną przeniesione do bazy dystrybutora, a następnie zostaje oczyszczony tak, że zostają w nim tylko transakcje, które nie są przeznaczone do replikacji. a Tablice przeznaczone do replikacji muszą mieć klucze podstawowe. 79 Replikacja transakcyjna a Należy zapewnić odpowiedni rozmiar dziennika transakcji p publikatora, oraz bazy y danych y dystrybutora, y y tak aby y mogła ona przechowywać wszystkie zmiany wysyłane do niej w pojedynczym zdjęciu (przesłane co pewien czas w postaci replikacji migawkowej), a także wszystkie transakcje wykonane w okresie między kolejnymi aktualizacjami bazy. a SQL Server 7 posiada opcję Immediate Updating Subscribers umożliwiającą subskrybentom, w oparciu o protokół dwufazowej realizacji transakcji, wprowadzać zmiany w tym samym czasie gdy są one wprowadzane u publikatora. 80 40 Maria Dems Replikacja transakcyjna a Korzyści natychmiastowej aktualizacji u subskrybentów są następujące: `nie występują żadne konflikty, gdyż subskrybent może dodawać, usuwać lub modyfikować dane tylko wtedy, gdy dokona w porozumieniu z publikatorem dwufazowego zatwierdzenia transakcji, `dane aktualizacji są przesyłane do pozostałych subskrybentów za pośrednictwem replikacji migawkowej lub transakcyjnej, `subskrybent nie musi czekać z aktualizacją danych na wykonanie replikacji migawkowej, migawkowej `subskrybent nie potrzebuje bazy dystrybucji ani agenta dziennika `gwarantowana jest spójność transakcyjna, oraz mniejsza możliwość wystąpienia błędów. 81 Replikacja transakcyjna a Dwufazową realizacją transakcji zarządza program koordynacji transakcji rozproszonych MS DTC (Microsoft Distributed Transaction Coordinator), wykorzystując instrukcję w języku Transact-SQL BEGIN DISTRISTRIBUTED TRAN(SACTION) wywoływaną procedurą wyzwalaną u subskrybenta. Inne procedury wyzwalane subskrybenta przechwytują transakcje i przesyłają je do publikatora za pomocą zdalnej procedury przechowywanej wewnątrz dwufazowego zatwierdzenia transakcji, przy czym zmiany wprowadzane są, o ile nie wywołują żadnych konfliktów w publikatorze. Jeśli są jakieś konflikty, transakcja jest wycofywana zarówno w publikatorze jak i u subskrybenta. 82 41 Maria Dems REPLIKACJA TRANSAKCYJNA (SCHEMAT DZIAŁANIA) Aplikacja kliencka Publikowana baza danych Dziennik transakcji Publikator Subskrybowana baza danych Subskrybent Agent migawkowy Agent dziennika Katalog na migawki danych Agent dystrybucji Baza dystrybucji Dystrybutor Schemat i dane początkowe Nowe transakcje Zapis historii i błędów 83 Replikacja transakcyjna Podstawowe cechy replikacji transakcyjnej: a Konieczność szybkiej aktualizacj aktualizacjii danych u subskrybentów, subskrybentów, niewielkiego niewielki ego opóźnienia opóźnienia w stosunku do aktualizacji u wydawcy. wydawcy. a Zapewnia spójność spójność transakcyjn transakcyjnąą, aby dane były identyczne we wszystkich lokacjach. lokacjach. a Opłaca się, gdy iilość lość publikowanych danych jest duża w stosunku do ilości ich aktualizacji. aktualizacji. 84 42 Maria Dems Replikacja uzgadniana a Replikacja uzgadniana jest replikacją dwukierunkową, pozwalającą na aktualizację danych w różnych lokacjach, niezależnie od publikatora. Następnie dane są synchronizowane przez publikator, który rozsyła je do wszystkich innych serwerów replikacji. Technika ta nie gwarantuje spójności transakcyjnej i jest stosowana, gdy aplikacje stanowiące część systemu łączą się z bazą danych co pewien czas, np. po wprowadzeniu danych na przenośnym komputerze. Przy replikacji uzgadnianej stosowane są dwa rozwiązania: `topologia koncentryczna z centralnym dystrybutorem odpowiedzialnym d i d i l za synchronizację h i j danych, d h `układy z wieloma centrami replikacji a Może być również stosowana kombinacja obu rozwiązań równocześnie. Każda lokacja może być wtórnym publikatorem, subskrybentem lokalnym, subskrybentem globalnym lub subskrybentem anonimowym. 85 Replikacja uzgadniana a W replikacji uzgadnianej publikator tworzy publikację, ale każdy z subskrybentów może aktualizować dane. Można również zdefiniować własne kryteria rozwiązywania konfliktów, tak aby publikator nie wygrywał automatycznie wszystkich konfliktów (opcja domyślna). Przy replikacji uzgadnianej SQL Server wprowadza do schematu tablic i bazy danych następujące zmiany: `do każdego rekordu dodawane jest unikatowe pole (rowguid), pozwalające jednoznacznie identyfikować dany rekord spośród licznych jego kopii w całej tablicy. Jeśli pole uniqueidentyfier już istnieje, to SQL Server wykorzysta je. `instalowane są procedury wyzwalane, pozwalające śledzić i rejestrować zmiany danych w tablicach systemowych replikacji uzgadnianej, `do bazy danych dodawane są tablice systemowe, w celu obsługi monitorowania, synchronizacji i rozstrzygania konfliktów. 86 43 Maria Dems Replikacja uzgadniana a Przy implementowaniu replikacji uzgadnianej należy przestrzegać następujących reguł: `nie należy korzystać ze zmiennej typu uniqueidentyfier oraz unikać ik ć pól ól identyfikujących, id t fik j h ponieważ i ż wiele i l lokacji l k ji będzie b d i załączać rzędy o tych samych kolejnych numerach. Prowadzi to do konfliktu w momencie uzgadniania danych `ze wszystkich publikowanych tablic należy usunąć znaczniki czasu, ponieważ są one zawsze generowane przez lokalny serwer, `należy przestrzegać integralności publikatora, `przy obsłudze odwołań do kluczy podstawowych należy załączać tablice, zawierające te odwołania. W przeciwnym przypadku operacje wstawiania danych do tablic, w których klucze obce odwołują się do kluczy podstawowych w zagubionych bądź nieistniejących tablicach zakończą się niepowodzeniem, natomiast możliwa będzie aktualizacja istniejących rekordów. 87 Replikacja uzgadniana a Obsługę danych typu text należy przeprowadzać przy pomocy instrukcji UPDATE a Przed rozpoczęciem replikacji uzgadnianej publikator rozsyła do subskrybentów zdjęcie danych, danych wraz ze wszystkimi tablicami i schematami danych. a Program koordynacji transakcji rozproszonych MS DTC (Microsoft Didtributed Transaction Coordinator) dostarcza interfejsu graficznego dla replikacji, umożliwiającego zarządzaniem transakcjami oraz zapisem operacji w dzienniku systemu. Podstawowe cechy replikacji uzgadnianej: • Wielu subskrybentów aktualizuje dane • Nie ma konieczności zachowania zgodności transakcyjnej • Dane mogą być odpowiednio partycjonowane tak, by pojawiające się ewentualnie konflikty były rzadkością 88 44 Maria Dems REPLIKACJA UZGADNIANA (SCHEMAT DZIAŁANIA) Aplikacja kliencka Aplikacja kliencka Publikowana baza danych Tabela konfliktów Subskrybowana baza danych Publikator Subskrybent Agent migawkowy Katalog na migawki danych Agent łączenia Baza dystrybucji Dystrybutor Schemat i dane początkowe Nowe transakcje Zapis historii i błędów 89 Replikacja synchroniczna i asynchroniczna a Zarówno replikacja synchroniczna jak i asynchroniczna umożliwiają odczyt i modyfikację lokalnych kopii danych, co wpływa korzystnie na czas odpowiedzi. a Zaletą modelu w pełni synchronicznego jest posiadanie na wszystkich stanowiskach zawsze najbardziej aktualnych informacji. Ponadto, nie występują konflikty przy modyfikacji. a Synchroniczna replikacja może w przypadku awarii ograniczać możliwość dokonywania modyfikacji. a Zaletą modelu w pełni asynchronicznego jest ciągła dostępność danych. Żadne ze stanowisk nie wymaga dostępności innego, aby możliwe było dokonanie zmian. a Wybór najodpowiedniejszego modelu zależy od zastosowań. 90 45 Maria Dems Replikacja synchroniczna a Zmiany dokonane na innych stanowiskach są natychmiast odzwierciedlane lokalnie. a Te same dane mogą być modyfikowane w różnych miejscach, bez możliwości wystąpienia konfliktu. a W wyniku utraty połączenia z jednym ze stanowisk objętych replikacją, niemożliwe staje się wykonanie lokalnych modyfikacji do chwili usunięcia uszkodzenia lub zmiany konfiguracji środowiska rozproszonego. a Czas odpowiedzi przy modyfikacji ulega wydłużeniu, gdyż do zatwierdzenia lub wycofania transakcji konieczne jest uzyskanie odpowiedzi od wszystkich stanowisk. a Model najlepiej sprawdza się w sytuacjach, gdzie dane są często odczytywane, a rzadko modyfikowane a Model jest odpowiedni w sytuacjach, gdzie wymagana jest absolutna spójność między replikami. 91 a Model wymaga stabilnych systemów i połączeń sieciowych Transakcje synchroniczne a Transakcje synchroniczne mogą być wykonywane razem z replikacją transakcyjną jak i migawkową. Za pomocą transakcji synchronicznej subskrybent może modyfikować replikowane dane, j jjest wykonywana y y w p publikatorze za p pomocą ą o ile transakcja realizacji dwufazowej. Subskrybent informuje o wprowadzonych zmianach tylko publikator. a Dwufazowa realizacja transakcji jest automatyczna i jeśli się powiedzie, subskrybent może natychmiast pracować ze zmienionymi danymi, pod warunkiem, że publikator jest dostępny. Rozprowadzeniem zmian do innych subskrybentów zajmuje się publikator publikator. a Transakcje rozproszone implementowane są przez program MS DTC. Procedury wyzwalane tworzone w subskrybencie przesyłają je do publikatora za pośrednictwem odwołania do zdalnej procedury przechowywanej (działającej na innym komputerze), wewnątrz dwufazowej realizacji transakcji. 92 46 Maria Dems Replikacja asynchroniczna a Awarie na zdalnych stanowiskach nie blokują lokalnych operacji odczytu i modyfikacji replikowanych danych p jjest krótszy y niż w p yp p j a Czas odpowiedzi przypadku replikacji synchronicznej, gdyż nie ma konieczności uzyskania odpowiedzi od innych stanowisk a Zmiany mogą być propagowane z dowolnym (być może bardzo krótkim opóźnieniem) lub na żądanie a Zmiany dokonane na innych stanowiskach nie są natychmiast odzwierciedlane lokalnie, co prowadzi do tymczasowych niespójności i ój ś i między i d replikami lik i a Istnieje możliwość wystąpienia konfliktów między operacjami modyfikacji. SZRBD oferują mechanizmy do rozwiązywania takich problemów. 93 Rozstrzyganie konfliktów a W replikacji uzgadnianej dochodzi czasem do konfliktów pomiędzy danymi wpisanymi do tego samego rekordu w różnych lokacjach. Informacje o konfliktach przechowywane są w publikatorze poprzez p przekopiowanie p rekordu p przegrywającego g y ją g konflikt do tablicyy konfliktów (Conflict_User_Table), o takiej samej strukturze, jak tablica oryginalna. Informacja, dla jakich tablic przechowywane są tablice konfliktów jest zawarta w tablicy systemowej sysmergearticles. Najczęściej spotykane konflikty, to: `Dwie lokacje usiłują dodać rekord mający ten sam klucz. Jeśli to zrobią, podczas synchronizacji pojawi się konflikt. `J d `Jedna l k j dodaje lokacja d d j rekord k d z kluczem kl obcym, b podczas d gdy d druga usuwa odpowiadający mu rekord z kluczem podstawowym, `Różnorodne problemy z blokowaniem danych. a Aby ustalić, który rekord wygrywa, replikacja uzgadniana przyznaje poszczególnym lokacjom priorytety (od 0 do 100) 94 47 Maria Dems Agenty replikacji a Można podzielić dane na części i poszczególnym częściom przypisać różne typy replikacji. W zależności od tego, z jakiego typu replikacji korzystamy, możemy zdefiniować agenty replikacji (Replication Agents). Rozróżnia się następujące agenty replikacji: `Agent migawkowy (Snapshot Agent) – tworzy pliki migawkowe każdej publikowanej tablicy i procedury przechowywanej oraz rejestruje informacje definiujące status synchronizacji, `Agent dziennika (Log Reader Agent) – dla każdej publikacji transakcyjnej, przenosi zaznaczone transakcje z dziennika transakcji publikatora do bazy zajmującej się dystrybucja danych, `Agent dystrybucji (Distribution Agent) – posiadają go zarówno subskrybenty migawkowe i j i transakcyjne; jak j wykonuje j on transakcje j i zadania związane z replikacją migawkową, przenosząc dane z bazy odpowiedzialnej za dystrybucję do subskrybenta. `Agent uzgadniania (Merge Agent) – przekazuje, dla replikacji uzgadnianej, wstępne zdania migawkowe przechowywane w bazie publikatora do subskrybenta i wprowadza pojawiające się później 95 zmiany. SPOSOBY UAKTUALNIANIA DANYCH NA SUBSKRYBENCIE • Replikacja uzgadniana • Uaktualnianie natychmiastowe • Uaktualnianie kolejkowe • Uaktualnianie natychmiastowe z kolejkowym w przypadku braku połączenia 96 48 Maria Dems Implementowanie replikacji Implementowanie replikacji wymaga następujących działań: a Skonfigurowanie serwera jako publikatora lub dystrybutora. Po skonfigurowaniu jednego z serwerów systemu jako dystrybutora, SQL Server tworzy folder Replication Monitor, umożliwiający przeglądanie publikatorów, publikacji, subskrypcji, rozkładu zadań replikacji, zdarzenia oraz zapiski na temat przyszłych operacji każdego z agentów replikacji. W celu skonfigurowania serwera jako dystrybutora wykonujemy, korzystając z bazy danych master, procedurę przechowywaną sp_distributor di t ib t @ ditributor dit ib t = ‘NAZWA_SERWERA’ ‘NAZWA SERWERA’ Następnie tworzy się nową bazę dystrybucji procedurą przechowywaną: sp_adddistributiondb @ database = N’distribution’, oraz definiuje jej wszystkie parametry. 97 Implementowanie replikacji a Skonfigurowanie serwera jako publikatora lub dystrybutora (c.d.) Należy zdefiniować, które z serwerów korzystających z dystrybutora będą publikatorami, wykorzystując procedurę przechowywaną: sp_adddistpublisher @ publisher = N’NAZWA_SERWERA”, @distribution_db = N’distribution’, @working_directory = ‘\\NAZWA_SERWERA NAZWA_SERWERA\\CS CS\\MSSQL MSSQL77\ReplData’, W zależności od systemu operacyjnego, powyższe procedury mogą korzystać k t ć z dodatkowych d d tk h parametrów. t ó a Przygotowanie bazy danych do replikacji – wykorzystujemy w tym celu procedurę przechowywaną sp_replicationdboption @dbname = Nazwa_bazy_danych, @optname = ‘publish’ , 98 @value = true 49 Maria Dems Publikowanie danych Każdy z serwerów SQL Servera może pełnić zarówno rolę publikatora, dystrybutora jak i subskrybenta, jak i dowolną kombinacje tych funkcji. Można replikować wszystkie dane lub tylko ich część. a Publikowanie danych - dla każdej bazy danych serwera publikacji można utworzyć jedną lub wiele publikacji. `Nie można mieszać zawartości baz danych. `Dla każdej publikowanej bazy danych należy wybrać tablice lub procedury przechowywane które będą artykułami publikacji oraz zdefiniować rodzaj subskrypcji, a także początkową strategię synchronizacji i odpowiednie formaty. Oprócz p tego g możemyy zdefiniować: `czy korzystać z replikacji transakcyjnej czy migawkowej, `czy zezwolić na synchroniczne uaktualnianie subskrypcji, `czy publikator będzie inicjował subskrypcję, a jeśli tak, to czy zezwolić na subskrypcję anonimową, `czy filtrować dane umieszczone w artykule, 99 `czy zawsze zachować kopię wykonanej transakcji na serwerze Publikowanie danych `czy dane będą publikowane w formacie SQL Servera, czy w formacie tekstowym lub innym subskrybenta, Dodatkowo można `uaktywnić subskrybentów internetowych, internetowych `zdefiniować dodatkowe opcje publikacji, takie jak nazwa i opis, `zdefiniować rozkład wykonywania kolejnych replikacji dla agenta migawkowego. W celu utworzenia publikacji migawkowej wykorzystujemy procedurę sp_addpublication uruchamianą z parametrem @repl freq = ‘snapshot’, @repl_freq snapshot , w postaci: sp_addpublication @publication = ‘SnapCustomers’, @ sync_method = ‘native’, @repl_freq = ‘snapshot’, ......................................,, ...................................... Procedura ta tworzy zdjęcie o nazwie SnapCustomers. 100 50 Maria Dems Publikowanie danych Zdjęcie SnapCustomers należy uczynić zdjęciem danych i zdefiniować jego właściwości procedurą: sp_addpublication_snapshot @publication = ‘SnapCustomers’, ‘SnapCustomers’ Te tworzą szkielet T dwie d i procedury d ki l publikacji, blik ji ale l nie i dodają d d j do d niej i j żadnych artykułów. W celu dodania artykułów należy uruchomić procedurę: sp_addarticle @publication = ‘SnapCustomers’ i zdefiniować w niej właściwości artykułu. W celu utworzenia publikacji transakcyjnej wykorzystujemy procedurę sp_addpublication sp addpublication uruchamianą z parametrem @repl_freq = ‘continuous’, w postaci: sp_addpublication @publication = ‘TransCustomers’, @restricted = ‘false’, @ sync_method = ‘native’, 101 @repl_freq = ‘continuous’, Publikowanie danych Następnie za pomocą procedury sp_addpublication_snapshot tworzy się agenta migawkowego i dodaje artykuły, które będą publikowane. W celu utworzenia publikacji uzgadnianej wykorzystujemy procedurę sp_addmergepublication, w postaci: sp_addmergepublication @publication = ‘MergeCustomers’, @ sync_method = ‘native’, ......................................,, ...................................... Następnie N t i tworzy t się i zdjęcie dj i danych d h i uzupełnia ł i o odpowiednie d i d i artykuły, analogicznie jak przy publikacji migawkowej. 102 51 Maria Dems Subskrybowanie publikacji a Subskrybowanie publikacji oznacza, że serwer subskrypcji zgadza się przyjąć replikę publikacji artykułu od serwera publikacji. `Należy zdefiniować rodzaj subskrypcji (subskrypcja inicjowana przez publikatora, czy przez subskrybenta). `W czasie definicji opcji subskrypcji, wykonywana jest automatycznie synchronizacja tworząca kopię bazy danych publikatora u subskrybenta. `Po jej wykonaniu można zdefiniować, w jakich odstępach czasu będą wykonywane kolejne synchronizacje. 103 Subskrybowanie publikacji `Przy wyborze opcji subskrypcji inicjowanej przez publikator należy najpierw skonfigurować połączenie z serwerem subskrybenta, a następnie uaktywnić serwer subskrybenta, dla potrzeb b replikacji. lik ji `Przy wprowadzeniu zmian w serwerze publikatora, agent dystrybucji będzie próbował połączyć się z subskrybentem, w celu przesłania tych zmian. Jeśli subskrybent nie jest dostępny, to agent ponowi próbę 10 razy, a następnie prześle informacje o błędzie do monitora replikacji. `Przy przesyłaniu danych w określonych odstępach czasu, agent dystrybucji spróbuje przesłać zmiany w następnym cyklu. `Wprowadzone zmiany są przechowywane w bazie dystrybucji do momentu, gdy zostaną przesłane do wszystkich subskrybentów, lub aż upłynie zdefiniowany okres ich przechowywania. 104 52 Maria Dems Subskrybowanie publikacji `Przy wyborze opcji subskrypcji inicjowanej przez subskrybenta należy najpierw wybrać serwer, a następnie wybrać bazę danych, z której będą pobierane dane do subskrypcji. s bskr pcji `Następnie należy zdefiniować rejestrację dla agenta synchronizacji i bazę danych, w której będzie tworzona subskrypcja (może to być nowa baza danych). `Można rozpocząć subskrypcję natychmiast lub zdefiniować, aby była wykonywana w określonych odstępach d h czasu. `Subskrypcja może być zdefiniowana połączeniem między serwerami lub anonimowa. `W subskrypcji zdefiniowanej informacje o każdym subskrybencie przechowywane są przez publikatora. 105 Subskrypcja anonimowa Subskrypcja anonimowa (anonymous subscription) stosowana jest przy dużej liczbie subskrybentów, oraz przy subskrypcji za pośrednictwem Internetu. Jest ona zawsze inicjowana przez y ale w tym y p przypadku yp serwer nie może być y wcześniejj subskrybenta, zarejestrowany w publikatorze jako subskrybent. Wówczas zostanie ona automatycznie zarejestrowana jako anonimowa. `Do usunięcia subskrypcji inicjowanej przez subskrybenta, w tym również subskrypcji anonimowej stosowane są procedury przechowywane: sp_dropsubscription @publication = ‘NazwaBD_Customers’, @ article = ‘all’, @ subscriber = ‘Hasło_subskrybenta’, (lub ‘anynomous’) @destination_db = ‘NazwaBD’ `Do usunięcia subskrybenta sp_dropsubscriber @subscriber = ‘Hasło_subskrybenta 106 53 Maria Dems Zabezpieczenie replikacji SQL Server posiada wbudowane opcje zapewniające bezpieczeństwo replikacji, takie jak: `specjalne role dla akcji replikacji, `definiowanie loginów uprawnionych do publikacji, publikacji `ochrona dystrybutora za pomocą hasła, `system zabezpieczeń dla subskrybentów, analizujących dane w trybie ciągłym. Przy konfiguracji serwera dla publikacji i dystrybucji automatycznie tworzona jest lista dostępu do publikacji. Domyślnie jest to distributor_admin distributor admin oraz db_owner. db owner. Listę tę można zmodyfikować za pomocą procedur przechowywanych: sp_grantpublication @publication = ‘pubs’ , @login = ‘public’ lub sp_revoke_publication_access @publication = ‘publikacja’ , @login = ‘login’ 107 Zabezpieczenie i monitorowanie replikacji Jeśli publikator i dystrybutor są na osobnych serwerach, to odpowiednie loginy muszą pojawić się na obu listach dostępu. Można ograniczyć dostęp do dystrybutora dołączając do rejestracji distributor_admin distributor admin odpowiednie hasło, przy pomocy procedury przechowywanej sp_changedistributor_password. a Monitorowanie replikacji - do monitorowanie replikacji służy Replication Monitor, aktywowany przy konfiguracji serwera jako dystrybutora. Pozwala on na: `przeglądanie listy publikatorów, subskrybentów i publikacji, `przeglądanie p gą rozkładów replikacji p j w agentach g replikacji p j oraz monitorowanie ich statusu, a także przeglądania historii wykonanych operacji `konfigurowanie i monitorowanie alarmów replikacji Może być on obsługiwany za pomocą interfejsu graficznego lub z wiersza poleceń. 108 54 Maria Dems Usprawnienie działania replikacji W celu usprawnienia działania replikacji należy przestrzegać następujących zasad: `Należy publikować tylko niezbędne dane, aby nie spowalniać przepływu danych i nie obciążać niepotrzebnie systemu, `Publikator i dystrybutor powinny być skonfigurowane na osobnych komputerach, `Serwer dystrybucji powinien mieć co najmniej 64 MB pamięci operacyjnej, `Przy większej liczbie subskrybentów należy zmniejszyć częstotliwość t tli ść dystrybucji d t b ji nowych h danych. d h `Poszczególne agenty dystrybucji nie powinny zaczynać pracy jednocześnie, `Należy ograniczyć ilość zapisków dotyczących przeszłych operacji i czas przechowywania ich w dzienniku 109 Usprawnienie działania replikacji `O ile jest to możliwe, należy definiować subskrypcję inicjowaną przez subskrybenta, a zwłaszcza subskrypcję anonimową, anonimową co odciąża serwer publikacji i dystrybucji, dystrybucji `O ile jest to możliwe, należy korzystać z komputerów wieloprocesorowych, co pozwoli na uruchomienie wielowątkowych agentów replikacji, `Należy optymalizować bazę danych pod kątem replikacji. Przy definiowaniu artykułów należy ograniczyć dzielenie poziome bazy danych, danych bo powoduje to spowolnienie replikacji. 110 55