ZSBD
OBIEKTOWE BAZY DANYCH
Wykład 6
Prowadzący: dr Paweł Drozda
Program wykładu
Wprowadzenie
Model obiektowy
Standard ODMG 3.0
Język ODL
Język OQL
Obiektowość a cechy bazy danych
dr P. Drozda
Przykład wprowadzający
OSOBA
Nazwisko
Imię
Płeć
telefon
Kierownik
Wycieczka (*)
Wynagrodzenie
Program dnia
Wycieczka
Klient
Jest uczestnikiem (*)
Wpłacił
Kwota do zapłaty
Uczestnicy(*)
Data
Program (*)
Koszt
Liczba miejsc
Dzień
Początek
Obiad
element
…
Czas trwania()
dr P. Drozda
…
Jak to wygląda w m. relacyjnym
Osoba(Nazwisko, Imię, Płeć, Telefon) – co z kluczem?
Kierownik (wynagrodzenie) – co z wycieczką, kluczem,
odwołaniem do osoby
Klient (Wpłacił) - …
Co z metodami (czasem wystarczy DML, na ogół
kodowanie poza relacyjnym modelem danych;
procedury, funkcje nie należą do m. relacyjnego)
dr P. Drozda
Zastosowanie obiektowych baz danych
Charakterystyka dziedzin
Złożone typy danych
Złożone struktury
Zależności hierarchiczne
Dziedziny zastosowań
Telekomunikacja (złożona infrastruktura)
Informacja przestrzenna
Multimedialne bazy danych (produkcja – Ford, Boening, Simens)
http://www.objectivity.com/pages/object-oriented-databasevs-relational-database/examples.html
dr P. Drozda
Obiektowa baza danych - koncepcja
Dane wykorzystują założenia modelu obiektowego
Klasy
Dziedziczenie
Metody
Przeciążanie metod
Referencje do obiektów itd.
dr P. Drozda
Obiektowa baza danych – koncepcja
Zapewnione założenia baz danych
Trwałość danych
Integralność danych
Współbieżne wykonywanie transakcji
Interakcyjne uzyskiwanie informacji z bazy
Odzyskiwanie danych w wyniku awarii
Kontrola dostępu uprawnionych użytkowników
Po co obiektowe bazy
Brak podziału aplikacja – baza
Bogatszy model danych – więcej można określić w
samym modelu
Możliwość rozszerzania modelu danych
(definiowanie typów przez użytkownika)
Łatwiejsze modelowanie hierarchii
dr P. Drozda
Podejścia w tworzeniu
Tworzenie od podstaw – obiektowe bazy tworzone od
początku – nie wykorzystują wcześniej stworzonych
relacyjnych baz
Standard modelu ODMG 3.0 (Object Database Management
Group)
Dodatkowa warstwa zawierająca funkcjonalność obiektową –
na dowolnym modelu danych – standard JDO (Java Database
Objects)
Modyfikacja, rozszerzenie relacyjnej bazy na potrzeby
danej dziedziny do własności modelu obiektowego SQL3
dr P. Drozda
Standard ODMG 3.0
Cztery składniki:
Opis modelu
Definicja danych – ODL
Język zapytań – OQL
Rozszerzenia Javy, Smalltalka, C++ do przetwarzania
trwałych obiektów bazy danych – OML
Standard ODMG 3.0 – opis modelu
Struktura danych
Wielodostęp, transakcje
Obiekty, literały
Typy obiektów – atomowe, kolekcje (krotka, zbiór, wielozbiór, lista,
tablica, słownik)
Możliwe związki binarne1:1, 1:n, m:n poprzez referencje
Transakcja jako jednostka programowa przeprowadzająca z bazę
ze stanu spójnego w inny stan spójny
Wielodostęp realizowany przez blokady (odczyt, zapis)
Integralność danych
Unikalności obiektów – Poprzez OID
Referencyjna – poprzez referencje w obiektach
Elementy modelu obiektowego
Klasa – zawiera elementy opisujące zbiór obiektów
świata rzeczywistego (cechy i zachowanie)
Cechy obiektów
OID
– systemowy identyfikator obiektu
Atrybuty – definiowane przez typy danych
Związki – odwołania do innych obiektów
Metody – opisują działania, jakie mogą wykonać
obiekty danej klasy
dr P. Drozda
Elementy modelu obiektowego
Enkapsulacja – Oddzielenie specyfikacji od ciała –
z zewnątrz widoczne tylko deklaracje atrybutów i
metod – implementacja w ciele
Dziedziczenie – relacja pod/nadklasa – podklasa
dziedziczy metody i atrybuty
Przeciążanie, polimorfizm – zdefiniowanie metody o
tej samej nazwie w podklasach, wywołanie funkcji
dla różnych podklas (późne wiązanie)
Przykład
Figura
Punkt
Typ
X
Y
Pole()
Elipsa
koło
Trójkąt
P1
P2
środek
Promień
środek
Wierzchołki[3]
Pole()
Pole()
Pole()
Prostokątny
Równoboczny
Pole()
Pole()
Język ODL
Służy do definicji danych
Definiuje klasy
Funkcjonalność klasy definiowana poprzez atrybuty
związki i metody
Atrybuty – nazwa + typ
Typy:
Proste
– liczbowe, tekstowe, daty
Złożone: krotki – struct, zbioru – set, wielozbioru –
multiset, listy – list, tablicy – array, słownika – dictionary,
odwołujące się do innej klasy
Język ODL cd.
Związki – zawiera nazwę, typ i odwołanie do
związku zwrotnego
Metody – zawierają typ zwracanej wartości, nazwę
oraz listę parametrów przekazywanych do metody,
dodatkowo może wystąpić lista wyjątków
Rodzaje i typy parametrów
In,
out, inout
Typy dowolne – tak jak typy danych
Składnia deklaracji
Klasa
class nazwa_klasy [extends nadklasa][:interfejs]
[(extent ekstensja)]{ … };
class Pracownik extends Osoba { …};
Atrybuty
attribute dziedzina nazwa_atrybutu;
attribute string Imie;
attribute Address adres;
attribute set<Telefon> numery_telefonu;
Składnia deklaracji cd.
Relacje
relationship powiązana_klasa nazwa_relacji
inverse powiązana_klasa::nazwa_relacji_w_pow_klasie
relationship Nauczyciel teacher
inverse Nauczyciel::uczniowie;
relationship set<Uczeń> uczniowie
inverse Uczeń::nauczyciel;
Metody
typ nazwa(parametry)
raises (listaWyjątków);
void podajNumer(out string kierunkowy, out string numer)
raises (nieMAtakiegoNUMERU);
Przykład podsumowujący
interface Osoba {
attribute string imie;
attribute string nazwisko;
attribute Adres AdresDomowy;
void PodajNumer(out string oprefix, out string onumer)
raises(zlyNumer);
}
class Student : Osoba{
(extent Studenci)
attribute set<otrzymaneOceny> oceny;
relationship set<Rodzice> dziecko
inverse Rodzice::rodzic;
void drukujOceny();
void drukujOceny(in string iPrzedmiot);
void drukujOceny(in integer iRok);
float średnia(in set<otrzymaneOceny> oceny);
}
Konwencja tworzenia obiektów
atrybuty i metody definiowane na najwyższym
możliwym poziomie
przeciążanie metod w miejscach ułatwiających
„życie”
definicja możliwych wyjątków
nazwy parametrów poprzedzane i dla parametrów
wejściowych i o dla wyjściowych
OQL
Wzorowany na SQL
Obejmuje tylko zapytania
Ogólna składnia – SELECT FROM WHERE –
bardziej rozbudowane atrybuty
Przykład
SELECT struct(ilosc: count(*)) FROM s IN studenci WHERE
s.średnia(oceny) >3.8;
SELECT struct(imie: o.imie,nazwisko: o.nazwisko, oceny:
(SELECT struct(r: oc.rok,p: oc.przedmiot, o: oc.ocena)
FROM oc FROM otrzymaneOceny)) FROM o in Osoba;
OQL – ciąg dalszy
Wyrażenia ścieżkowe – możliwość odwołania się do
obiektów poprzez relację pomiędzy obiektami
SELECT egzaminator: student.oceny.przedmiot.prow.nazwisko FROM
student IN Studenci;
Operacje łączenia
poprzez związki między obiektami
SELECT struct(d: d.nazwa, z: z.nazwisko) FROM z IN zawodnicy, d IN
z.graW
ustalane przez użytkownika
SELECT struct(zaw1: z1.nazwisko, zaw2: z2.nazwisko) FROM z1 IN
zawodnicy, z2 IN zawodnicy WHERE z1.miasto = z2.miasto
Polimorfizm i dynamiczne wiązanie
SELECT f.powierzchnia() FROM f IN figury
Trwałość danych
Koniczność składowania danych przez dłuższy czas (nie
tylko podczas działania aplikacji)
Rozróżnienie pomiędzy danymi trwałymi a działającymi
lokalnie w programie (nietrwałe)
Trwałość przypisana do obiektów a nie do całej klasy
Obiekty mogą być zmieniane z trwałych na nietrwałe i na
odwrót
Przetwarzanie obiektów trwałych i nietrwałych nie różni się
Dwa typy obiektów trwałych
Utrwalone
Odwołujące się do obiektów trwałych
Integralność danych
Unikatowość zapewniona przed OID
Referencyjna zapewniona przez związki pomiędzy
obiektami
Integralność użytkownika
dotycząca
danych jednostkowych, np. nazwisko
niepuste
właściwe zależności w danej klasie, np. data urodzenia
nie większa niż data zgonu
przy modyfikacji danych – uwzględnienie znikających
obiektów
Integralność danych
Specyficzna dla modelu obiektowego
możliwość
przechodzenia z jednej klasy do innej
możliwość przynależności do wielu klas, klasy rozłączne
ograniczenia dotyczące podklas
redefinicja
metod, atrybutów – można zabronić
możliwość dodania nowych metod względnie atrybutów
Współbieżne przetwarzanie
Dwie strategie wykorzystywane z relacyjnych baz
danych
blokowania dwufazowe – ma sens gdy działamy na
niewielkiej liczbie obiektów (transakcje albo ustawione w
kolejce, albo wycofywane)
strategia optymistyczna – najpierw robimy na danych
tymczasowych, potem dopiero zatwierdzamy
Dodatkowe strategie (oparte na podziale transakcji)
Potwierdzenie szeregowalności – transakcje dają się
uszeregować – ale nie odpowiadają ciągowi transakcji
wejściowych np. jedna podzielona na odczyt i aktualizację
Transakcje zagnieżdżone – transakcja główna generuje
podtransakcje – niezależne od transakcji głównej
Bezpieczeństwo danych
Kopie bezpieczeństwa – na ogół duże bazy –
wysoki koszt tworzenia kopii bezpieczeństwa
Dzienniki transakcji – zawierają wszystkie
transakcje od ostatniej kopii bezpieczeństwa
Transakcja
Dziennik
Transakcji
Baza
danych
Przywracanie spójności – poprzez wycofanie
niezatwierdzonych transakcji bądź wykonanie ponownie
zatwierdzonych, dodatkowa pomoc - savepointy