Plan wykładu Bazy danych • Cechy rozproszonej bazy danych • Implementacja rozproszonej bazy danych w ORACLE Wykład 15: Rozproszone bazy danych Małgorzata Krętowska, Agnieszka Oniśko Wydział Informatyki PB Bazy danych (studia dzienne) 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 2 Fragmetaryzacja Pionowa: stanowi podzbiór kolumn w tabeli Pozioma: stanowi podzbiór wierszy w tabeli Rozproszenie danych - fragmentaryzacja - replikacja Rozproszenie funkcji - np. systemy klient-serwer Cechy bazy rozproszonej Odtworzenie oryginalnej tabeli: f. pionowa: złączenie na podstawie wartości klucza głównego f. pozioma: zastosowanie operacji UNION Replikacje (zalety) Przezroczystość goegraficzna: użytkownicy nie muszą wiedzieć, w którym miejscu są przechowywane dane Odwzorowanie w bazie danych geograficznego podziału organizacji Przezroczystość fragmentaryzacji: użytkownicy nie muszą wiedzieć, w jaki sposób są podzielone dane Większa kontrola (przechowywanie w miejscu, w którym jest potrzebna) Przezroczystość replikacji: użytkownicy nie muszą wiedzieć, w jaki sposób dane są replikowane Zwiększenie niezawodności systemu (replikacje danych) Przyśpieszenie dostępu do danych (zapytania do mniejszej liczby danych) Replikacje (wady) System zarządzania rozproszoną bazą danych Utrzymywanie identycznych kopii (każda aktualizacja danych stanowi transakcję rozproszoną) Słownik danych: znacznie bardziej złożony, obejmuje informacje o położeniu fragmentów i replikacji tabel bazowych Ile kopii powinno powstać? Jaka jest aktywność aktualizacji? Optymalizator zapytań: powienien wykorzystywać informacje topologiczne o sieci (np. koszt przesłania informacji między dwoma węzłami) Synchronizacja danych po awarii sieci komunikacyjnej Zapewnienie odporności na awarie: oprogramowanie, jak i dane powinny zostać rozproszone po różnych miejscach Problemy związane ze współbieżnością Implementacja rozproszonych baz danych w ORACLE 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 Implementacja rozproszonych baz danych w ORACLE 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 Implementacja rozproszonych baz danych w ORACLE 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 Implementacja rozproszonych baz danych w ORACLE 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 CREATE DATABASE LINK baza IDENTIFIED BY hasło CONNECT TO scott IDENTIFIED BY tiger USING ‘nazwa_usługi’; 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 CREATE SNAPSHOT wszyscy_pracownicy REFRESH NEXT przedział_czasu REFRESH NEXT sysdate + 1 AS zapytanie; AS SELECT * FROM emp@bialystok UNION przedział_czasu – określa, co jaki czas należy odświeżyć migawkę SELECT * FROM emp@gdansk; SELECT * FROM wszyscy_pracownicy WHERE job = ‘MANAGER’; Obiekty migawki Typy migawek • Proste (szybkie odświeżenie) W lokalnej bazie dla każdej migawki tworzone są trzy obiekty: 1. Tabela, w której zapisywany jest wynik zapytania (perspektywa zmaterializowana) • Złożone (z klauzulami GROUP BY, DISTINCT, funkcjami sumarycznymi, złączenia tabel) 2. Indeks dla klucza głównego 3. Perspektywa służąca do wyświetlania i używania zawartości migawki 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]; CREATE SNAPSHOT LOG ON emp Modyfikowanie danych przez migawkę CREATE SNAPSHOT kopia_emp REFRESH NEXT sysdate + 1 FOR UPDATE AS SELECT * FROM emp@gdansk; Modyfikowalne migawki wymagają zainstalowanie serwera ORACLE z opcją “advanced replication” PCTFREE 5 TABLESPACE users; Zapytania do bazy danych SELECT * FROM emp@bialystok Modyfikacja danych Białystok UPDATE emp@gdansk SET sal = sal + 100 UNION SELECT * FROM emp@gdansk Gdańsk WHERE empno=1234; UNION COMMIT; SELECT * FROM emp@poznan; Poznań Rozłączenie z bazą danych ALTER SESSION CLOSE DATABASE LINK nazwa_połączenia ALTER SESSION CLOSE DATABASE LINK gdansk; Zatwierdzanie transakcji 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 commit abort prepare ready do not commit koordynator Rozwiązywanie kolizji Ustalenie reguł: np. opartych na priorytetach Pozostawienie konfliktów do roztrzygniecia administratorowi bazy danych Procedura roztrzygająca w ramach aplikacji koordynator