1. System zarządzania bazą danych, jego przykładowa architektura, funkcje DBMS, f-cje poszczególnych modułów.
Baza danych jest modelem pewnego aspektu rzeczywistości danej organizacji. Tę rzeczywistość nazywamy obszarem analizy (OA). Bazę danych możemy uważać za zbiór danych, których zadaniem jest reprezentowanie pewnego OA. Dane to fakty. Dana, jednostka danych, jest jednym symbolem lub zbiorem symboli, którego używamy, aby reprezentować jakąś „rzecz”.
Dane w bazie danych są traktowane jako trwałe. Przez trwałość rozumiemy, że dane są przechowywane przez pewien czas. Ten czas nie musi być bardzo długi. Termin „trwałość” jest używany do rozróżnienia bardziej trwałych danych od danych, które są tymczasowe.
Baza danych składa się z dwóch części: intensjonalnej i ekstensjonalnej. Część intensjonalna bazy danych jest zbiorem definicji, które opisują strukturę danych bazy danych. Część ekstensjonalna bazy danych jest łącznym zbiorem danych w bazie danych. Część intensjonalną bazy danych nazywamy schematem bazy danych. Tworzenie schematu bazy danych nazywamy projektowaniem bazy danych.
Bazy danych charakteryzują się czterema podstawowymi własnościami:
ü Niezależność aplikacji i danych.
ü Abstrakcyjna reprezentacja danych.
ü Różnorodność sposobów widzenia danych.
ü Fizyczna i logiczna niezależność danych.
W pewnym uproszczeniu przez bazę danych rozumiemy uporządkowany zbiór danych, a przez system bazy danych – bazę danych wraz z oprogramowaniem umożliwiającym operowanie na niej. Baza danych jest przechowywana na nośnikach komputerowych. Precyzując definicję bazy danych można powiedzieć, że baza danych jest abstrakcyjnym, informatycznym modelem wybranego fragmentu rzeczywistości.
Fragment rzeczywistości może być rozumiany jako:
Ø rzeczywistość fizyczna – taka, którą postrzegamy naszymi organami percepcji
Ø rzeczywistość konceptualna – istniejąca najczęściej w wyobraźni pewnych osób; przykładem tej rzeczywistości może być projekt nowego samolotu firmy Boeing, który istnieje tylko w wyobraźni konstruktorów.
Poprawne (z punktu widzenia człowieka) operowanie na bazie danych wiąże się z właściwą interpretacją danych, które zostały w niej zapisane. W związku z tym konieczny jest opis semantyki (znaczenia) danych, przechowywanych w bazie.
System bazy danych służy więc do modelowania rzeczywistości (fragmentu). W systemach baz danych rzeczywistość opisuje się za pomocą modelu danych. Przez model danych rozumiemy zbiór abstrakcyjnych pojęć umożliwiających reprezentację określonych własności tego świata.
Zbiór pojęć użyty do opisu własności tego konkretnego fragmentu świata rzeczywistego, istotnych z punktu widzenia danego zastosowania tworzy schemat bazy danych.
Baza danych jest modelem logicznie spójnym służącym określonemu celowi. W związku z tym baza danych nie może (nie powinna) przyjąć stanu, który nie jest nigdy osiągalny w modelowanej rzeczywistości.
Można więc powiedzieć, że każda baza danych posiada:
o źródło danych
o użytkowników
o związki z reprezentowaną rzeczywistością.
Baza danych to dane i tzw. schemat bazy danych. Dane opisują cechy (własności) modelowanych obiektów. Nie jest jednak możliwa ich interpretacja bez użycia schematu. Schemat jest opisem struktury (formatu) przechowywanych danych oraz wzajemnych powiązań między nimi.
System Zarządzania Bazą Danych (SZBD)
System Zarządzania Bazą Danych DBMS (Database Management System) jest to zestaw programów umożliwiających tworzenie i eksploatację bazy danych. System zarządzania bazą danych jest oprogramowaniem ogólnego przeznaczenia. System bazy danych składa się z bazy danych, systemu zarządzania bazą danych i ewentualnie z zestawu aplikacji wspomagających pracę poszczególnych grup użytkowników.
Czego oczekuje się od systemu DBMS:
1. Umożliwienia użytkownikowi utworzenia nowej bazy danych i określenia jej schematu (logicznej struktury danych) za pomocą specjalizowanego języka definiowania danych (data-definition language).
2. Zapewnienia możliwości przechowywania ogromnej ilości danych przechowywanej przez długi czas chroniąc je przed przypadkowym, lub niepowołanym dostępem, a także umożliwiając efektywny dostęp do danych z poziomu języka zapytań i operacji na danych
3. Sterowania jednoczesnym dostępem do danych przez wielu użytkowników, z zapewnieniem bezkolizyjności oraz ochrony danych przed przypadkowym uszkodzeniem.
Architektura systemu DBMS
Na samym dole widzimy element reprezentujący miejsce składowania danych. Zauważmy, że ten element służy nie tylko do zapisu danych, ale także metadanych, które opisują strukturę danych. Na przykład, jeśli rozważany DBMS jest relacyjny, to metadane obejmują nazwy relacji, nazwy atrybutów relacji i typy poszczególnych atrybutów ( np. całkowity lub znakowy ).
Często system DBMS obsługuje indeksy danych. Indeks jest taką strukturą danych, która pomaga w szybkim odnajdywaniu właściwych danych, a posługuje się przy tym ich wartościami; najbardziej popularny przykład indeksu umożliwia odnalezienie właściwej krotki relacji, mającej zadane wartości pewnych atrybutów. Na przykład relacja obejmująca numery kont i bilans może mieć indeks założony na numerach kont, wówczas odnalezienie bilansu konta o podanym numerze odbywa się błyskawicznie. Indeksy są przechowywane razem z danymi, a informacja o tym, który atrybut ma założone indeksy, należy do metadanych.
Na rysunku można także dostrzec moduł zarządzania pamięcią, który
ma za zadanie wybierać właściwe dane z pamięci i w razie potrzeby
dostosować je do wymagań modułów z wyższych poziomów systemu.
Moduł zarządzania pamięcią składa się z dwóch części: modułu zarządzania buforami oraz modułu zarządzania plikami.
1. Moduł zarządzania plikami przechowuje dane o miejscu zapisania plików na dysku i na polecenie modułu zarządzania buforami przesyła zawartość bloku lub bloków, gdzie jest zapamiętany żądany plik.
2. Moduł zarządzania buforami obsługuje pamięć operacyjną. Moduł zarządzania plikami przekazuje bloki danych z dysku, a moduł zarządzania buforami wybiera w pamięci operacyjnej strony, które zostaną przydzielone dla wybranych bloków. Blok z dysku może być przez chwile przechowywany w pamięci operacyjnej, ale musi zostać przesłany z powrotem na dysk, gdy tylko pojawi się potrzeba zapisania w to miejsce pamięci innego bloku. Powrót bloku na dysk może nastąpić również w wyniku żądania modułu obsługi transakcji.
Widać tam także składową, którą nazwaliśmy procesorem zapytań, mimo, że taka nazwa może wprowadzać w błąd, bowiem obsługuje on nie tylko zapytania, ale również aktualizacje danych oraz metadanych. Jego zadanie polega na znalezieniu najlepszego sposobu wykonania zadanych operacji i na wydaniu poleceń do modułu zarządzania pamięcią, który je wykona.
Typowy DBMS stwarza użytkownikowi sposobność łączenia jednego lub więcej zapytań, bądź modyfikacji, w transakcję, która stanowi nieformalną grupę operacji przeznaczonych do wykonania razem w jednym ciągu, jako duża operacja jednostkowa. Moduł zarządzania transakcjami odpowiada za spójność systemu. Musi on gwarantować, że kilka jednocześnie przetwarzanych zapytań nie będzie sobie nawzajem przeszkadzać oraz, że żadne dane nie
zostaną utracone, nawet jeśli nastąpi awaria systemu. W tym celu dokumentuje wszystkie operacje, tzn. rozpoczęcie każdej transakcji, zmiany w bazie danych dokonane przez transakcje oraz zakończenie transakcji. Zapis taki nazywa się logiem. Log jest przechowywany w pamięci stałej, tzn. na nośniku danych jakim jest dysk, który zapewni przetrwanie danych w przypadku awarii zasilania.
Zasadnicze przetwarzanie transakcji odbywa się w pamięci operacyjnej, ale dane o przebiegu jej wykonania są natychmiast
zapisywane na dysku. A więc log wszystkich operacji jest ważnym czynnikiem zapewniającym systemowi trwałość. Moduł zarządzania transakcjami współdziała z modułem obsługi zapytań, ponieważ musi
mieć dostęp do szczegółów dotyczących tych danych, na których przetwarza się bieżące zapytanie. Może się zdarzyć, że część przetwarzania będzie musiała zostać opóźniona, aby nie powstał konflikt.
Transakcja jest atomową jednostką pracy, taką że baza danych jest w stanie spójnym przed i po zakończeniu transakcji. Inaczej mówiąc, jeśli dana transakcja jest wykonana poprawnie, zmiany, które wprowadziła, będą pamiętane w bazie danych. W przeciwnym przypadku, wszystkie zmiany wprowadzone przez transakcje będą anulowane ( wycofane).
U góry rysunku można zobaczyć trzy rodzaje wejść do systemu DBMS:
1. Zapytania. Są to zapytania o dane. Mogą one być sformułowane dwojako:
l Poprzez interfejs zapytań bezpośrednich. Na przykład relacyjny DBMS umożliwia wprowadzenie zapytań w SQL, które są następnie przekazywane do modułu przetwarzania danych, który z kolei tworzy odpowiedź
l Poprzez interfejsy programów użytkowych. Typowy DBMS umożliwia programiście tworzenie programu użytkowego, który poprzez wywołania procedur DBMS tworzy zapytania do bazy danych. Na przykład agent posługujący się systemem rezerwacji lotniczych uruchamia program użytkowy, który tworzy zapytanie bazy danych dotyczące dostępności rejsów. Zapytania mogą być formułowane dzięki specjalizowanemu interfejsowi, który na ogół składa się z formularzy z pustymi polami, przeznaczonymi do wypełnienia konkretnymi danymi, np. nazwą miasta, terminem itp.. nie można w ten sposób zadać zupełnie dowolnego pytania, ale jest znacznie łatwiej sformułować zupełnie typowe zapytanie poprzez taki interfejs, niż formułować zapytanie bezpośrednio w języku SQL
2. Aktualizacje. Są to operacje zmiany danych. Tak jak w przypadku zapytań można je wprowadzić do systemu poprzez interfejsy zapytań bezpośrednich lub poprzez interfejsy programów użytkowych.
3. Modyfikacje schematu. Polecenia tego rodzaju wydaje specjalnie uprawniona osoba nazywana administratorem bazy danych, której wolno zmieniać schemat bazy danych i tworzyć nowe bazy danych. Na przykład, jeśli agencje rządowe wezwą banki do udokumentowania wypłaty odsetek zgodnie z numerami ubezpieczenia społecznego klientów, to bank może zażądać dodania do relacji opisującej klientów nowego atrybutu o nazwie np. nrUbezpieczenia.
Funkcje systemu zarządzania bazą danych
Ø przechowywanie danych w co wchodzi tworzenie i utrzymywanie struktur danych,
Ø zapewnianie mechanizmów bezpieczeństwa i prywatności,
Ø umożliwianie równoczesnego, kontrolowanego korzystania z bazy danych wielu użytkownikom,
Ø umożliwianie wprowadzania i ładowania danych,
Ø umożliwianie wydobywania i operowania na przechowywanych danych,
Ø zapewnianie integralności rekordów bazy danych,
Ø udostępnianie wydajnych mechanizmów indeksowania pozwalających na szybkie przeszukiwanie i odnajdywanie interesujących nas danych,
Ø zapewnianie ochrony przechowywanych danych przed ewentualną utratą, na skutek przyczyn niekoniecznie zależnych od człowieka, za pomocą metod tworzenia kopii bezpieczeństwa i procedur odtwarzania
2. Języki stosowane w bazach danych
Języki stosowane w bazach danych
Języki, które stosuje się do projektowania i wypełniania bazy danych można podzielić na cztery różne grupy:
q język definiowania danych (Data Definition Language – DDL), który umożliwia definiowanie struktury danych przechowywanych w bazie, czyli tworzenie schematu implementacyjnego
q język manipulowania danymi (Data Manipulation Language – DML), który umożliwia wypełnienie, modyfikowanie i usuwanie informacji z bazy danych
q język sterowania danymi (Data Control Language – DCL), który umożliwia sterowania transakcjami (np. zatwierdzanie lub wycofywanie)
q język zapytań (Query Language), który umożliwia pobieranie z bazy informacji zgodnych z podanymi warunkami
3. Jądro systemu zarządzania bazą danych ( funkcje)
Jądro systemu zarządzania bazą danych
Funkcje jądra Systemu Zarządzania Bazą Danych (SZBD) określają następujące kategorie działań:
Ø 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.
Ø Sporządzanie kopii zapasowych (ang. backup) i odtwarzanie.
SCHEMAT SLAJDY
Organizacja plików dotyczy sposobu, w jaki układa się dane w fizycznych urządzeniach przechowywania danych, z których najważniejszymi są urządzenia dyskowe. Organizacje plików i dostępów są wewnętrznie powiązane. Poniżej zostaną omówione dwa główne typy plików systemu relacyjnego: pliki sekwencyjne i pliki haszowane.
Podstawową postacią organizacji plików sekwencyjnych jest plik nieuporządkowany. W tej postaci pliku rekordy są ustawiane w pliku w porządku ich wstawiania. Wstawianie do pliku nieuporządkowanego jest bardzo proste. Wyszukanie rekordu wymaga natomiast liniowego przeszukania całego pliku, rekord po rekordzie. Dlatego do pliku o N rekordach średnio trzeba będzie przeszukać N/2 rekordów.
Z tego powodu większość systemów stara się utrzymywać pewną postać sekwencyjnej organizacji pliku. W sekwencyjnym pliku uporządkowanym rekordy są uporządkowane według wartości jednego lub więcej pól. W praktyce dotyczy to zazwyczaj klucza głównego pliku.
Ogólnie rzecz biorąc, oznacza to, że chociaż wstawianie wiąże się z większą ilością przetwarzania niż w przypadku pliku nieuporządkowanego, wyszukiwanie może być zrealizowane za pomocą bardziej efektywnych algorytmów dostępu. Jednym z najbardziej znanych algorytmów jest algorytm wyszukiwania binarnego, którego działanie polega na ciągłym zmniejszaniu obszaru wyszukiwania o połowę.
Klucz główny to jedna lub więcej kolumn tabeli, w których wartości jednoznacznie identyfikują każdy wiersz tabeli.
Pliki haszowane dostarczają bardzo szybkiego dostępu do rekordów na podstawie określonego kryterium. Plik haszowany musi być zadeklarowany za pomocą tak zwanego klucza haszowania. To oznacza, że w pliku może być tylko jeden porządek haszowania. Wstawianie rekordu do pliku haszowanego oznacza, że klucz rekordu jest przekazywany do funkcji haszującej. Funkcja haszująca tłumaczy logiczną wartość klucza na fizyczną wartość klucza – względny adres bloku.
Powyżej zostały omówione pewne mechanizmy dostępu, które są wewnętrznie powiązane z leżącą u ich podstaw organizacją plików. Dlatego, na przykład, dostęp sekwencyjny jest możliwy dla plików sekwencyjnych, a dostęp haszowany – dla plików haszowanych. Poniżej zostanie omówiony mechanizm dostępu, który jest dodawany do bazy danych, aby usprawnić jej działanie bez wpływu na strukturę przechowywania danych – indeks.
Podstawowa idea indeksu polega na zastosowaniu dodatkowego pliku o dwóch polach, dodawanego do systemu baz danych. Pierwsze pole indeksu zawiera posortowaną listę logicznych wartości kluczy, drugie pole – listę adresów bloków dla wartości kluczy. Główny problem polega na utrzymaniu odpowiednio małego indeksu, tak aby mógł być przechowywany w pamięci głównej. Na indeksie wykonujemy przetwarzanie używając algorytmu, takiego jak wyszukiwanie binarne. Wyszukiwanie binarne jest szybkim algorytmem przeszukiwania posortowanej listy wartości kluczy.
4. Transakcje, ich funkcje i cechy.
W praktyce większość indeksów w SZBD jest implementowana za pomocą pewnych postaci B-drzew. Termin B-drzewo jest skrótem od „drzewo wyważone” i oznacza hierarchiczną strukturę danych.
W systemie baz danych z wieloma użytkownikami transakcjami nazywamy procedury, które wprowadzają zmiany do bazy danych lub które wyszukują dane w bazie danych. Transakcja może być zdefiniowana jako logiczna jednostka pracy. Każda transakcja powinna mieć właściwości: niepodzielność, spójność, izolacji i trwałości (czasami używany skrót to ACID):
q Niepodzielność. Skoro transakcja składa się ze zbioru akcji, menedżer transakcji powinien zapewnić, że albo cała transakcja zostanie wykonana, albo w ogóle nic.
q Spójność. Wszystkie transakcje muszą zachowywać spójność i integralność bazy danych. Operacje wykonywane na przykład przez transakcję modyfikującą nie powinny pozostawiać bazy danych w stanie niespójnym lub niepoprawnym
q Izolacja. Jeżeli transakcja modyfikuje dzielone dane, to te dane mogą być tymczasowo niespójne. Takie dane muszą być niedostępne dla innych transakcji dopóty, dopóki transakcja nie zakończy ich używać. Menedżer transakcji musi dostarczać iluzji, że dana transakcja działa w izolacji od innych transakcji.
q Trwałość. Gdy transakcja kończy się, wówczas zmiany dokonane przez nią powinny zostać w pełni utrwalone. To znaczy, nawet w wypadku awarii sprzętu lub oprogramowania powinny one zostać zachowane.
5. Modele danych i ich niezależność.
Modele danych
Każda baza danych, a także każdy SZBD muszą się stosować do zasad określonego modelu danych. W literaturze baz danych termin modelu danych używany jest w odniesieniu do architektury danych oraz zintegrowanego zbioru wymagań w odniesieniu do danych. Model danych w sensie architektury danych jest zbiorem ogólnych zasad posługiwania się danymi. Rozróżniamy trzy generacje architektonicznych modeli danych:
Ø Proste modele danych. W tym podejściu obiekty są reprezentowane za pomocą struktury rekordów zgrupowanych w strukturach plików.
Ø Klasyczne modele danych. Są to hierarchiczne, sieciowe i relacyjne modele danych. Hierarchiczny model danych jest rozszerzeniem opisanego wyżej modelu prostego natomiast sieciowy model jest rozszerzeniem podejścia hierarchicznego. Relacyjny model danych jest następcą modeli hierarchicznego oraz sieciowego.
Ø Semantyczne modele danych. Głównym problemem związanym z klasycznymi modelami danych, jest to, że zachowują one podstawową orientację opartą na rekordach. Semantyczne modele danych próbują dostarczyć bardziej znaczących sposobów reprezentowania znaczenia informacji, niż jest to możliwie przy modelach klasycznych. Pod wieloma względami obiektowy model danych może być uważany za semantyczny model danych.
Model danych jako projekt rozumiany jest jako zintegrowany, niezależny od implementacji zbiór wymagań dotyczący danych dla pewnej aplikacji. Mówimy więc o modelu danych do przetwarzania zamówień, modelu danych do księgowania rachunków itp.
Podstawowym celem baz danych jest zapewnienie niezależności danych, czyli: odporność programów użytkowych na zmiany struktury pamięci i strategii dostępu.
Rozróżniamy 2 typy niezależności danych:
1 Fizyczna niezależność danych oznacza, że rozmieszczenie fizyczne i organizacja danych mogą być zmieniane bez zmiany programów użytkowych jak i globalnej struktury logicznej danych. Niezależność fizyczna wyraża się w tym, że w wyniku zmian struktury pamięci zmienia się jedynie definicja odwzorowania między poziomem pojęciowym a poziomem fizycznym.
2 Logiczna niezależność danych oznacza, że globalna struktura logiczna danych może być zmieniana bez zmiany programów użytkowych (zmiany nie mogą oczywiście usunąć danych, z których te programy korzystają). Niezależność logiczna wyraża się tym, że w wyniku zmian na poziomie pojęciowym zmienia się tylko definicja odwzorowania między poziomem pojęciowym a poziomem zewnętrznym - umożliwia zachowanie programów użytkowych w nie zmienionej postaci.
Reprezentacja danych:
· poziom pojęciowy - jest on abstrakcyjnym, lecz wiernym opisem pewnego wycinka rzeczywistości.
· poziom wewnętrzny - określa sposoby organizacji danych w pamięci zewnętrznej.
· poziom zewnętrzny - odnosi się do sposobu w jaki dane są widziane przez poszczególne grupy użytkowników.
Schemat kanoniczny jest próbą opisu wewnętrznych właściwości danych. Jeżeli System Zarządzania Bazą Danych korzysta z niego, który nie zmienia się bez względu na rodzaj zastosowanego sprzętu, oprogramowania czy fizycznej struktury danych, to można mówić o prawdziwej niezależności danych. W praktyce nie stosuje się go.
Schemat kanoniczny jest jako model danych, przedstawiający wewnętrzną strukturę danych. Tym samym niezależny jest od poszczególnych dziedzin stosowania danych, jak również od mechanizmów związanych z oprogramowaniem lub sprzętem, które to wykorzystywane są do reprezentowania oraz zachowywania danych.
Statyczna i dynamiczna niezależność danych:
o wiązaniu dynamicznym mówimy w trakcie wyszukiwania danych. Schemat lub fizyczna organizacja może być wtedy modyfikowana w dowolnym momencie - daje ono dynamiczną niezależność danych. Statyczna niezależność danych wymaga aby przeprowadzenie zmian w schemacie ogólnym, podschemacie lub fizycznej reprezentacji, zakończyło się zanim dowolny program użytkowy używający tych danych zostanie wykonany.
6. Architektura dwuwarstwowa.
ARCHITEKTURA DWUWARSTWOWA
W myśl tej koncepcji systemy oparte na tej architekturze podzielono na dwie części. Z jednej strony została wydzielona pewna część systemu (inaczej mówiąc proces) odpowiedzialna za przechowywanie danych i zachowanie ich pełnej spójności.
Z drugiej strony wydzielono pewne aplikacje czy procesy , które pobierają dane od użytkownika wyświetlają je i przetwarzają , a następnie albo przesyłają je do serwera w celu zapamiętania, albo generują pewne zapytania w celu uzyskania konkretnych informacji z komputera-serwera.
W ten sposób cały proces przetwarzania danych mamy podzielony na dwie części. Z jednej strony mamy serwer, który przechowuje dane, ale potrafi także je wyszukiwać z przechowywanej bazy na podstawie zapytań poszczególnych komputerów (klientów), a z drugiej strony mamy aplikacje klienta, które tak naprawdę nic nie muszą wiedzieć o fizycznej strukturze danych przechowywanych na serwerze o sposobie ich zarządzania o liczbie użytkowników, a muszą jedynie umieć wysłać zapytanie do bazy , wyświetlić informacje na ekranie lub wysłać do serwera polecenie aktualizujące dane.
...
mirekj4