Wprowadzenie do systemów rozproszonych i

advertisement
Języki i środowiska programowania
systemów rozproszonych
Wykładowca: Tomasz Kowalski
Wykład 1
Wprowadzenie do
systemów rozproszonych
i rozproszonych baz
danych
Wykłady przygotowane na
podstawie materiałów
prof. Kazimierza Subiety
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 1
2011
Co to jest system rozproszony?
 Systemem rozproszonym nazywamy taki system, w którym
przetwarzanie informacji odbywa się na wielu komputerach, często
znacznie oddalonych geograficznie (od kilku metrów do dziesiątków
tysięcy kilometrów).
• Przeciwieństwem jest system izolowany lub scentralizowany.
 Obecnie właściwie wszystkie systemy są rozproszone.
• Ogromnym katalizatorem rozproszenia systemów jest Internet.
 Projektowanie i własności systemów rozproszonych w dużej mierze są
takie same jak systemów scentralizowanych, ale istnieją także istotne
różnice, który specjalista inżynierii oprogramowania musi być świadomy.
 Tendencja do budowy systemów rozproszonych jest pochodną rozbudowy
tanich, szybkich, uniwersalnych i niezawodnych sieci komputerowych.
 Przykłady systemów rozproszonych: sieć bankomatów, system rezerwacji
biletów, system pracy grupowej, itd.
 Nową jakość do tematu systemów rozproszonych wnoszą sieci P2P (PeerTo-Peer) oraz technologie gridowe (grid computing).
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 2
2011
Zalety systemów rozproszonych (1)
 Podział zasobów: system rozproszony pozwala dzielić zasoby sprzętowe i
programowe pomiędzy wielu użytkowników pracujących na różnych
komputerach pracujących w sieci.
 Otwartość: jest ona definiowana jako zdolność systemu do dołączania
nowego sprzętu, oprogramowania i usług.
• Najlepiej na platformach sprzętowych i systemach operacyjnych
dostarczanych przez różnych dostawców.
 Współbieżność: w systemie rozproszonym wiele procesów może działać
w tym samym czasie na różnych komputerach w sieci.
• Procesy te mogą komunikować się podczas swego działania.
 Skalowalność: Moc i możliwości przetwarzania może wzrastać w miarę
dodawania do systemu nowych zasobów, w szczególności komputerów.
• W praktyce skalowalność jest często ograniczona poprzez przepustowość
sieci oraz (niekiedy) poprzez np. specyficzne protokoły wymiany informacji.
• Niemniej skalowalność systemu rozproszonego jest nieporównywalnie lepsza
w stosunku do systemu scentralizowanego.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 3
2011
Zalety systemów rozproszonych (2)
 Tolerancja błędów: Dostępność wielu komputerów oraz
umożliwienie zdublowania informacji (replikacje) oznacza, że
rozproszony system jest tolerancyjny w stosunku do pewnych
błędów zarówno sprzętowych jak i programowych.
• Np. awaria węzła komunikacyjnego powoduje wygenerowanie innej trasy
przepływu informacji.
 Przezroczystość: Oznacza ukrycie przed użytkownikiem
szczegółów rozproszenia, np. gdzie ulokowane są zasoby lub jak są
one fizycznie zaimplementowane, pod jakim systemem pracują, itd.
• Przezroczystość ma zasadnicze znaczenie dla komfortu działania
użytkownika oraz dla niezawodności budowanego oprogramowania.
• Niekiedy, np. dla celów optymalizacyjnych, użytkownik może zrezygnować z
pełnej przezroczystości.
• Przykładem przezroczystości jest Internet: klikając w aktywne pole na stronie
WWW nie interesujemy się, gdzie znajduje się odpowiadająca mu strona,
oraz jak i na czym jest zaimplementowana.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 4
2011
Wady systemów rozproszonych
 Złożoność: systemy rozproszone są trudniejsze do zaprogramowania i do
administrowania niż systemy scentralizowane.
• Zależą od własności sieci, np. jej przepustowości i czasu transmisji, co utrudnia
zaprojektowanie i zrealizowanie wielu algorytmów i procesów przetwarzania.
 Ochrona: Dla systemu scentralizowanego wystarcza w zasadzie strażnik z
karabinem. System rozproszony nie może być chroniony w ten sposób,
przez co może być narażony na różnorodne ataki (włamania, wirusy,
sabotaż, odmowa płatności, itd.) z wielu stron, które trudno
zidentyfikować.
 Zdolność do zarządzania: jest ona utrudniona wskutek tego, że
konsekwencje różnych działań administracyjnych w systemie
rozproszonym są trudniejsze do zidentyfikowania.
• Podobnie z przyczynami sytuacji anormalnych, w szczególności awarii.
 Nieprzewidywalność: system rozproszony jest nieprzewidywalny w
swoim działaniu, ponieważ zakłócenia mogą być powodowane przez
wiele przyczyn: małą przepustowość i awarię łączy, awarię komputerów,
zbyt duże obciążenie danego serwera, lokalne decyzje administracji
serwera, itd.; patrz WWW.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 5
2011
Krytyczne zagadnienia projektowe dla systemów
rozproszonych
 Identyfikacja zasobów: zasoby są podzielone pomiędzy wiele komputerów,
w związku z czym schematy ich nazywania muszą być zaprojektowane tak,
aby użytkownicy mogli zidentyfikować interesujące ich zasoby.
• Przykładem takiego schematu jest URL znany z WWW.
 Komunikacja: może być zaprojektowana w sposób uniwersalny, na bazie
np. protokołu internetowego TCP/IP.
• Niektóre wymagania dotyczące szybkości, kosztu, niezawodności lub
bezpieczeństwa mogą prowadzić do specjalnych technik komunikacyjnych.
 Jakość obsługi: odzwierciedla wydajność systemu, jego dostępność i
niezawodność.
• Podlega ona wielu czynnikom, w szczególności, przypisaniu zadań do
procesorów, optymalności geograficznego podziału danych, itd.
 Architektura oprogramowania: opisuje ona w jaki sposób funkcjonalności
systemu są przypisane do logicznych i fizycznych komponentów systemu.
Wybór dobrej architektury przesądza o spełnieniu kryterium jakości obsługi.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 6
2011
Popularne architektury rozproszenia
 Klient-serwer: rozproszony system ma wyróżniony węzeł zwany serwerem,
oraz szereg podłączonych do niego węzłów zwanych klientami.
• Związek nie jest symetryczny: serwer wykonuje usługi zlecane przez klientów,
nie może im odmówić i nie może im zlecić wykonanie usług.
 Klient-multi-serwer: podobnie jak dla architektury klient-serwer, ale
istnieje wiele serwerów, np. WWW.
 Koleżeńska (peer-to-peer, P2P): wiele węzłów świadczy sobie wzajemne
usługi poprzez bezpośrednie połączenie; nie ma wyraźnego podziału na
usługodawców i usługobiorców.
• Np. Gnutella, NXOR, Napster, Kazaa; JXTA jako narzędzie do P2P.
• Komercyjny buzz dookoła P2P.
 Architektura oparta na oprogramowaniu pośredniczącym (middleware):
nie występuje podział na klientów i serwery, np. CORBA i WebServices.
 Architektury gridowe: wirtualny komputer sumujący zasoby wielu
komputerów w sposób przezroczysty dla użytkowników.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 7
2011
Co to jest rozproszona baza danych?
distributed database
 Termin ten jest powtarzany w wielu kontekstach, często bez
przypisywania mu konkretnego, technicznego znaczenia.
 Czy to, że z pewnego systemu można dostać się do danych innego
odległego systemu jest wystarczającym wyróżnikiem rozproszonej bazy
danych?
 Dla wielu zastosowań cecha ta jest istotna, ale:
 Rozproszona baza danych musi spełniać określone kryteria dotyczące
spójności, bezpieczeństwa, zintegrowania i wygody użytkowników.
 Możliwość dostania się do danych innego systemu (np. poprzez pakiety
oparte o technologie ODBC, JDBC, .NET, CORBA, J2EE, WebServices)
oznacza wyłącznie ustanowienie niezbędnej bazy technicznej.
 Fakt ten nie przesądza jednak o tym, czy zachodzą dostateczne warunki
dla sprawnego, efektywnego oraz niezawodnego wykorzystywania
danych.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 8
2011
Podstawowe pojęcia związane z rozproszeniem
 Rozproszona baza danych: zbiór składający się z wielu logicznie ze sobą
powiązanych elementów bazy danych, oddalonych geograficznie i
połączonych ze sobą poprzez sieć komputerową.
 System zarządzania rozproszoną bazą danych (SZRBD):
oprogramowanie umożliwiające połączenie rozproszonych zasobów w
jedną całość, utrzymanie spójność zasobów oraz udostępnianie ich
użytkownikom przy założeniu przezroczystości rozproszenia.
 Dane są przechowywane w wielu miejscach - węzłach sieci.
 Rozproszona baza danych jest bazą danych, a nie kolekcją plików, które
mogą być indywidualnie przechowywane w każdym węźle sieci
komputerowej.
 SZRBD posiada pełną funkcjonalność systemu zarządzania
scentralizowaną BD.
• Nie jest to system zarządzania rozproszonymi plikami, ani też wyłącznie
system przetwarzania transakcji.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 9
2011
Przykład rozproszonej bazy danych
 Rozproszona baza danych dla linii lotniczych (biuro obsługi klienta w
Warszawie może dostać się do danych linii lotniczych w Sydney, Tokio,
Paryżu, i setkach innych miast).
 Jeżeli w każdym miejscu organizacja bazy danych, środki manipulacji,
reguły dostępu, itd. byłyby inne, to praca byłaby bardzo utrudniona, o ile
w ogóle możliwa.
 Zatem konieczne są:
• standardy w zakresie połączenia (protokoły),
• standardy w zakresie organizacji danych i dostępu do danych,
• moduły dla odwzorowania pewnej specyficznej bazy danych na format
oczekiwany przez danego klienta,
• przezroczystość rozproszenia (a la CORBA),
• zabezpieczenia przed niepowołanym dostępem.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 10
2011
Ogólna charakterystyka języków zapytań
query languages
 Języki zapytań są przyjaznymi dla użytkowników interfejsami do
bazy danych, umożliwiającymi jej przeszukiwanie według dowolnie
wybranych kryteriów i dowolnie określanego wyniku
wyszukiwania.
 Języki zapytań tworzą relatywnie nową dziedzinę informatyki, która
(jak dotąd) jest związana z tematyką baz danych.
 Językiem zapytań dla relacyjnych baz danych jest SQL. SQL jest
uważany za źródło komercyjnego sukcesu całej technologii
relacyjnych baz danych.
 Pozycja SQL jako czołowego języka dla relacyjnych baz danych
została wzmocniona przez standardy ANSI (American National
Standard Institute) oraz ISO (International Standard Organization):
SQL-89 oraz SQL-92. Zakończyły się także prace nad standardem
SQL3, który uzyskał nowe oznaczenie SQL-99.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 11
2011
Teorie języków zapytań
 Wraz z językami zapytań pojawiły się różnorodne teorie, takie jak
algebra relacji, rachunek relacyjny i odmiany logiki matematycznej.
 Teorie języków zapytań są istotne z kilku względów, w
szczególności ustalają ich bazę koncepcyjną, semantyczną i
dydaktyczną, oraz zasadniczo wspomagają opracowanie metod
optymalizacyjnych.
 Pojawiło się także wiele metod empirycznych, w szczególności
dotyczących optymalizacji zapytań.
 Niestety, algebra relacji i rachunek relacyjny przykrywają kilka
procent konstrukcji SQL i nie są z nim do końca spójne
 Metody optymalizacyjne są zbytnio przywiązane do relacyjnego
modelu danych (którego czas minął) i do fizycznych własności
systemów, mają ograniczony zakres stosowalności, oraz mają luki i
niejasności koncepcyjne.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 12
2011
Chaos...
 Pojawienie się obiektowych i obiektowo-relacyjnych (object-relational)
baz danych stworzyło w tej dziedzinie nową jakość.
 Dotyczy to także technologii internetowych opartych o standard XML,
który jest ostatnio postrzegany jako nowy model bazy danych.
 Nowe modele danych, standardy, rozwiązania praktyczne, metody i teorie
spowodowały stan, który można określić jako totalny chaos:
• brak spójnych, jednorodnych podstaw teoretycznych,
• przypadkowość rozwiązań praktycznych.
 Dominują w tym względzie liczne rozszerzania operatorów obecnych w
SQL oraz rozszerzania i modyfikacje teorii takich jak algebra relacji,
rachunek relacyjny i innych.
 Świadectwem chaosu są wadliwe standardy SQL-99 i ODMG OQL.
 Świadectwem chaosu jest także stan języków zapytań dla XML, wśród
nich XQL, XPath, XLink, XPointer, XQuery i inne.
 Opakowanie składni w XML czyni je bardzo nieczytelnymi i jest bez
sensu. Niezrozumiałe jest dążenie do specjalizowania tych języków (np.
XPath, XLink, XPointer).
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 13
2011
Problem integracji rozproszonych zasobów
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 14
2011
Ogólny schemat integracji
 G. Wiederhold, 1992:
Aplikacja
użytkownika 1
Aplikacja
użytkownika 2
„Przyjazny” język
zewnętrzny
Mediator
Wydajny
wewnętrzny język
„komunikacyjny”
Mediator
Mediator
Osłona
Mediator
Mediator
Mediator
Osłona
Osłona
Osłona
Zasób
Zasób
Zasób
Zasób
Mediator
Osłona
Zasób
Mediator
Osłona
Zasób
Mediator
Mediator
Osłona
Osłona
Zasób
Zasób
Język zasobu
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 15
2011
Czy przyszłością języków zapytań jest SQL, OQL lub
XQuery?
 Propozycje są kontrowersyjne.
 SQL-99 jest krytykowany za eklektyzm, wszystkoizm i przypadkowość decyzji w
zakresie konstrukcji językowych, co owocuje monstrualną specyfikacją (ponad
1500 stron, plus dodatki, razem ponad 5000 stron).
 Jest wątpliwe, aby ktokolwiek zaimplementował ten język w całości.
 OQL jest językiem znacznie mniejszym, ze specyfikacją mieszczącą się na
kilkudziesięciu stronach, ale pozwala wyłącznie na wyszukiwanie danych.
Brakuje konstrukcji imperatywnych, perspektyw, procedur, itd.
 Co za tym idzie, programowanie w OQL wymaga zanurzenia zapytań w
uniwersalny język programowania: C++, Smalltalk i Java.
 Zanurzenie języka zapytań w uniwersalny język programowania ma złą sławę
określaną jako „niezgodność impedancji”.
 XQuery wzoruje się na OQL, ale wprowadza w sposób nieco chaotyczny dalsze
cechy, np. funkcje definiowane przez użytkowników.
 Wszystkie te propozycje cechuje niespójność (i w gruncie rzeczy, brak istotnej
koncepcji) w zakresie semantyki.
 Metody optymalizacyjne dla tych języków są w stanie embrionalnym.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 16
2011
Czy warto zabiegać o precyzyjną semantykę?
 Brak precyzyjnej semantyki jest powszechny dla nowo powstających
języków programowania.
 W przypadku języków zapytań sytuacja jest odmienna w porównaniu do
klasycznych języków programowania.
 Języki zapytań są dramatycznie nieefektywne (praktycznie
nieakceptowalne) w przypadku braku automatycznej optymalizacji.
 Optymalizacja oznacza zamianę zapytania q1, którego czas wykonania jest
dramatycznie długi (np. 500 lat), na semantycznie równoważne
zapytanie q2 posiadające akceptowalny czas wykonania (np. 5 sekund).
 Powoduje to konieczność ustalenia, co to znaczy „semantycznie
równoważne zapytanie”. Jest to niemożliwe bez precyzyjnej formalizacji
zarówno danych, na których operują zapytania, jak i semantyki
operatorów występujących w zapytaniach.
 Uzyskanie pełnej jasności i precyzji opisu semantyki obiektowych
języków zapytań jest celem tego wykładu.
 Wykład będzie opierać się o podejście stosowe do obiektowych języków
zapytań.
Języki i środowiska programowania systemów rozproszonych, Wykład 01, Slajd 17
2011
Download