Bazy rozproszone Maria Dems Systemy baz danych Komponenty SBD: Platforma sprzętowo-operacyjna SO Baza danych BD Funkcje (programy) użytkownika FU System Zarządzania Bazą Danych SZBD Warstwy Systemu baz danych: warstwa danych, warstwa Systemu Zarządzania Bazami Danych, warstwa oprogramowania użytkowego. 2
Architektura systemów baz danych W arianty rozwią zań : * Scentralizowana BD * Wielodostę pna BD * Sieć loka lna * Architektura klient/serwer * Sieć rozległa (rozproszona BD) Systemy jednostanowiskowe Układ warstw w systemie jednostanowiskowym 3 Systemy jednostanowiskowe baz danych BD, FU SO, SZBD użytkownikż użytkownik 2 użytkownik n Baza scentralizowana: sprzęt, oprogramowanie i użytkownik ==> w jednym miejscu Baza wielodostępna: sprzęt, oprogramowanie i użytkownicy ==> w jednym miejscu, dostęp dzielony 4
Systemy sieciowe BD Podział warstw systemu: warstwa danych znajduje się na wydzielonym komputerze (serwer plików), warstwa 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 SO, SZBD BD FU FU FU Architektura klient/serwer: rozdzielenie programów od pozostałych elementów 6
Architektura klient - serwer Klient - komputer lub stacja robocza włączona do sieci, która pozwala na dostępdobd 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 Program aplikacyjny (FU) Zdalnie dostępny interfejs BD Interfejs sieci Serwer Pamięć dzielona Serwer BD (SZBD+BD) Interfejs sieci 8
Rozproszona baza danych SO, SZBD SO, SZBD, BD, FU BD, FU SO, SZBD, BD, FU Rozproszone BD: Wiele baz połączonych ze sobą 9 Rozproszona baza danych Wrocław Warszawa BD BD Sieć komunikacyjna Szczecin Kraków BD BD Przykład R*BD 10
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: rozproszenie systemu informacyjnego rozwój teleprzetwarzania hierarchizacja przetwarzania danych poprawa 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. 1Lkl Lokalna autonomia węzła ł (local 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
Zasady rozpraszania BD wg Date a 7. Rozproszone przetwarzanie zapytań (distributed query processing) 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 Rozproszona BD stanowi kolekcję logicznie powiązanych i współużytkowanych danych BD jest podzielona na szereg fragmentów Fragmenty mogą być replikowane Fragment/repliki są alokowane w węzłach Węzły są połączone w sieć o uzgodnionych zasadach współpracy Dane w każdym węźle są pod kontrolą SZBD (autonomia) Przetwarzania Rozproszonej BD odbywa się na dwóch poziomach: globalnym i lokalnym Każdy SZBD w Rozproszonej BD uczestniczy przynajmniej w jednej globalnej aplikacji 14
Rozłożenie danych w rozproszonym systemie BD W systemach rozproszonych rozróżniamy dwa modele danych: dane rozproszone oszone i dane replikowane. Dane rozproszone pomiędzybazylokalnemogą być rozłożone poprzez fragmentaryzację.rozróżnia się: fragmentaryzację pionową - podzbiory kolumn w tabeli, fragmentaryzację poziomą - podzbiory wierszy w tabeli. Działanie Fragmentaryzacja pozioma Fragmentaryzacja pionowa Rozkład danych Selekcja Rzut na podzbiór kolumn zawierający klucz główny Scalenie danych Suma (UNION) Złączenie naturalne w oparciu o wartość klucza głównego 15 Dane rozproszone Każdy serwer w systemie rozproszonym odpowiada za swoje dane. Dostęp do danych jest możliwy z wielu miejsc pp poprzez sieć. W systemie istnieje tylko jedna kopia każdej z danych. 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. Częste korzystanie ze zdalnych danych wiąże się ze spadkiem efektywności ee przetwarzania. a a. W wypadku awarii jednego ego ze stanowisk, zakończenie transakcji może nie być możliwe do chwili usunięcia uszkodzenia. Model jest odpowiedni gdy przeważająca część przetwarzania dotyczydanychlokalnych,aodwołania do innych serwerów są stosunkowo rzadkie. 16
Dane replikowane Każde stanowisko posiada kopie wszystkich potrzebnych na tym stanowisku 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. Replikacjap j danych poprawia p efektywność 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: przezroczystość geograficzna użytkownik nie musi wiedzieć, w którym miejscu są przechowywane dane, przezroczystość fragmentaryzacji -użytkownik nie musi wiedzieć, w jaki sposób są podzielone dane, przezroczystośće roc replikacji - użytkownik nie musi wiedzieć, wjakisposóbsą replikowane dane, jakie i w ilu bazach składowych. 18
Właściwości Rozproszonej BD Niezależność fragmentacji danych Pracownik PIN Wydział Płaca 123 W1 2000 234 W2 2400 456 W2 1800 567 W3 1900 789 W3 2500 Wrocław Kraków PIN Wydział Płaca PIN Wydział Płaca 123 W1 2000 456 W2 1800 234 W2 2400 567 W3 1900 789 W3 2500 19 Właściwości rozproszonej BD Niezależność replikacji danych Wrocław Kraków PIN Wydzia Płaca PIN Wydział Płaca ł 123 W1 2000 456 W2 1800 234 W2 2400 567 W3 1900 789 W3 2500 PIN Wydzia Płaca PIN Wydzia Płaca ł ł 456 W2 1800 123 W1 2000 567 W3 1900 234 W2 2400 789 W3 2500 20
Komponenty rozproszonej BD Globalny katalog systemowy SZR*BD Moduł komunika- cyjny Węzeł 1 Sieć komputerowa Węzeł 2 SZR*BD Moduł komunikacyjny Globalny katalog systemowy SZBD BD 21 Zalety i wady rozproszonej BD Za lepsza obsługa struktur organizacyjnych wspólny dostęp i lokalna autonomia węzłów poprawa dostępności BD poprawa wiarygodności BD zwiększenie i k i wydajności ś przetwarzania lepszy wskaźnik efektykoszty modularyzacja rozwoju BD Przeciw duża złożoność wyższe koszty utrzymania obniżenie bezpieczeństwa trudniejsze sterowanie poprawnością niedostatek standardów i doświadczeń bardziej złożone projektowanie problemy związane z wydajnością sieci rozległych 22
Reguły Rozproszonej BD Autonomia lokalnych BD: Lokalne dane powinny podlegać lokalnym regułom własności i powinny być zarządzane lokalnie. Brak podporządkowania p pz przetwarzaniaz do konkretnego miejsca: Spełnienie tej reguły umożliwia uniknięcie wąskich gardeł, dzięki decentralizacji wszystkich funkcji rozproszonego SZBD. Ciągłość funkcjonowania: Przestoje w wykonywaniu operacji nie powinny być skutkiem dodania nowych miejsc lub ich usunięcia Niezależność od lokalizacji: Użytkownicy lub aplikacje nie muszą wiedzieć, gdzie dane są fizycznie przechowywane. Niezależność od rozczłonkowania: Fragmenty jednego zbioru danych mogą być przechowywane i zarządzane przez rozproszony SZBD jako jedna całość Niezależność od replikacji: Pojawienie się replik danych nie powinno wpływać na postępowanie użytkowników ani na konieczność przeróbek aplikacji. 23 Reguły Rozproszonej BD 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. Zarządzanie rozproszonymi transakcjami: Zasady zarządzania transakcjami oraz sterowania współbieżnością powinny obowiązywać dla operacji w rozproszonej bazie danych. Niezależność od sprzętu i systemu operacyjnego: Dowolne oprogramowanie rozproszonego SZBD powinno pracować na różnych platformach. Niezależność od sieci: Aplikacje działające na rozproszonej bazie danych nie powinny być uzależnione od protokołów sieciowych. Niezależność od SZBD: Powinno być możliwe przyłączenie do rozproszonej bazy danych lokalnej bazy danych zarządzanej 24 przez dowolny lokalny SZBD.
System Zarządzania Rozproszoną Bazą Danych SZRBD posiada pełną funkcjonalność scentralizowanego SZBD. Umożliwia połączenie rozproszonych zasobów w jedną całość, Utrzymuje spójność tych zasobów, Udostępnia zasoby użytkownikom, Ukrywa rozproszenie zasobów. 25 System Zarządzania Rozproszoną Bazą Danych Ze względu na awarie, SZBD nie powinien się znajdować w jednym miejscu, lecz zarówno dane jak i oprogramowanie powinny być rozproszone. Katalog systemowy rozproszonej bazy danych powinien zawierać informacje o położeniu fragmentów i replikacji. W systemie rozproszonym optymalizator zapytań powinien móc użyć informacji topologicznych o sieci, przy podejmowaniu decyzji, jak najlepiej wykonać dane zapytanie Zwielokrotnienie problemów związanych ze współbieżnością oraz problemów propagowania aktualizacji do szeregu różnych węzłów. 26
Funkcje Systemu Zarządzania Rozproszoną Bazą Danych Powinny być dostępne wszystkie funkcje SZBD obsługującego bazę scentralizowaną,tzn.: tzn.: Obsługa komunikacji zapewniającej dostęp do zasobów Rozproszonej BD Administrowanie poszerzonym katalogiem systemu zawierającym szczegóły rozpraszania BD Rozproszone p przetwarzanie zapytań (z optymalizacją) Poszerzona obsługa współbieżnego przetwarzania zapewniająca spójność replikowanych danych Poszerzona obsługa funkcji odtwarzania Rozproszonej BD przeciwdziałająca uszkodzeniom węzłów i połączeń sieciowych 27 Klasyfikacja rozproszonychbd Systemy wielu baz danych (multidatabases) Niefederacyjne rozproszone BD Federacyjne BD Jednorodne BD Rozproszone BD z globalnym schematem 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
Federacyjna Baza Danych Jest to kolekcja heterogenicznych, autonomicznych baz danych, połączonych ą siecią ą komputerową, ą zarządzana ą Federacyjnym y Systemem Zarządzania Bazą Danych (FSZBD). Może włączać dziesiątki, setki, tysiące lub więcej lokalnych baz danych. 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. FSZBD zapewnia warunki pracy twórców aplikacji globalnych określane jako przezroczystość i niezależność danych. 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 zapewnienia spójności i integralności przetwarzania. 29 Architektura federacyjnej BD Aplikacje globalne FSZBD 1 Przestrzeń robocza Schemat FBD... Aplikacje globalne FSZBD m Przestrzeń robocza Schemat FBD Sieć komputerowa Sh Schemat eksportowy 1 Osłona 1 API 1 Lokalny SZBD 1 BD 1 Sh Schemat eksportowy 2 Sh Schemat eksportowy n Osłona 2... Osłona n API 2 API n Lokalny Lokalny SZBD 2 BD 2 SZBD n BD n Aplikacje lokalne Aplikacje lokalne Aplikacje lokalne 30
Przyczyny heteregoniczności FBD Niezależność działania: twórcy systemów nie uzgadniają między sobą ich cech. Standardy są spóźnione i niekompletne Konkurencja 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. Efektywność finansowa i kompromisy: Wytwórcy oferują produkty o różnej cenie, funkcjonalności i jakości 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: 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. 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. Włączenie lokalnej bazy danych do federacji nie może powodować konieczności zmiany programów aplikacyjnych działających na lokalnej BD. 32
Autonomia lokalnej BD Federacja może przetwarzać lokalne zasoby tylko poprzez interfejs programowania aplikacji (API) specyficzny y dla lokalnego systemu. Inne metody (np. bezpośredni dostęp do plików) są niedozwolone. 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 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. Przezroczystość implementacji danych: zwolnienie programów aplikacyjnych z konieczności uwzględniania informacji o implementacji i organizacji danych. Przezroczystość protokołów komunikacyjnych: zwolnienie programów aplikacyjnych z konieczności uwzględniania aktualnych protokołów komunikacyjnych. Przezroczystość współbieżności: umożliwienie jednoczesnej pracy wielu programów aplikacyjnych y bez utraty spójności i integralności danych. Przezroczystość skalowania: umożliwienie dodawania/usuwania baz danych do/z federacji bez wpływu na postać programów aplikacyjnych. Przezroczystość awarii: minimalizacja skutków awarii węzłów 34 lub linii komunikacyjnych dla programów aplikacyjnych.
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. 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. 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. 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 ht h i rozproszonych oraz do tworzenia i przechowywanie kopii bezpieczeństwa danych strategicznych. Zkażdym z heterogenicznych źródeł informacji związana jest warstwa oprogramowania konwerter/monitor, integrator. Zadaniem modułu konwertera jest transformowanie danych z formatu wykorzystywanego w źródle do formatu stosowanego w hurtowni. 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). Zadaniem modułu integratora jest uaktualnianie danych w hurtowni. 36
Problemy budowy i eksploatacji Rozproszonej BD Niezawodność połączeń komunikacyjnych Sterowanie współbieżnością - blokowanie Obsługa katalogu zawartości BD - powielanie Aktualizacja kopii BD - kopia pierwotna Optymalizacja 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 podschematów zewnętrznych Projekt RBD 38
Fazy projektowania RBD Problemy zasadnicze: decyzje dotyczące lokalizacji: ==> SZRBD, SO ==> BD, aplikacji projekt 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 Zaprojektowanie schematu globalnego Dekompozycja p y j schematu globalnego g na schematy lokalne (projekty relacji + schemat fragmentacji) Projektowanie schematu alokacji BD Projekt lokalnych schematów BD integracja baz lokalnych Zalety fragmentacji: użytkowość efektywność współbieżność bezpieczeństwo Wady fragmentacji: wydajność integralność 40
Fazy projektowania RBD Techniki fragmentacji Pozioma (HF) ==> Pierwotna fragmentacja pozioma (PHF) ==> Wtórna fragmentacja pozioma (WHF) Pionowa (VF) ==> Trudniejsza w realizacji (więcej alternatyw) ==> Podejścia: grupowanie (atrybuty do fragmentów) dzielenie (relacja do fragmentów) Mieszana (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 VF R11 R12 R21 R22 R23 42
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 ś replikacji: 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ń 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
Rodzaje replikacji w rozproszonych BD Rodzaje replikacji: - synchroniczna - asynchroniczna Dodatkowe funkcje replikacji: skalowanie, transformowanie danych, obsługa obiektów BD, mechanizmy subskrypcji i inicjacji Warianty replikacji: pełna i częściowa (migawka), Zestaw replik składa się z wzorca (utworzonego onego z BD) i replik poszczególnych użytkowników Modele własności danych: - nadrzędny/podrzędny, - przekazywany, - swobodny. 45 Synteza projektowania rozproszonej bazy danych Relacje globalne FRAGMENTACJA REPLIKACJA Relacje fragmentowane Relacje replikowane ALOKACJA Relacje lokalne 46
Projektowanie alokacji w rozproszonej bazie danych F={F1, F2,...F3} W={W1, W2,... W3} Z={Z1, Z2,...Z3} fragmenty węzły zapytania (aplikacje) fragmenty nie są indywidualnymi relacjami dostęp do bazy bardziej złożony konieczność rozważenia kosztów integralności 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: BD: selektywność i rozmiar fragmentów aplikacja: typ i liczba dostępów, lokalizacja dostępu węzeł: koszt pamiętania i przetwarzania fragmentu w węźle Ograniczenia przy projektowaniu alokacji są następujące: koszt przetwarzania zapytania koszt i zakres przesyłania danych przepustowość: suma zapytań ładowanych do węzła <= wydajność węzła czas reakcji: czas realizacji zapytania <= max. dopuszczalnego czasu pamięć: wymagana suma pamięci dla fragmentów <= dostępnej pamięci. 48
Katalog systemowy rozproszonej bazy danych Zawartość katalogu systemowego (KSRBD): dane o strukturach i użytkownikach BD (schemat i podschematy BD, indeksy, użytkownicy itp.) dane dotyczące przetwarzania rozproszonego (fragmentacja, alokacja, replikacja) Warianty przechowywania KSRBD: Scentralizowany (cały katalog w wybranym węźle) Powielony (cały katalog w każdym węźle) Podzielony (każdy węzeł utrzymuje katalog dla własnych obiektów; cały katalog jest sumą wszystkich katalogów lokalnych) Mieszany (1+3; utrzymywanie własnego katalogu, kopie przechowywane w węźle centralnym) 49 Zapytania równoległe 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. SQL Server sam ustala optymalna liczbę wątków przy każdym uruchomieniu zapytania. 50
Zapytania rozproszone 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. 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 Zapytania rozproszone są podobne do mechanizmu tabel połączonych w MS Access. Mechanizm ten jest wbudowany w SQL Serverze poprzez OLE DB, jak interfejs do danych zewnętrznych. 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
Zapytania rozproszone Stosowane są techniki: Kwerenda ad hoc, wykorzystująca funkcję OPENROWSET. Należy podać potrzebne informacje do połączenia ze eźródłem danych OLE DB, oraz nazwę ę obiektu 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. 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 Rozwiązanie istotnych danych Parse Optymalizacja Kompilacja Wykonanie Parse Parse Ukryte zapytania Pierwsze wykonanie Wydzielenie y informacji Rozwiązanie Optymalizacja Kompilacja Wykonanie istotnych Parse Parse Parse Kolejne wykonanie Procedura ukrycia Wykonanie 54
Zapytania rozproszone Kwerendy rozproszone mogą być przetwarzane: na lokalnym serwerze, na zdalnym serwerze, będącym źródłem danych OLE DB, za pośrednictwem kwerendy przekazującej OPENQUERY Za pomocą zapytań rozproszonych nie można tworzyć nowych tabel, ani modyfikować już 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
Konfigurowanie środowiska serwerów Lokalny serwer SQL 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 połączonych Zdalny serwer SQL Zdalny serwer SQL Inne źródła danych 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 Łączenie i ze zdalnym 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' Łączenie ze źródłem danych OLE DB EXEC sp_addlinkedserver @server = 'OracleFinance', @product_name = 'Oracle', @provider_name = 'MSDAORA', @data_source = 'OracleDB' 58
Ustanawianie zabezpieczeń dla serwerów połączonych Przy wykonywaniu kwerendy rozproszonej lokalny serwer musi zalogować się do zdalnego serwera w imieniu użytkownika Jeżeli konto logowania użytkownika istnieje na obu serwerach, można go użyć do zalogowania się do zdalnego serwera Przy użyciu procedury sp_addlinkedsrvlogin można mapować konta logowania i hasła pomiędzy serwerami 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 sp_linkedservers sp_catalogs sp_indexes sp_primarykeys sp_foreignkeys sp_tables_ex sp_columns_ex Zwraca Listę serwerów połączonych zdefiniowanych na lokalnym serwerze Listę katalogów i opisów dla określonego serwera połączonego Informacje o indeksach dla określonej zdalnej tabeli Kolumny klucza podstawowego dla określonej tabeli, jeden wiersz na kolumnę Klucz obcy zdefiniowany dla określonej zdalnej tabeli Informacje dotyczące tabel z określonego serwera połączonego Informacje dotyczące kolumn dla tabeli połączonej, dla wszystkich kolumn lub określonej kolumny 60
Praca z serwerami połączonymi 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. ł nazwa_schematu.nazwa_obiektu Dozwolone instrukcje języka Transact-SQL SELECT z klauzulą WHERE lub JOIN, INSERT, UPDATE, DELETE Niedozwolone instrukcje języka Transact-SQL CREATE, ALTER, DROP ORDER BY dla zdalnych tabel zawierających duże obiekty READTEXT, WRITETEXT, UPDATETEXT Kwerendy serwera połączonego są przetwarzane lokalnie 61 Wykonywanie kwerend na serwerze połączonym Aby wykonać kwerendę przekazującą na serwerze połączonym, należy wykonać funkcję OPENQUERY W miejscu nazwy tabeli w instrukcji SELECT można użyć funkcji OPENQUERY Jako tabeli docelowej instrukcji INSERT, UPDATE lub DELETE można użyć wyniku funkcji OPENQUERY SELECT companyname FROM AccountingServer.northwindremote.dbo.suppliersnorthwindremote dbo SELECT * FROM OPENQUERY (AsiaServer, 'SELECT productid, royalty FROM Northwind.dbo.ProductInfo') 62
Wykonywanie procedury przechowywanej na serwerze połączonym Serwer lokalny Wywołanie procedury przechowywanej Serwer zdalny 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 Transakcję rozproszoną można rozpocząć przez: Wykonanie instrukcji BEGIN DISTRIBUTED TRANSACTION -LUB- Wywołanie funkcji API z klienta 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. 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 będzie tylko jedna instrukcja. 64
Dystrybucja danych MS DTC Replikacja AKTUALIZACJA AKTUALIZACJA AKTUALIZACJA Replikacja Program MS Distributed Transaction Coordinator kontroluje transakcje rozproszone i zapewnia ich integralność i zgodność aktualizacji danych 65 Replikacja danych 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: Zarządzanieą wielokrotnymi kopiami danych w różnych 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. 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