Systemy do operowania dużymi i trwałymi zbiorami danych Systemy Bazy Danych Systemy do operowania dużymi i trwałymi zbiorami danych
Systemy Bazy Danych Rozwój zastosowań wymagających operowania dużymi i trwałymi zbiorami danych: system plików system bazy danych System plików – integracja danych i programów System bazy danych – oddzielenie danych i programów System bazy danych składa się z: systemu zarządzania bazą danych (SZBD) bazy (baz) danych (BD) Modelu danych
Organizacja tradycyjnego systemu bazy danych Program 1 Program N ... Podsystem komunikacyjny Baza danych SZBD System operacyjny
Trzypoziomowa architektura bazy danych zgodna z ANSI/SPARC Definicja danych Manipulacja danymi Administracja danych Poziomy abstrakcji Odpowiednie języki Poziom zewnętrzny Schemat zewnętrzny 1 N Poziom pojęciowy Schemat pojęciowy Poziom wewnętrzny Schemat wewnętrzny
Systemy Bazy Danych Co dało przejście z systemu plików na system bazy danych: fizyczna i logiczna niezależność danych (niezależność danych od aplikacji) przechowywanie danych bez redundancji centralna kontrola integralności danych języki baz danych na wysokim poziomie abstrakcji Fizyczna niezależność danych – niezależność logicznej struktury bazy danych (schematu pojęciowego) od sposobu przechowywania danych w pamięci zewnętrznej (zmian struktury pamięci). Logiczna niezależność danych – niezależność danych widzianych przez użytkownika (jego aplikacje) od logicznej struktury bazy danych (schematu pojęciowego), jej zmian w czasie.
Systemy Bazy Danych Zadania systemu zarządzania bazą danych: zapewnienie odpowiedniego i efektywnego dostępu do danych uodpornienie danych na awarie sprzętu i oprogramowania trwałe przechowywanie danych w długich okresach czasu SZBD obejmuje: Jądro (podstawowe funkcje SZBD, jak przechowywanie danych i kontrola współbieżności). Interfejs (zawiera na ogół pewien język baz danych, np. SQL). Zestaw narzędzi SZBD (dodatkowe narzędzia do budowy aplikacji, np. do tworzenia i używania systemów informatycznych).
Poziomy funkcjonalne SZBD Poziom interfejsu Model danych i język zapytań Interfejs języka zewnętrznego Inne interfejsy Poziom języka przetwarzania Zarządzanie perspektywami Kompilator języka Sterowanie integralnością semantyczną Interpreter języka Autoryzacja Dekompozycja zapytania Optymalizacja zapytania Generowanie planu dostępu Poziom przetwarzania transakcji Wykonanie planu dostępu Generowanie transakcji Kontrola współbieżności Zarządzanie buforem Odtwarzanie Poziom zarządzania pamięcią pomocniczą Zarządzanie fizyczną strukturą danych Dostęp do dysku
Systemy Bazy Danych Główne obszary badania i rozwoju baz danych: Modele danych Języki baz danych Sterowanie transakcjami i współbieżnością Struktury danych Cechy dotychczasowej technologii baz danych: proste zbiory danych o stałym formacie (model oparty na rekordach) proste typy danych dla wartości pół lub atrybutów sparametryzowane, wstępnie zdefiniowane zapytania bezpośrednia aktualizacja krótkie transakcje
Systemy Bazy Danych Nowe wymagania współczesnych technologii baz danych: konieczność modelowania mocno ustrukturalizowanej informacji (zdolność do reprezentowania złożonych obiektów i typów danych) chęć modelowania zachowania danego obiektu (operacje na strukturach specyficzne dla obiektu lub typu, które powinny być opisane przez odpowiadający im model danych) Ewolucja systemów baz danych: Systemy plików – podejście zorientowane na pliki Generacja pierwsza SBD – podejście zorientowane na rekordy Generacja druga SBD – podejście zorientowane na tabele (będące zbiorem rekordów, przejaw agregacji) Generacja trzecia SBD – podejście zorientowane na obiekty (o różnym poziomie abstrakcji)
Systemy Bazy Danych Ewolucja systemów baz danych pod kątem ewolucji modelu danych: Model hierarchiczny i sieciowy (koniec lat sześćdziesiątych i lata siedemdziesiąte) – niezależność fizyczna i logiczna danych Systemy relacyjne baz danych (lata siedemdziesiąte i osiemdziesiąte) – nowe prostsze podejście do organizacji danych Systemy obiektowe, obiektowo-relacyjne i rozszerzone systemy relacyjne baz danych (szczytowy rozwój w chwili obecnej) – rozszerzenie możliwości czysto relacyjnych systemów oraz odpowiednia integracja języków programowania baz danych
Ewolucja modeli danych Systemy plików Diagramy Bachmana Model hierarchiczny Płaski model relacyjny Zagnieżdżony model relacyjny Modele obiektów złożonych Model związków encji Semantyczne modele danych Modele obiektowe Model sieciowy
Systemy Bazy Danych Przyczyny ewolucji modeli danych (podstawa rozwoju modeli związków encji, semantycznych i kompleksowych): Dążenie do uzyskania graficznego wsparcia projektu Malejące zainteresowanie podejściem zorientowanym na rekordy Ustalenie wyraźnej różnicy pomiędzy pojęciami fizycznymi i logicznymi Zredukowanie semantycznego przeładowania typami związków (przez wprowadzenie odpowiednich konstrukcji, np. specjalizacji) Zapewnienie dostępu mechanizmom abstrakcji
Systemy Bazy Danych Ewolucja języków baz danych: System plików – języki programowania (macierzyste) wysokiego poziomu Generacja pierwsza SBD – języki zapytań i manipulowania danymi dla systemu hierarchicznego i sieciowego osadzone w języku programowania (macierzystym) wysokiego poziomu Generacja druga SBD – różne języki zapytań i manipulowania danymi dla systemu relacyjnego Standard języka SQL dla relacyjnych systemów baz danych Generacja trzecia SBD – język SQL o rozszerzonych możliwościach Standard rozszerzonego języka SQL dla obiektowych baz danych (przyszłość)
Składniki typowego SZBD
System Zarządzania BD Podstawowe funkcje jądra SZBD: Organizacja plików. Mechanizmy dostępu. Zarządzanie transakcjami: kontrola współbieżności i spójności. Zarządzanie słownikami. Zarządzanie zapytaniami (kompilowane i interpretowane). Sporządzanie kopii zapasowych (backup) i odtwarzanie (bazy danych i dziennika). DDL – język definicji danych DML – język manipulowania danymi
System Zarządzania BD Podstawowe informacje przechowywane w słowniku danych (dla podejścia relacyjnego): Opis relacji w bazie danych (nazwy i typy danych). Deklaracje kluczy głównych i obcych, więzy propagacji. Definicje perspektyw. Deklaracje grup użytkowników i uprawnień. Informacje na temat indeksów, rozmiarów plików, struktur plików i klastrów.
Transakcje Własności transakcji (ACID): Niepodzielność. Spójność. Izolacja. Trwałość. Zarządzanie transakcjami (integralność bazowa): Współbieżność. Blokady (system sygnalizacji). Zakleszczenie.
Transakcje Etapy wykonywania transakcji: Uruchom transakcję. Przekaż transakcję do SPT (SPT – System Przetwarzania Transakcji). Zapisz transakcję do dziennika. Zapisz w dzienniku informacje początkowe o transakcji. Sprowadź wymagane przez transakcję rekordy z bazy danych. Zapisz do dziennika obraz przed transakcją (wartości przed przetworzeniem przez transakcję). Oblicz nowe wartości. Zapisz do dziennika obraz po transakcji (wartości po przetworzeniu przez transakcję). Zapisz w dzienniku zatwierdzenie. Zapisz nowe (zmienione) rekordy do bazy danych.
Transakcje Etapy przetwarzania transakcji: Analiza składniowa – sprawdzenie poprawności składniowej zapytania. Sprawdzenie poprawności zapytania względem informacji przechowywanych w słowniku danych (poprawność nazw tabel i kolumn, posiadanie odpowiednich uprawnień). Optymalizacja zapytania (przetłumaczenie zapytania użytkownika na plan wykonania, z uwzględnieniem np. struktury danych i zadeklarowanych indeksów). Wykonanie zapytania. Zwrócenie użytkownikowi wyników zapytania i ewentualnych komunikatów o błędach.
Bazy danych jako maszyny abstrakcyjne Baza danych – abstrakcyjny model pewnego aspektu rzeczywistości zwanego obszarem analizy (model podstawowych cech). Encje (klasy) – istotne obiekty rozważanej rzeczywistości (istniejące niezależne) stanowiące jej podzbiory. Encje są scharakteryzowane poprzez swoje właściwości (atrybuty). Konkretne wartości (prawdziwe) atrybutów encji stanowią instancję encji. Bazę danych stanowi: Zbiór danych (tylko wartości). Sposób interpretacji danych nadający im znaczenie (informacja). Sposób zależności między informacjami (struktura). Konkretne wartości informacji stanowią fakty. Zbiór wszystkich faktów (prawdziwych w danej chwili) nazywany jest stanem bazy danych. Dane w bazie danych są traktowane jako trwałe, to znaczy przechowywane przez pewien czas (przeciwieństwo tymczasowości)
Integralność Integralność oznacza poprawność faktów przechowywanych w bazie danych (są one odbiciem rzeczywistości w ramach pewnego obszaru analizy). Problem integralności baz danych: Zawartość bazy danych nie zmienia się w czasie (referencyjne bazy danych) – nie ma problemu z integralnością. Zawartość bazy danych zmienia się w czasie (w sposób dyskretny) pod wpływem zdarzeń wewnętrznych i zewnętrznych – kolejne stany bazy danych muszą być poprawne. Integralność ma zapewnić, by zmiany bazy danych polegały na przechodzeniu przez kolejne poprawne stany dyskretne. Replikacje – baza danych powinna być zbiorem nie powtarzających się faktów (każdy element danych na temat obiektów i związków między obiektami powinien w bazie występować tylko raz) – brak replikacji ułatwia utrzymanie integralności. Transakcje powodujące zmianę stanu bazy danych (zmieniające informacje) są zagrożeniem dla integralności bazy danych. Należy dopuszczać do realizacji tylko te transakcje, które nie doprowadzają do zaprzeczenia faktów.
Integralność Więzy integralności (reguły poprawności) to metody realizacji wymogu zachowania integralności bazy danych, by jej zawartość była odbiciem faktów z rzeczywistości (OA). Główne typy więzów integralności (w odniesieniu do transakcji): Więzy statyczne (niezmienniki stanu) – reguły sprawdzania, czy transakcja nie zmienia stanu bazy danych w niepoprawny (ograniczenia nałożone na stan bazy danych). Więzy przejść – reguły wiążące ze sobą stany bazy danych (ograniczenie nałożone na przejście).
Funkcje Bazy Danych Zasadnicza funkcja bazy danych (cel jej tworzenia) – zaspokajanie potrzeb związanych z bieżącą działalnością firmy. Funkcje informatyczne realizowane w odniesieniu do bazy danych: Funkcje aktualizujące (powodujące przejście bazy danych z jednego stanu w drugi; funkcje modyfikujące zawartość bazy). Funkcje wyszukujące, inaczej funkcje zapytań (w żaden sposób nie modyfikujące bazy danych, a jedynie sprawdzające, czy dany fakt jest spełniony dla konkretnego stanu bazy danych). Funkcje aktualizujące są ściśle powiązane z więzami integralności, które zwykle reprezentowane są przez ciąg warunków, jakie muszą być spełnione zanim zostanie uruchomiony właściwy ciąg akcji związany z daną funkcją aktualizującą.
System Bazy Danych System Baz Danych składa się z następujących elementów: Baza Danych. System Zarządzania Bazą Danych. Model Danych. Cel Systemu Baz Danych – wspomaganie w realizacji funkcji dotyczących codziennej działalności firmy lub organizacji. Baza danych to zbiór (magazyn) danych z nałożoną na niego wewnętrzną strukturą, które dotyczą pewnego zestawu zadań organizacyjnych firmy lub organizacji wykonywanych podczas codziennej jej działalności.
System Bazy Danych Właściwości (pożądane) bazy danych: Abstrakcja danych (pewien model rzeczywistości). Trwałość danych. Współdzielenie danych. Integracja danych (jeden scentralizowany, spójny system danych bez powtórzeń). Integralność danych. Bezpieczeństwo danych (ograniczenie dostępu do danych i zabezpieczenie ich przed awarią sprzętu lub oprogramowania).
System Bazy Danych Niezależność danych Aspekty niezależności danych: Oddzielenie danych od procesów (aplikacji) – możliwość niezależnego modyfikowania danych i programów użytkowych. Niezależność na poziomie fizyczny-logiczny (niezależność schematu logicznego bazy danych od fizycznego sposobu przechowywania danych na nośnikach). Niezależność na poziomie logiczny-zewnętrzny (niezależność schematu logicznego bazy danych od jej modelu zewnętrznego widzianego przez bezpośredniego użytkownika).
System Bazy Danych System Zarządzania Bazą Danych – zorganizowany zbiór narzędzi umożliwiających dostęp i zarządzanie bazą danych (między innymi powłoka oddzielająca dane od użytkownika). Typowe funkcje Systemu Zarządzania Bazą Danych: Zarządzanie plikami: Dodawanie nowych plików do bazy danych. Usuwanie plików istniejących w bazie danych. Modyfikowanie struktury plików istniejących. Wstawianie nowych danych do istniejących plików. Aktualizowanie danych w istniejących plikach. Usuwanie danych z istniejących plików.
System Bazy Danych Wyszukiwanie informacji: Wydobywanie danych z istniejących plików do wykorzystania przez użytkownika. Wydobywanie danych z istniejących plików do wykorzystania przez programy użytkowe. Zarządzanie bazą danych: Tworzenie i monitorowanie pracy użytkowników bazy. Monitorowanie działania bazy danych. Ograniczanie dostępu do danych w bazie danych. Zarządzanie wielodostępem i współbieżnością. Tworzenie kopii zapasowych i odtwarzanie.
System Bazy Danych W skład Systemu Zarządzania Bazą Danych wchodzą: Jądro systemu (realizuje wymienione wyżej funkcje). Interfejs (język łączący funkcje jądra z narzędziami, np. język czwartej generacji). Zestaw narzędzi (wbudowany do SZBD lub dostarczony przez producenta, np. arkusze kalkulacyjne, programy graficzne, język czwartej generacji, programy do monitorowania) Model danych – architektura danych i/lub zbiór wymagań w odniesieniu do danych (inaczej projekt danych). Model danych jako architektura – pewien zbiór ogólnych zasad dotyczących posługiwania się danymi.
System Bazy Danych Zasady określające model danych: Definicja danych (zbiór reguł określających strukturę danych, ich organizację). Operowanie danymi (zbiór reguł określających operowanie danymi, czyli dostęp sposób zmiany). Integralność danych (zbiór reguł określających jakie stany bazy danych są poprawne). Typy architektonicznych modeli danych: Proste modele danych (obiekty reprezentowane za pomocą struktury rekordów zgrupowanych w plikach; dostępne są operacje na rekordach typu odczytaj rekord i zapisz rekord). Klasyczne modele danych (hierarchiczny, sieciowy i relacyjny model danych). Semantyczne modele danych (reprezentujące w sposób bardziej wyraźny znaczenie informacji przechowywanej w bazie danych, np. obiektowy model danych).
System Bazy Danych Model danych jako projekt – pewien zintegrowany zbiór wymagań, jakie muszą spełniać dane wykorzystywane przez określona aplikację (np. model danych do księgowania rachunków). Historia oprogramowania baz danych: Lata pięćdziesiąte XX wieku – pierwsze systemy zarządzające danymi zapisanymi w plikach (systemy plików) do rozwiązywania konkretnych problemów firmy. Lata sześćdziesiąte XX wieku – pierwsze pakiety baz danych do użytku ogólnego (np. GEC autorstwa Charles’a Bachman’a – diagramy Bachmana). Lata sześćdziesiąte XX wieku – pierwsze systemy baz danych oparte na modelu hierarchicznym (np. IDS, IMS). Lata sześćdziesiąte XX wieku – dominacja hierarchicznych systemów baz danych.
System Bazy Danych Lata sześćdziesiąte i siedemdziesiąte XX wieku – pierwsze systemy baz danych oparte na modelu sieciowym (np. IDMS, DBTG). Lata siedemdziesiąte XX wieku – dominacja hierarchicznych i sieciowych systemów baz danych. Lata siedemdziesiąte XX wieku – pierwsze systemy relacyjne (np. System/R przygotowany na podstawie prac Codd’a). Lata osiemdziesiąte XX wieku – początek dominacji relacyjnych systemów baz danych. Lata osiemdziesiąte XX wieku – początek prac nad obiektowymi systemami baz danych. Lata dziewięćdziesiąte XX wieku – pierwsze komercyjne obiektowe systemy baz danych.
System Bazy Danych Etapy budowy (modelowania) bazy danych: Model koncepcyjny (model świata rzeczywistego wyrażony za pomocą wymagań użytkowników dotyczących danych. Model logiczny (model świata rzeczywistego wyrażony za pomocą reguł pewnego architektonicznego modelu danych). Model fizyczny (model świata rzeczywistego wyrażony za pomocą plików i struktur dostępu do nich, np. indeksy). Analiza danych jest jednym z etapów modelowania koncepcyjnego i logicznego, np. dla relacyjnych systemów baz danych obejmuje: Normalizację. Modelowanie związków encji.
Diagram składowych SBD Zestaw narzędzi SZBD Baza danych Jądro SZBD Interfejs SZBD Model danych Świat rzeczywisty