Rozproszone bazy danych

Slides:



Advertisements
Podobne prezentacje
Indeksy w bazie danych Oracle
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
INDEKSY I SORTOWANIE ZEWNĘTRZNE
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Rozproszone bazy danych
BAZA DANYCH - RODZAJE.
WPROWADZENIE DO BAZ DANYCH
Hurtownie Danych Mariusz Dołęga.
Wycofywanie potwierdzonych transakcji
Microsoft Office Access
Kwerendy, formularze, relacje, raporty i makra
Wykład 10 Prowadzący: dr Paweł Drozda
SQL-owskie szlaki górskie
1 Kryteria wyboru systemów: Przystępując do procesu wdrażania zintegrowanego systemu zarządzania, należy odpowiedzieć na następujące pytania związane z.
Wykład 6 Wojciech Pieprzyca
Wykład 5 Wojciech Pieprzyca
Wykład 4 Wojciech Pieprzyca
Artur Szmigiel Paweł Zarębski Kl. III i
Rozproszone bazy danych
Rozproszone bazy danych
SQL - język relacyjnych i obiektowo-relacyjnych baz danych
Projektowanie fizycznej bazy danych
WYKONYWANIE ZAPYTAŃ Przygotował Lech Banachowski na podstawie: 1.Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka.
Modele baz danych - spojrzenie na poziom fizyczny
„Relacyjne Bazy Danych (Oracle)”
Rozproszone bazy danych – 1 Replikacja danych
Zarządzanie transakcjami Wykład S. Kozielski. Zarządzanie transakcjami Transakcja – jedna lub więcej operacji na bazie danych stanowiących pewną logiczną
Bezpieczeństwo baz danych
SIEĆ P2P 1. Definicja sieci równouprawnionej. To taka sieć, która składa się z komputerów o takim samym priorytecie ważności, a każdy z nich może pełnić.
Rozproszone bazy danych (cz.2)
SQL – zapytania posumowanie
SQL – Structured Query Language (3)
Tworzenie nowych kont lokalnych i domenowych, oraz zarządzanie nimi
dr hab. Ryszard Walkowiak prof. nadzw.
Bazy danych podstawowe pojęcia
Prezentacja i szkolenie
Bazy danych.
Rozwiązanie zadań do zaliczenia I0G1S4 // indeks
Wybrane zagadnienia relacyjnych baz danych
dr Łukasz Murowaniecki T-109
1 Każdy obiekt jest scharakteryzowany poprzez: tożsamość – daje się jednoznacznie wyróżnić; stan; zachowanie. W analizie obiektowej podstawową strukturą
Bazy danych Microsoft access 2007.
Opracowanie ćwiczeń dotyczących zapewniania niezawodności baz danych na przykładzie Oracle Opiekun : dr inż. Agnieszka Landowska Dyplomant : Tomasz Krzyżanowski.
Systemy rozproszone  Rozdzielenie obliczeń między wiele fizycznych procesorów.  Systemy luźno powiązane – każdy procesor ma lokalną pamięć; procesory.
(c) 1999, Instytut Informatyki Politechniki Poznańskiej Rozdział 1: Wprowadzenie do baz danych.
Temat 1: Strukturalny język zapytań SQL
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Archiwizacja bazy danych
Systemy informatyczne
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Zbiór danych zapisanych zgodnie z określonymi regułami. W węższym znaczeniu obejmuje dane cyfrowe gromadzone zgodnie z zasadami przyjętymi dla danego.
Slajd 1© J.Rumiński Jacek Rumiński  Bazy danych Kontakt: Katedra Inżynierii Biomedycznej, pk. 106, tel.: , fax: ,
Projektowanie relacyjnych baz danych – diagramy związków encji
Komendy SQL do pracy z danymi
.NET i Bazy Danych Projekt: Wadim Grasza.
Optymalna konfiguracja Microsoft SQL Server 2014
Projektowanie postaci formularza:
BAZY DANYCH MS Access.
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Model warstwowy ISO-OSI
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Temat: Tworzenie bazy danych
Strukturalny język zapytań SQL - historia
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Technologie Informacyjne Bazy danych
JavaBeans by Paweł Wąsala
Czym są i jak służą społeczeństwu?
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

Rozproszone bazy danych Przygotował Lech Banachowski na podstawie: Raghu Ramakrishnan, Johannes Gehrke, Database Management Systems, McGrawHill, 2000 (książka i slide’y). Lech Banachowski, Krzysztof Stencel, Systemy zarządzania bazami danych, Wyd. PJWSTK Dokumentacja Oracle. 1

Przy rozproszeniu użytkowników w sieci internetowej Najprostsza organizacja bazy danych - baza scentralizowana: dane są przechowywane w jednym węźle sieci. Zalety: Jeden system kontroli danych zapewniający ochronę i spójność danych. Przetwarzanie transakcji i odtwarzanie po awarii objęte sprawdzonymi algorytmami i protokołami. Wady: Potencjalnie długi czas oczekiwania na rezultaty z odległego węzła sieci – bardzo długi przy awarii sieci lub centralnego węzła. Brak kontroli nad danymi specyficznymi dla danego miejsca. Generowanie dużego ruchu w sieci.

Przy rozproszeniu użytkowników w sieci internetowej Możliwa organizacja bazy danych - baza rozproszona: dane są przechowywane w wielu węzłach sieci - część jest powtarzana (replikowana). Zalety: Dane bliżej końcowego użytkownika - szybsze zapytania. Węzeł lokalny może mieć kontrolę nad swoimi danymi. Łatwiej dopasować lokalną bazę danych i lokalne aplikacje do potrzeb lokalnych użytkowników. Zwiększenie dostępności danych w sieci (m.in. poprzez repliki). Wady: Trudności w utrzymaniu spójności danych. Transakcje i odtwarzanie bardziej skomplikowane - przy awariach możliwe trudności w zakończeniu transakcji. Bardziej skomplikowana aktualizacja danych (przez repliki).

Rozproszona baza danych Baza danych składająca się z kilku składowych baz danych na ogół rozmieszczonych w odległych węzłach sieci. Rozproszona baza danych w ścisłym znaczeniu (w rozumieniu Standardu SQL) – jedna baza danych implementowana w postaci zbioru baz danych – nie widocznych dla użytkowników. Dla końcowego użytkownika wygląda tak samo jak zwykła, scentralizowana baza danych, tak samo z każdego węzła sieci.

Skonfederowana rozproszona baza danych Konfederacja baz danych składa się z kilku składowych baz danych na ogół rozmieszczonych w odległych węzłach sieci. Każda baza danych ma autonomię i realizuje swoje własne zadania. Są określone wspólne zadania, do których realizacji trzeba użyć kilku baz danych w konfederacji w oparciu o: zdalne udostępnianie części swoich danych; możliwości utrzymywania replik dla dostępnych zdalnie danych. Każda baza danych stanowi osobny system mający własnych użytkowników. Do realizacji pewnych specjalnych wspólnych zadań bazy danych tworzą federację w oparciu o określony mechanizm integrujący (może to być mediator). Transakcje lokalne działają na lokalnych bazach danych. Transakcje globalne działają na federacji baz danych i zwykle składają się z kilku niezależnych lokalnych transakcji.

Przykład bazy skonfederowanej System kontroli opłat abonamentowych TVP. Komponenty to niezależne bazy danych: – Urzędu Miasta • dane meldunkowe obywateli – sieci MediaMarkt • dane o sprzedaży odbiorników RTV – Urzędu Radiofonii i TV • dane o płaconych abonamentach Autor przykładu: Robert Wrembel, Systemy rozproszonych baz danych – wykłady w postaci elektronicznej

Przykład konfederacji: budowa bazy integrującej zbiór odległych baz danych Do istniejącego zbioru odległych baz danych dodaje się nową bazę danych, której celem jest ich integracja.

Problem integracji informacji Powiązane dane istnieją w różnych miejscach i może zaistnieć potrzeba jednoczesnego ich użycia przez jedną aplikację. Bazy danych mogą się różnić: modelem (np. relacyjny, obiektowo-relacyjny, hierarchiczny, XML, pliki MS Excel), schematem (np. znormalizowany, nieznormalizowany), terminologią (np. czy konsultanci firmy są pracownikami, czy emerytowani pracownicy są pracownikami), konwencjami (np. stopnie Celsjusza lub Fahrenheita; mile lub kilometry).

Hurtownia danych Skopiuj dane źródłowe do centralnej bazy danych dokonując ich transformacji do wspólnego schematu. Regularnie dokładaj nowe dane. Po zapisaniu - tylko do odczytu.

Utwórz perspektywę wszystkich źródeł danych, tak jakby były zintegrowane. Albo tylko zapytania albo odczyt i zapis z użyciem protokołu 2PC – mediator koordynatorem. Mediator

Przechowywanie danych TID t1 t2 t3 t4 Fragmentacja (tabeli) Pozioma: zwykle na rozłączne fragmenty. Pionowa: z możliwością odtworzenia całej tabeli. Replikacja Zwiększona dostępność danych. Szybsze wykonywanie zapytań. Synchroniczna vs. asynchroniczna. R1 R3 Operacja Fragmentacja pozioma Fragmentacja pionowa rozkład selekcja rzut złożenie suma złączenie Tab. 13.1 Operacje związane z fragmentacjami tabeli Węzeł A Węzeł B R1 R2

System zarządzania rozproszoną bazą danych Słownik danych rozproszonej bazy danych jest znacznie bardziej złożony. Obejmuje on, na przykład informacje o położeniu fragmentów i replikacji tabel bazowych. Problemy związane ze współbieżnością są zwielokrotnione w systemach rozproszonych. Propagowanie aktualizacji do szeregu różnych węzłów jest skomplikowane. Optymalizator zapytań w prawdziwym systemie rozproszonym powinien być w stanie użyć informacje topologiczne o sieci (np. o koszcie przesłania danych między dwoma węzłami) przy decydowaniu jak najlepiej wykonać dane zapytanie.

Rozproszone złączenia Załóżmy, że tabela Dept jest dostępna w Warszawie a  Emp jest dostępna w Krakowie. SELECT E.Ename, D.Dname   FROM Emp E INNER JOIN Dept D ON E.Deptno=D.Deptno   WHERE E.Job='MANAGER' AND D.Loc='Warszawa' Sprowadź jedną tabelę do węzła gdzie jest druga tabela i tam wykonaj złączenie. Korzystając z praw algebry relacji zastosuj najpierw odpowiednią selekcję i projekcję i tylko ich wynik prześlij do drugiego węzła. Gdy rozmiar wyniku jest duży, sprowadź obie tabele do końcowego węzła i tam je złącz.

Metoda półzłączeń (Semijoins) – minimalizacja przesyłania danych między węzłami W Warszawie, dokonaj projekcji tabeli Dept na kolumny złączenia i prześlij wynik do Krakowa. Można też zastosować selekcję d.Loc='Warszawa' ograniczającą zbiór wierszy. W Krakowie dokonaj złączenia projekcji tabeli Dept z tabelą Emp korzystając z selekcji E.Job='MANAGER' ograniczającej zbiór wierszy. Wynik nazywa się redukcją tabeli Emp względem Dept. Prześlij redukcję tabeli Emp do Warszawy. W Warszawie, dokonaj ostatecznego złączenia tabeli Dept z redukcją tabeli Emp.

Ilustracja metody półzłączeń Idea metody półzłączeń: koszt przesłania całej tabeli zastępujemy kosztem obliczenia i przesłania kolejno projekcji i redukcji.

Rozkład zapytania na trzy A(Deptno)=SELECT D.Deptno FROM Dept D WHERE D.Loc='Warszawa' B(Deptno,Ename)=SELECT E.Deptno, E.Ename FROM Emp E INNER JOIN A ON E.Deptno=A.Deptno WHERE E.Job='MANAGER' SELECT B.Ename, D.Dname  FROM B INNER JOIN Dept D ON B.Deptno=D.Deptno

Odświeżanie replik Synchroniczna replikacja: Zanim modyfikująca transakcja zostanie zatwierdzona należy dokonać aktualizacji wszystkich replik (obejmuje zakładanie blokad, wymianę komunikatów w sieci). Przy odczytywaniu można skorzystać z dowolnej kopii. Asynchroniczna replikacja: Kopie zmodyfikowanej tabeli są tylko okresowo aktualizowane – metoda znacznie tańsza; ale chwilowo różne kopie mogą nie być ze sobą zsynchronizowane. To samo zapytanie oparte na replikach może w różnych węzłach dać różne wyniki.

Modyfikacja danych przez repliki Replika modyfikowalna to replika przez którą można dokonywać zmian w tabeli oryginale wykonując instrukcje INSERT/DELETE/UPDATE. Zasadniczym problemem jest, co robić w przypadku konfliktu, np. gdy w dwóch różnych węzłach dokonano różnych modyfikacji tego samego wiersza. Dla replik może być zastosowany model optymistycznych blokad. Gdy oryginalny wiersz został w międzyczasie zmieniony i zmiany zostały zatwierdzone, aktualizacja wiersza w replice zostaje wycofana.

Kończenie rozproszonej transakcji Dodatkowe rodzaje awarii, np. związane z połączeniami sieciowymi i odległymi węzłami. Gdy “pod-transakcje” całej transakcji są wykonywane w różnych węzłach, nie mogą same zatwiedzić swojej części transakcji; wszystkie wykonują COMMIT albo wszystkie wykonują ROLLBACK. Potrzebny jest specjalny protokół zatwierdzania (wykonywania COMMIT). Przy realizacji zleconej do wykonania COMMIT może się zatem pojawić ROLLBACK całej transakcji rozproszonej! Również zlecony do wykonania „rozproszony” ROLLBACK. W każdym węźle jest utrzymywany odrębny dziennik (log) wykonywanych akcji, jak w scentralizowanej bazie danych. W tym dzienniku są odnotowywane akcje protokołu zatwierdzania.

Model rozproszonych obliczeń

Protokół dwufazowego zatwierdzania (2PC) Węzeł inicjujący transakcję – koordynator. Wykonanie instrukcji COMMIT na sieci węzłów: Koordynator wysyła komunikat prepare. Węzły zapisują w swoim dzienniku rekord abort lub prepare a następnie wysyłają do koordynatora komunikat no lub yes. Gdy koordynator uzyska jednomyślną odpowiedź yes, zapisuje do swojego dziennika rekord commit i wysyła komunikat commit. Wpp. zapisuje do swojego dziennika rekord abort i wysyła komunikat abort. Węzły zapisują w swoim dzienniku odpowiedni rekord abort/commit i end a następnie wysyłają do koordynatora komunikat ack. Po otrzymaniu wszystkich potwierdzeń ack koordynator zapisuje do swojego dziennika rekord end.

Komentarz na temat 2PC Dwie rundy komunikacji: pierwsza - głosowanie; druga - kończenie. Obie inicjowane przez koordynatora. Każdy węzeł może zadecydować o wycofaniu (abort) transakcji. Każdy komunikat odzwierciedla decyzję nadawcy; aby mieć pewność odporności na awarie, decyzja jest najpierw zapisywana do dziennika transakcji (logu).

Obsługa awarii 2PC wymaga uzupełnienia o obsługę awarii Np. serwer lokalny może ulec awarii po tym jak odpowiedział twierdząco koordynatorowi a przed otrzymaniem od koordynatora polecenia commit. Wtedy koordynator ponawia polecenia commit, dopóki lokalny serwer nie podniesie się. Wtedy lokalny serwer zatwierdza „zawieszoną” część swojej transakcji i wysyła odpowiedź potwierdzającą „ack”. Dopiero po jej otrzymaniu koordynator może zakończyć całą transakcję.

ROLLBACK w 2PC Koordynator przekazuje węzłom lokalnym polecenie abort do wykonania lokalnie. Po otrzymaniu potwierdzeń od wszystkich węzłów zapisuje do swojego dziennika rekord end i kończy transakcję.

Dwu-fazowe zatwierdzanie (2PC) z domyślnym wycofaniem W przypadku podjęcia decyzji o wycofaniu zarówno koordynator (po wysłaniu komunikatu abort) jak i węzeł lokalny od razu dokonują wycofania transakcji. Brak transakcji w pamięci RAM oznacza, że została ona wycofana. Natomiast gdy koordynator podjął decyzję o zatwierdzeniu transakcji rozproszonej, utrzymuje o niej informacje dopóki nie uzyska potwierdzeń ack od wszystkich lokalnych węzłów.

Implementacja rozproszonych baz danych w Oracle Oracle dostarcza oprogramowania sieciowego umożliwiającego komunikację między bazami danych Oracle oraz obsługę transakcji działających na więcej niż jednej bazie danych – w tym zatwierdzanie takich transakcji i ich wycofywanie.

Powiązanie z odległą bazą danych (database link) Jest to zapisana w bazie danych ścieżka sieciowa do odległej bazy danych. Składnia: CREATE DATABASE LINK nazwa_powiązania CONNECT TO użytkownik IDENTIFIED BY hasło USING ’nazwa_usługi’; gdzie: użytkownik/hasło – dotyczą konta, na które ma zostać dokonane logowanie w odległej bazie danych, jeśli ich brak – używana jest nazwa użytkownika i hasło z lokalnej bazy danych, nazwa_usługi – nazwa usługi (aliasu bazy danych) sieciowej Oracle zdefiniowanej w pliku konfiguracyjnym TNSNAMES.ORA .

Przy wykonywaniu instrukcji SELECT * FROM Emp@baza; Po utworzeniu powiązania z bazą danych, można korzystać z tabel i perspektyw w tej odległej bazie danych, tak jakby znajdowały się one w lokalnej bazie danych – dołączając do nazwy tabeli lub perspektywy napis @nazwa_powiązania. Na przykład, instrukcja CREATE DATABASE LINK baza CONNECT TO scott IDENTIFIED BY tiger USING 'mojabaza'; tworzy powiązanie bazodanowe o nazwie baza z odległą bazą danych określoną przez sieciową usługę Oracle o nazwie mojabaza. Przy wykonywaniu instrukcji SELECT * FROM Emp@baza; lokalny serwer Oracle łączy się z odległą bazą danych mojabaza. Oprogramowanie sieciowe Oracle znajdujące się na docelowym komputerze przechwytuje zgłoszenie i dokonuje logowania w bazie mojabaza na konto scott/tiger. Serwer wykonuje przesłaną instrukcję SELECT i przesyła przez sieć z powrotem wyniki zapytania, jednocześnie wylogowując użytkownika scott/tiger.

Przykłady Perspektywa Synonim UPDATE Emp@warszawa SET Salary = Salary * 1.1; SELECT * FROM Emp@warszawa UNION SELECT * FROM Emp@gdansk SELECT * FROM Emp@katowice; Perspektywa CREATE VIEW Pracownicy(Ename, Sal) AS SELECT Ename, Sal FROM Emp@warszawa UNION SELECT Ename, Sal FROM Emp@gdansk SELECT Ename, Sal FROM Emp@katowice; Oracle potrafi wykonać dowolne instrukcje SQL, tak jakby tabele i perspektywy z odległych baz danych znajdowały się w lokalnej bazie danych np. Synonim CREATE SYNONYM Klienci FOR Klienci@gdansk;

Replika, migawka, perspektywa zmaterializowana lokalna kopia (replika) danych znajdujących się w jednej lub więcej odległych bazach danych. Składnia (Oracle): CREATE SNAPSHOT nazwa_migawki REFRESH NEXT przedział_czasu AS zapytanie; gdzie przedział_czasu określa co jaki czas należy odświeżać replikę, zapytanie – określa zapytanie, które tworzy zawartość repliki. Zamiast słowa kluczowego SNAPSHOT można też używać słowa kluczowego MATERIALIZED VIEW.

Przykład Instrukcja CREATE SNAPSHOT Wszyscy_prac REFRESH NEXT Sysdate +1 AS SELECT * FROM Emp@warszawa UNION AS SELECT * FROM Emp@gdansk; tworzy migawkę złożoną z danych o pracownikach pochodzących z dwóch oddziałów firmy w Warszawie i Gdańsku. Zawartość migawki będzie odświeżana raz na dzień. Po zdefiniowaniu migawki Wszyscy_prac można jej używać w zapytaniach, tak jakby to była zwykła tabela lub perspektywa. Np. SELECT * FROM Wszyscy_prac WHERE Job = 'MANAGER'; wypisuje informacje o wszystkich osobach pracujących w firmie na stanowisku MANAGER.

Odświeżanie replik (migawek) Migawka prosta – w instrukcji SELECT nie występują ani klauzule GROUP BY, CONNECT BY, DISTINCT ani funkcje sumaryczne ani operatory zbiorowe ani złączenia tabel. Dla migawki prostej jest możliwe szybkie (przyrostowe) odświeżanie (opcja REFRESH FAST) pod warunkiem utworzenia w węźle, w którym znajduje się tabela nadrzędna tej migawki, specjalnego dziennika tej tabeli, do którego są wpisywane wszystkie zmiany dokonywane na tej tabeli. Następnie przy odświeżaniu migawki zamiast przesyłać całą zawartość tabeli są przesyłane tylko nowe pozycje dziennika wpisane od ostatniego odświeżania. Składnia: CREATE SNAPSHOT LOG ON Emp;

Modyfikowanie danych przez migawkę Migawka modyfikowalna (musi być prosta): CREATE SNAPSHOT Rep_emp REFRESH FAST NEXT sysdate +1 FOR UPDATE AS SELECT * FROM Emp@warszawa Można przez nią wprowadzać zmiany. UPDATE Rep_emp SET Sal = Sal*1.05 WHERE Ename = 'SCOTT';