1 • • • • • Architektura systemu baz danych Model danych • Definicja Model danych to zbiór pojęć używanych do opisu struktury bazy danych. Na model danych składają się: • typy danych, związki między danymi, ograniczenia • operacje definiowania, wyszukiwania i uaktualniania bazy danych • aspekt behawioralny danych Modele danych, schematy i instancje Architektura ANSI/SPARC systemu baz danych Języki i interfejsy bazy danych Środowisko systemu baz danych Klasyfikacja systemów zarządzania bazą danych 3 – modele koncepcyjne (wysokiego poziomu) – modele reprezentacyjne (implementacyjne) – modele fizyczne (niskiego poziomu) 4 Schemat i instancja • Schemat bazy danych to opis struktury bazy danych – definiowany w trakcie tworzenia bazy danych za pomocą konstruktów, – rzadko podlega zmianom, – wyświetlany najczęściej w postaci diagramów. Przedmioty Studenci Nazwisko Indeks PrzNumer Kierunek WNumer PrzNazwa PKr Wydział WNumer Ocena Oceny Wykłady • Kategorie modeli danych 2 Plan rozdziału PrzNumer Semestr Rok Wykładowca Indeks • Instancja bazy danych (stan bazy danych) to obraz danych w określonym punkcie w czasie – każda modyfikacja danych tworzy nowy stan bazy danych, – SZBD gwarantuje, że każdy stan bazy danych jest spójny ze schematem i poprawny (spełnia wszystkie ograniczenia). Architektura ANSI/SPARC (1/2) widok zewnętrzny 5 – opisuje fizyczną organizację bazy danych, schemat wewnętrzny stosuje fizyczny model danych i opisuje ścieżki dostępu do danych oraz fizyczną organizację danych widok zewnętrzny schemat koncepcyjny poziom koncepcyjny schemat wewnętrzny poziom wewnętrzny • Poziom koncepcyjny (pojęciowy) ⇒ schemat koncepcyjny – opisuje strukturę bazy danych z punktu widzenia globalnego użytkownika, opisuje encje, związki między encjami, atrybuty i ograniczenia odwzorowanie DB 6 • Poziom wewnętrzny ⇒ schemat wewnętrzny poziom zewnętrzny widok zewnętrzny Architektura ANSI/SPARC (2/2) • Poziom zewnętrzny ⇒ schemat zewnętrzny DB – opisuje strukturę bazy danych z punktu widzenia wybranej grupy użytkowników DB baza danych Przykład architektury trójpoziomowej emp# dept# emp# age dept# salary fname emp# lname fname dob lname salary struct Employee { int emp#; int dept#; char fname[15]; char lname[30]; struct date dob; float salary; struct Employee *boss; }; index emp#; 7 Korzyści architektury trzypoziomowej • Własności wynikające z trzypoziomowej architektury systemów baz danych obejmują: – – – – niezależność aplikacji i danych, abstrakcyjną reprezentację danych, różnorodność sposobów widzenia danych, logiczną niezależność danych logiczna niezależność danych to możliwość zmiany schematu pojęciowego bez konieczności zmiany schematu zewnętrznego lub zmiany aplikacji – fizyczną niezależność danych. fizyczna niezależność danych to możliwość zmiany schematu wewnętrznego bez konieczności zmiany schematów pojęciowego i zewnętrznego 8 9 Języki bazy danych (1/2) • Storage Definition Language (SDL) Języki bazy danych (2/2) • View Definition Language (VDL) – służy do definiowania schematu wewnętrznego – służy do definiowania widoków zewnętrznych i ich odwzorowania na model pojęciowy, bardzo rzadko implementowany • Data Definition Language (DDL) • Data Manipulation Language (DML) – służy do definiowania schematu pojęciowego (i wewnętrznego) – służy do odczytywania, wstawiania, modyfikowania i usuwania danych CREATE TABLE countries ( country_id CHAR(2) CONSTRAINT country_pk PRIMARY KEY, country_name VARCHAR2(40) NOT NULL, region VARCHAR2(15) ) ORGANIZATION INDEX INCLUDING country_name PCTTHRESHOLD 10 STORAGE ( INITIAL 4K NEXT 2K PCTINCREASE 0 MINEXTENTS 1 MAXEXTENTS 10 ) OVERFLOW STORAGE ( INITIAL 4K NEXT 2K PCTINCREASE 50 MINEXTENTS 1 MAXEXTENTS 10 ); SELECT nazwa, AVG(placa_pod), SUBSTR(adres,1,10) AS adres FROM zespoly FULL OUTER JOIN pracownicy USING (id_zesp) GROUP BY nazwa HAVING COUNT(*) > 5; UPDATE pracownicy p SET placa_pod = ( SELECT AVG(placa_pod) FROM pracownicy a WHERE a.etat = p.etat ) WHERE id_szefa IN ( SELECT id_prac FROM pracownicy WHERE etat = 'PROFESOR' ); 11 Rodzaje języka DML (1/2) • Nieproceduralny język DML (język DML wysokiego poziomu) Rodzaje języka DML (2/2) • Proceduralny język DML (język DML niskiego poziomu) – wprowadzany bezpośrednio z konsoli record-at-a-time set-at-a-time private static void displayCustomers( CustomerIteratorClass iterator; – zanurzony w języku ogólnego przeznaczenia ) { #sql iterator = { SELECT id_prac, nazwisko FROM pracownicy ORDER BY nazwisko }; query language host language 10 while (iterator.next( )) { System.out.println("Nazwisko: " + iterator.nazwisko() ); ... DECLARE CURSOR c IS SELECT * FROM pracownicy JOIN zespoly USING (id_zesp) FOR UPDATE OF placa_dod; BEGIN FOR c_rec IN c LOOP CASE c_rec.nazwa WHEN 'ALGORYTMY' THEN UPDATE pracownicy SET placa_dod = placa_dod + 100 WHERE CURRENT OF c; WHEN 'ADMINISTRACJA' THEN UPDATE pracownicy SET placa_pod = placa_pod + 150 WHERE CURRENT OF c; ELSE IF (c_rec.etat = 'STAZYSTA') THEN DELETE FROM pracownicy WHERE CURRENT OF c; END IF; END CASE; END LOOP; END; 12 Architektura klient-serwer 13 • Funkcjonalność bazy danych podzielona Architektura serwera transakcyjnego 14 • Wariacja klasycznej architektury klient-serwer – back-end: scentralizowany serwer bazy danych – front-end: formularze, raporty, GUI, OLAP, konsola – interfejs: SQL lub API – klienci przesyłają żądania na serwer – transakcje wykonują się po stronie serwera – wyniki zakończonych transakcji są przesyłane do klientów • Przesyłanie żądań – żądania SQL są przesyłane przez RPC (ang. remote procedure call) – TRPC (ang. transactional RPC) wspiera transakcje Architektury systemów równoległych 15 Połączenia w systemach równoległych • System równoległy charakteryzuje się obecnością wielu procesorów i dysków połączonych szybką siecią • Dwa rodzaje równoległości – coarse-grain parallel: niewielka liczba mocnych procesorów – fine-grain parallel (massive parallel): tysiące małych procesorów • Miary systemu – przyspieszenie (ang. speedup): iloraz czasu wykonania ustalonego problemu na małym systemie i systemie n razy większym – skalowalność (ang. scaleup): iloraz czasu wykonania problemu na małym systemie i czasu wykonania problemu n razy większego na n razy większym systemie • skalowanie wsadowe: n-krotne zwiększenie rozmiaru problemu • skalowanie transakcyjne: n-krotne zwiększenie liczby transakcji Shared Nothing Shared Memory Shared Disk Hierarchical 16 17 Interfejsy do SZBD (1/2) • Interfejsy oparte na menu – interfejs przetwarza zdania języka angielskiego (lub innego języka naturalnego) i tłumaczy je na operacje na schemacie pojęciowym, często zdania języka naturalnego są ograniczone "schematem" i "operacjami" • Interfejsy graficzne – użytkownik pracuje ze schematem bazy danych wyświetlonym w postaci diagramu, interfejs często implementuje QBE • Interfejs dla użytkowników parametrycznych – specjalizowany interfejs dla szczególnej grupy użytkowników naiwnych (obsługa banku, obsługa okienka pocztowego), głównym celem jest przejrzystość i minimalizacja liczby uderzeń w klawisze, rzadko wykorzystywana myszka • Interfejsy formularzowe – użytkownik wykonuje zapytania, wstawia dane i manipuluje zawartością bazy danych za pomocą predefiniowanego formularza okienkowego, najczęstszy interfejs dla użytkowników naiwnych i zamkniętych transakcji (ang. canned transactions); wiele systemów baz danych posiada specjalny język/narzędzie do budowy formularzy ekranowych Środowisko systemu baz danych DDL kompilator DDL ADM data dictionary 18 • Interfejs języka naturalnego – użytkownik konstruuje zapytanie przechodząc przez szereg opcji, interfejs eliminuje konieczność zapamiętywania składni i komend DBA Interfejsy do SZBD (2/2) użytkownicy zaawansowani aplikacja zapytanie ad hoc prekompilator kompilator zapytań DML runtime processor • Interfejs dla DBA – większość SZBD posiada wyodrębniony zbiór komend dostępnych tylko dla administratora i możliwych tylko w specjalnym narzędziu dostępu 19 użytkownicy naiwni zamknięte transakcje kompilator DML backup/recovery concurrency stored data manager baza danych Programy użytkowe SZBD • Większość SZBD posiada zestaw programów użytkowych, które wykonują poniższe czynności – ładowanie danych: import/eksport zawartości bazy danych (cała baza danych/użytkownik/tabela) do plików (tekstowe, cvs, binarne, specyficzne dla SZBD, ftp), – kopia zapasowa: możliwość tworzenia kopii zapasowych (inkrementalnych i pełnych) z wybranych fragmentów bazy danych, – reorganizacja plików danych, – monitorowanie wskaźników efektywności SZBD, – audyt działań użytkowników. 20 Klasyfikacja systemów baz danych 21 • Podstawowe kryteria klasyfikacji systemów baz danych • Wyróżniamy trzy podstawowe kategorie modeli danych – model danych: podział na systemy relacyjne, obiektowe, hierarchiczne, sieciowe, inne – liczba użytkowników: podział na systemy jedno- i wielostanowiskowe – liczba węzłów: podział na systemy scentralizowane i rozproszone (homo- i heterogeniczne, sfederowane) – przeznaczenie: podział na systemy specjalistyczne i ogólnego przeznaczenia – cena – modele pojęciowe (modele wysokiego poziomu) – modele implementacyjne – modele fizyczne (modele niskiego poziomu) • Istotne różnice między modelem, schematem i instancją • Trzypoziomowa architektura ANSI/SPARC – schemat zewnętrzny – schemat pojęciowy – schemat wewnętrzny przykładowo: Oracle 11g Enterprise Edition kosztuje 47 000$ plus 10000$ (wsparcie techniczne) plus 950$ za każdego użytkownika w bazie danych. Dodatkowe opcje kosztują 10 000$ - 20 000$ (OLAP, RAC, Spatial, Label Sec) Koszt SQL Server to około 25 000$. Koszt specjalistycznej bazy danych Teradata dla ogromnych hurtowni danych to ok. 490 000$ Pytania • Języki bazy danych: DDL, SDL, VDL, DML • Interfejsy do bazy danych • Klasyfikacja systemów baz danych 23 • Zdefiniuj poniższe pojęcia: – model danych, schemat bazy danych, stan bazy danych, schemat zewnętrzny, pojęciowy i wewnętrzny, niezależność danych, DML, język zapytań, język-gospodarz, architektura klient-serwer • Podaj podstawowe różnice między schematem i stanem bd. • Czy łatwiej jest uzyskać fizyczną czy logiczną niezależność danych? Dlaczego? • Jaka jest różnica między proceduralnym i nieproceduralnym językiem DML? • Wymień programy/systemy komputerowe z którymi współpracuje system zarządzania bazą danych. • Opisz interfejsy do bazy danych i grupy użytkowników, które najczęściej korzystają z każdego interfejsu. Podsumowanie 22