Architektura systemów baz danych SYSTEMY BAZ DANYCH Terminologia Baza danych jest to zbiór danych trwałych, które są wykorzystywane przez system aplikacji danej organizacji. Baza danych, rozumiana jako zbiór danych, wraz z aplikacją bazy danych stanowią system bazy danych. Aplikacja bazy danych Aplikacja bazy danych jest to program lub zespół programów, które pomagają użytkownikowi pracować z bazą danych. Celem aplikacji jest: odizolowanie samej bazy od użytkownika zabezpiecza zbiór danych przed przypadkowym bądź celowym uszkodzeniem Systemy baz danych Można wyróżnić pięć zasadniczych komponentów tworzących systemy z bazą danych: sprzęt oprogramowanie dane procedury ludzie Systemy baz danych Sprzęt: Zakres wymagań sprzętowych zależy od potrzeb użytkownika, konkretnych rozwiązań czy wreszcie wymagań samego DBMS Oprogramowanie: Składowymi oprogramowania są zarówno same Systemy Zarządzania Bazą Danych jak i aplikacje i programy użytkowe, systemy operacyjne oraz oprogramowanie sieciowe Systemy baz danych Dane: Pod pojęciem danych rozumieć należy zarówno dane operacyjne, jak i meta dane, czyli „dane o danych”. Strukturę danych określa schemat bazy danych Procedury: Procedury precyzują zasady projektowania i użytkowania bazy danych Systemy baz danych Ludzie: administratorzy baz danych projektanci baz danych projektanci i programiści aplikacji bazodanowych użytkownicy końcowi. Architektura systemów baz danych Opis elementów stanowiących system baz danych, sposób w jaki są one ze sobą powiązane oraz logika tej organizacji składają się na architekturę systemu baz danych. Architektura systemów baz danych rozwijała się od tzw. architektury jednowarstwowej, w kierunku architektury wielowarstwowej. Systemy baz danych - rozwój Cztery ważne, z punktu widzenia ewolucji systemów baz danych zdarzenia: pojawienie się sieci komputerowych Internet System WWW Intranet Architektura jednowarstwowa Model jednowarstwowy stanowi samodzielny system lub pojedyncza aplikacja, nie wymagające żadnej zewnętrznej komunikacji do wykonywania zadań. Szczególnym przypadkiem architektury jednowarstwowej są niesamodzielne maszyny terminalowe, pozbawione mocy obliczeniowej, połączone do serwera. W takim przypadku system serwera razem z terminalami jest najczęściej definiowany jako jedna warstwa. Architektura klient-serwer Termin architektura typu klient serwer wywodzi się od sposobu interakcji komponentów softwarowych z systemem: klient jest procesem który potrzebuje pewnych zasobów proces serwera tych zasobów dostarcza Architektura klient-serwer Na aplikację bazy danych można spojrzeć jako na zestaw kilku warstw, wykonujących ściśle określone zadania Warstwa jest pojęciem logicznym, umożliwiającym zaprojektowanie programu prostszego w budowie i obsłudze Architektura komunikacyjna klient - serwer Architektura dwuwarstwowa Dwie warstwy oprogramowania: warstwa serwera –proces serwera warstwa klienta - proces klienta Lokalizacja obu procesów: mogą one znajdować się na jednym komputerze (baza lokalna) zazwyczaj serwer umieszczany jest na innym komputerze niż procesy klienta, komunikując się poprzez LAN Architektura dwuwarstwowa Podział zadań w architekturze klient serwer: na serwerze znajdują się dane oraz oprogramowanie zapewniające dostęp do danych, tzw. SZBD po stronie serwera następuje również realizacja zapytań, realizacja ograniczeń oraz przetwarzanie danych klient natomiast jest odpowiedzialny za prezentację danych – po stronie klienta jest umieszczony interfejs użytkownika. klient realizuje logikę aplikacji oraz również jest odpowiedzialny za przetwarzanie danych Architektura dwuwarstwowa Zalety: bezpieczeństwo serwera minimalizacja ruchu w sieci możliwość przetwarzania danych bezpośrednio na serwerze odciążenie centralnego komputera od obsługi interfejsu użytkownika budowa sporych systemów bez użycia wielkich komputerów Architektura dwuwarstwowa Wady: utrudnienia związane z administrowaniem: o konieczność administrowania wieloma komputerami utrudnione administrowanie aplikacjami duże koszty eksploatacji PC-tów niski poziomem bezpieczeństwa brak kontroli nad działaniami użytkowników Przykłady Program napisany w języku ogólnego przeznaczenia (np.: Delphi, C#) komunikujący się bezpośrednio z serwerem SQL (np.: PostgreSQL, Oracle), Kontrolka COM/ActiveX z podłączonymi klientami usługi, Przeglądarka internetowa współpracująca z serwerem HTTP, oferującym statyczne strony. Architektura trójwarstwowa Dzieli aplikację bazy danych na trzy, współpracujące ze sobą części: Warstwę dolną, realizującą dostęp do bazy danych, Warstwę środkową, zawierającą reguły dziedziczenia danych, Warstwę górną, stanowiącą interfejs użytkownika * Interfejs użytkownika Warstwa pierwsza Stacja kliencka Architektura trójwarstwowa Architektura trójwarstwowa Schemat działania: Warstwa klienta jest odpowiedzialna za wizualizację graficznego interfejsu użytkownika oraz wysyłanie żądań do serwera. Klient komunikuje się z serwerem poprzez protokół HTTP. Serwer obsługuje żądania, uruchamiając aplikację przetwarzającą żądania klientów i generującą dynamiczne dokumenty. Warstwa danych poprzez język SQL umożliwia aplikacji dostęp do danych oraz ich zapisywanie lub usuwanie. Serwer wysyła przeglądarce odpowiedź w postaci pliku HTML i dołączonych plików graficznych, skryptów oraz arkuszy CSS. Architektura trójwarstwowa Warstwa dolna to prawie zawsze programy wykonywane na serwerze, obsługujące zlecenia warstwy środkowej Warstwy górna i środkowa mogą być scalone w jeden program bądź rozdzielone Warstwa środkowa może być klientem lub serwerem Warstwa górna jest zawsze klientem Architektura trójwarstwowa Gdy w warstwie klienta lokowany jest jedynie interfejs użytkownika, który realizuje prezentację danych i przekazywanie danych do warstwy aplikacji mówi się o tzw. „chudym (cienkim) kliencie” ze względu na małą ilość funkcji, jaką w tej technologii realizuje strona klienta. Uż ytkownik Klient Warstwa górna (interfejs uż ytkownika) sieć Serwer Warstwa środkowa (oprogramowanie bazy danych) Dostęp do bazy danych sieć Baza danych Warstwa dolna (serwer baz danych) Baza danych Architektura trójwarstwowa Cienki klient: interfejs użytkownika jest stroną WWW, którą obsługuje przeglądarka internetowa Warstwa druga realizuje funkcje systemu oraz przetwarzanie danych o kontaktuje się z warstwą klienta i serwerem lub serwerami bazy danych poprzez sieć lokalną LAN lub WAN Warstwa trzecia jest odpowiedzialna za fizyczne przetwarzanie i magazynowanie informacji i najczęściej stanowią ją serwery baz danych Architektura trójwarstwowa Bardziej złożone interfejsy mogą realizować zarówno interfejs użytkownika jak i część logiki aplikacji. Oznacza to, że klient zawiera więcej niż jedną warstwę, czyli jest klientem wielowarstwowym. Mamy wtedy do czynienia z tzw. „grubym klientem” Architektura trójwarstwowa Korzyści: większość zalet architektury klient serwer prostsze projektowanie prostsza implementacja możliwość powtórnego wykorzystania komponentów po stronie serwera łatwość rozprowadzania w sieci (równomierne obciążenie i odporność na awarie) Przykłady architektury 3-warstwowej przeglądarka internetowa współpracująca z serwerem aplikacji (HTTP ze wsparciem PHP, ASP, JSP, XSQL lub innych narzędzi), korzystającym z bazy SQL klasyczny model trójwarstwowy, hierarchiczny system synchronizacji czasu NTP (network time protocol).