Plan wykładu Bazy danych Cechy rozproszonej bazy danych Implementacja rozproszonej bazy Wykład 15: Rozproszone bazy danych Małgorzata Krętowska, Agnieszka Oniśko Wydział Informatyki PB Bazy danych (studia dzienne) 2 Rozproszona baza danych Rozproszony system bazy danych - system baz danych, w którym występuje rozłożenie danych poprzez ich fragmentaryzację lub replikację do różnych konfiguracji sprzętowych i programistycznych, rozmieszczonych w różnych (geograficznie) miejscach Rozproszenie danych - fragmentaryzacja - replikacja Rozproszenie funkcji - np. systemy klient-serwer Fragmetaryzacja Pionowa: stanowi podzbiór kolumn w tabeli Pozioma: stanowi podzbiór wierszy w tabeli Odtworzenie oryginalnej tabeli: f. pionowa: złączenie na podstawie wartości klucza głównego f. pozioma: zastosowanie operacji Cechy bazy rozproszonej Replikacje (zalety) Przezroczystość goegraficzna: użytkownicy nie muszą wiedzieć, w którym miejscu są przechowywane dane Przezroczystość fragmentaryzacji: użytkownicy nie muszą wiedzieć, w jaki sposób są podzielone dane Przezroczystość replikacji: użytkownicy nie muszą wiedzieć, w jaki sposób dane są replikowane Odwzorowanie w bazie danych geograficznego podziału organizacji Większa kontrola (przechowywanie w miejscu, w którym jest potrzebna) Zwiększenie niezawodności systemu (replikacje danych) Przyśpieszenie dostępu do danych (zapytania do mniejszej liczby danych)
Replikacje (wady) Utrzymywanie identycznych kopii (każda aktualizacja danych stanowi transakcję rozproszoną) Ile kopii powinno powstać? Jaka jest aktywność aktualizacji? Synchronizacja danych po awarii sieci komunikacyjnej System zarządzania rozproszoną bazą danych Słownik danych: znacznie bardziej złożony, obejmuje informacje o położeniu fragmentów i replikacji tabel bazowych Optymalizator zapytań: powienien wykorzystywać informacje topologiczne o sieci (np. koszt przesłania informacji między dwoma węzłami) Zapewnienie odporności na awarie: oprogramowanie, jak i dane powinny zostać rozproszone po różnych miejscach Problemy związane ze współbieżnością Rozproszona baza danych: zbiór lokalnych baz danych w różnych węzłach sieci z punktu widzenia aplikacji stanowią jedną bazę autonomiczność węzłów Autoryzacja użytkowników lokalna autoryzacja użytkowników globalna autoryzacja użytkowników Oracle Security Server Szyfrowanie danych Advanced Networking Services Zarządzanie systemem rozproszonym Oracle Enterprise Manager Nazwa globalnej bazy danych każda baza wchodząca w skład systemu rozproszonego jest identyfikowana unikalną nazwą globalną (ang. global database name) Obiekty bazy danych: łączniki bazy danych perspektywy zmaterializowana (materialized view) synonimy migawki perspektywa (snapshot): lokalna kopia danych znajdujących się na jednej lub kilku odległych bazach danych Oprogramowanie sieciowe: Net8 - umożliwia komunikację między rozproszonymi bazami danych rozproszone transakcje (protokół zatwierdzania 2-fazowego) przezroczystość lokalizacji bazy (ang. location transparency) Powiązanie z bazą danych (database link) - zapisana w bazie danych ścieżka sieciowa do odległej bazy danych
Powiązanie z bazą danych Powiązanie z bazą danych przykład CREATE DATABASE LINK nazwa_powiązania CONNECT TO użytkownik IDENTIFIED BY hasło USING nazwa_usługi ; CREATE DATABASE LINK baza CONNECT TO scott IDENTIFIED BY tiger USING połączenie ; nazwa_usługi - nazwa aliasu bazy danych, zdefiniowana np. w pliku konfiguracyjnych tnsnames.ora SELECT * FROM emp@baza; Migawki (repliki) Migawki (repliki) CREATE SNAPSHOT MATERIALIZED VIEW nazwa_migawki REFRESH NEXT przedział_czasu AS zapytanie; przedział_czasu określa, co jaki czas należy odświeżyć migawkę CREATE SNAPSHOT wszyscy_pracownicy REFRESH NEXT sysdate + 1 AS SELECT * FROM emp@bialystok SELECT * FROM emp@gdansk; SELECT * FROM wszyscy_pracownicy WHERE job = MANAGER ; Obiekty migawki Typy migawek W lokalnej bazie dla każdej migawki tworzone są trzy obiekty: 1. Tabela, w której zapisywany jest wynik zapytania (perspektywa zmaterializowana) 2. Indeks dla klucza głównego 3. Perspektywa służąca do wyświetlania i używania zawartości migawki Proste (szybkie odświeżenie) Złożone (z klauzulami GROUP BY, DISTINCT, funkcjami sumarycznymi, złączenia tabel) Dziennik migawki: tabela, do której są wpisywane zmiany dokonywane na tabeli-oryginale. Pozwala na przyśpieszenie odświeżania migawek.
Tworzenie dziennika migawki CREATE SNAPSHOT LOG ON schemat.tabela [PCTFREE integer] [PCTUSED integer] [INITRANS integer] [MAXTRANS integer] [TABLESPACE tablespace] [STORAGE storage_clause]; Modyfikowanie danych przez migawkę CREATE SNAPSHOT kopia_emp REFRESH NEXT sysdate + 1 FOR UPDATE AS SELECT * FROM emp@gdansk; CREATE SNAPSHOT LOG ON emp PCTFREE 5 TABLESPACE users; Modyfikowalne migawki wymagają zainstalowanie serwera ORACLE z opcją advanced replication Zapytania do bazy danych Modyfikacja danych SELECT * FROM emp@bialystok SELECT * FROM emp@gdansk SELECT * FROM emp@poznan; Białystok Gdańsk Poznań UPDATE emp@gdansk SET sal = sal + 100 WHERE empno=1234; COMMIT; Rozłączenie z bazą danych Zatwierdzanie transakcji ALTER SESSION CLOSE DATABASE LINK nazwa_połączenia ALTER SESSION CLOSE DATABASE LINK gdansk; Zatwierdzanie dwufazowe: 1. Lokalne bazy danych informują wyróżniony węzeł (koordynator transakcji), czy lokalna część transakcji może zostać zatwierdzona, czy musi być wycofana. 2. Wszystkie lokalne bazy muszą zgodzić się na zatwierdzenie zmian.
Zatwierdzanie transakcji: Faza I Lokalne bazy danych informują wyróżniony węzeł (koordynator transakcji), czy lokalna część transakcji może zostać zatwierdzona, czy musi być wycofana Zatwierdzanie transakcji: Faza II Wszystkie lokalne bazy muszą zgodzić się na zatwierdzenie zmian prepare commit abort ready do not commit koordynator koordynator Rozwiązywanie kolizji Ustalenie reguł: np. opartych na priorytetach Pozostawienie konfliktów do roztrzygniecia administratorowi bazy danych Procedura roztrzygająca w ramach aplikacji