Co to jest - obiektowa baza danych

advertisement
Co to jest - obiektowa baza danych?
Co to jest - obiektowa baza danych?
W miarę rozpowszechnienia technologii obiektowej oraz wraz z rosnącą krytyka modelu
relacyjnego powstała nowa generacja baz danych znanych jako obiektowe bazy danych
(ODB). ODB przechowują obiekty - zakapsułkowane kombinacje danych o dowolnej
strukturze razem ze skojarzonymi procedurami (metodami).
Obiektowe bazy danych powstały początkowo jako rozwiniecie programowania
zorientowanego obiektowo. Programiści Smalltalk i C++ potrzebowali magazynować tzw.
trwale dane, czyli dane, które pozostają po zakończeniu tworzącego je procesu. Później
zastanawiano się nad odpowiednim zarządzaniem zgromadzonymi danymi, wiec dołączono
cechy charakterystyczne dla baz danych. ODB dziedziczą wiec wszystkie zasadnicze cechy
technologii obiektowej (istnienie złożonych obiektów, tożsamość obiektów, enkapsulacja
danych i procedur, dziedziczenie, funkcje polimorficzne, rozszerzalność o nowe typy danych)
i baz danych (trwałość danych, oddzielenie logicznego i fizycznego poziomu danych,
zarządzanie wielodostępem, odtwarzanie spójnego stanu danych po awariach, zapytania ad
hoc, zarządzanie transakcjami i in.).
OBD maja przewagę w stosunku do tradycyjnych baz danych przy przechowywaniu danych
zorientowanych obiektowo, aktywnych, o dowolnej strukturze złożonej czy zagnieżdżonej,
hierarchicznie uporządkowanej czy związanej siecią różnorodnych połączeń oraz rozproszonej
po heterogenicznej sieci
Najistotniejszym problemem dla OBD jest kwestia zapytań. Większość współczesnych
obiektowych baz danych pozwala jedynie na proste przeszukiwanie przechowywanych
1
Co to jest - obiektowa baza danych?
obiektów. Takie udogodnienia jak zapytania zagnieżdżone, kombinacje zapytań (suma,
przecięcie, różnica), grupowanie, funkcja agregacji itd., czyli to, co relacyjne bazy danych w
pełni dostarczają, w przypadku obiektowych baz danych SA na razie nieosiągalne i znajdują
się w stadium rozwojowych prac badawczych. Również kwestia optymalizacji zapytań w
przypadku obiektowych baz danych jest znacznie bardziej skomplikowana.
2
Co to jest - obiektowa baza danych?
Krótkie porównanie relacyjnych i obiektowych baz danych
RELACYJNE
OBIEKTOWE
Obiekt w bazie reprezentuje obiekt w
świecie rzeczywistym
Typ obiektowy (klasa):
definicja złożonego typu danych (może
Cechy
Dane zawarte w tabelach
zawierać inne typy obiektowe lub ich
Tabele składają się z kolumn
kolekcje)
Typy - predefiniowane
procedury (metody) i operatory do
podsta Liczba wierszy zmienna
manipulowania tymi danymi
wowe
Value-based
Identity-based
Nie ma wskaźników lecz klucze
Enkapsulacja
zewnętrzne
Dziedziczenie:
strukturalne: potomek dziedziczy strukturę
danych
behawioralne: potomek dziedziczy metody i
operatory
Przykła Oracle, Informix, Sybase, Ingres, DB2,
dy
Progress, Gupta, Access
system
GemStone, O2, Persistence, Versant, POET,
Objectivity, ODI
ów
Stan na
dzisiaj
Dominuje w zastosowaniach
komercyjnych
(ok. 95% rynku baz danych)
niezależność od języka programowania
Mniej popularne, jednak dobrze rokują na
przyszłość
dość łatwa reprezentacja świata
sprawdzone, dobrze zdefiniowana teoria dokładnie reprezentuje złożone zależności
Zalety
możliwość zarządzania wielka ilością
miedzy obiektami
danych
łatwość działania na złożonych obiektach
możliwość złożonych kryteriów
duża podatność na zmiany
wyszukiwawczych
możliwość definiowania własnych typów,
możliwość dostępu do danych fizycznych metod
dobre mechanizmy kontroli dostępu do
dobra integracja z językami programowania
3
Co to jest - obiektowa baza danych?
danych
ogólnego przeznaczenia (np. C++,
mechanizmy perspektyw
Smalltalk)
ujednolicony model pojęciowy - obiektowe
podejście do analizy, projektowania i
implementacji
brak bezpośredniej reprezentacji m
dla trudniejszych problemów bardzo dużo
tabel
mało naturalna reprezentacja danych
ograniczona podatność na zmiany
Wady
brak złożonych typów danych
trudne operowanie na danych złożonych
trudne operowanie na danych
rozproszonych w sieci heterogenicznej
niezgodność z modelem używanym przez
języki ogólnego przeznaczenia
(impedancje mismatch)
powiązanie z jednym językiem
programowania
słaba obsługa przeszukiwania danych
brak powszechnie zaakceptowanego języka
zapytań
brak możliwości optymalizacji zapytań
trudny lub nawet niemożliwy dostęp do
fizycznych danych
słaba kontrola dostępu
małe możliwości optymalizacji pracy
serwera
dane SA proste, niezagniezdzone, łatwe dane maja złożona lub zagnieżdżona
do umieszczenia w tablicy
Lepsze dane maja postać bierna, a procesy
gdy...
strukturę zdefiniowana przez użytkownika
dane tworzą hierarchie
korzystające z danych stale się zmieniają dane SA rozproszone w sieci
często potrzeba wyszukiwać dane
heterogenicznej
spełniające różnorodne warunki
dane dynamicznie zmieniają rozmiar
Obiektowe bazy danych
Literatura
D. Figura: Obiektowe bazy danych. AOW PLJ, 1996. Won Kim: Wprowadzenie do
obiektowych baz danych. WNT, 1996. P. Coad, E. Yourdon: Analiza obiektowa. O.W. Read
Me, 1994. P. Coad, E. Yourdon: Projektowanie obiektowe. O.W. Read Me, 1994.
Podstawy modelu obiektowego
Paradygmat obiektowy
Co to znaczy "obiektowy" (object-oriented)
4
Co to jest - obiektowa baza danych?
Orientacja na obiekty, a nie na wartości
Tożsamość obiektów
Operowanie na złożonych obiektach
Abstrakcyjne typy danych
Osłonowanie (enkapsulacja, hermetyzacja)
Dziedziczenie
Polimorfizm
Wyzwania dla b.d.
Nowe zastosowania:
multimedia
hipertekst
systemy inform. przestrzennej (GIS)
wspomaganie projektowania (CAD)
zarz±dzanie sieciami
Nowe potrzeby:
wersjowanie
nietrywialne własno¶ci behawioralne (procedury obsługi)
reprezentacja multimedialna danych
Dlaczego model relacyjny nie jest doskonały
Problemy z reprezentacj± złożonych typów (przykład: GIS)
Nienaturalna reprezentacja danych
(przykład: podtypy)
Brak tożsamo¶ci obiektów
Słaba wydajno¶ć dla złożonych struktur
Model obiektowy -- cechy
Orientacja na obiekty
Zalety:
zgodna z ludzkim sposobem my¶lenia
bardziej dostosowana do natury opisywanej rzeczywisto¶ci
Tożsamo¶ć obiektów
Każdy obiekt ma niezmienny wewnętrzny id
Obiekty równe nie musz± być tożsame!
Zalety:
można zmieniać wszystkie atrybuty bez utraty tożsamo¶ci
zmiany struktury nie burz± integralno¶ci referencyjnej
5
Co to jest - obiektowa baza danych?
można zmieniać położenie obiektu w strukturze bez utraty jego powi±zań
ułatwione zarz±dzanie wersjami
nie trzeba tworzyć sztucznych kluczy
Złożone typy danych
Możliwo¶ci
definiowania złożonych typów
reprezentowania struktur: listy, zbiory itp.
Zalety:
naturalna reprezent. danych złożonych
brak ograniczeń złożono¶ci
lepsza wydajno¶ć dla złożonych struktur
Abstrakcyjne typy danych
Dane i operacje na nich definiowane i przechowywane razem
Zalety:
możliwy kod niezależny od typów danych
możliwo¶ć samokontroli danych
Osłonowanie (encapsulation)
Idea:
ukrycie "prywatnej" czę¶ci obiektu
dostęp do danych jedynie przez metody (osłonowanie "ortodoksyjne")
Komunikaty (message passing) -- wywołania metod
Zalety:
oddzielenie implementacji od specyfikacji
duża podatno¶ć aplikacji na zmiany
Wady osłonowania "ortodoksyjnego":
schemat struktury danych ukryty przed projektantem
niemożo¶ć użycia języków zapytań
problemy z przypisaniem metod dotycz±cych kilku klas
Polimorfizm
Zależno¶ć rzeczywistego działania procedur i operatorów od klasy obiektów, na których
działaj±
Wi±zanie póĽne i statyczne
Zalety:
możliwe pisanie kodu niezależnego od typu danych
duża podatno¶ć aplikacji na modyfikacje
6
Co to jest - obiektowa baza danych?
Dziedziczenie (inheritance)
Dziedziczenie
strukt. danych (strukturalne)
metod (behawioralne)
warto¶ci i warto¶ci domy¶lnych
reguł integralno¶ci
cech wizualnych
zdarzeń i ich obsługi
autoryzacji dostępu
Wielodziedziczenie
Przeci±żanie metod i operatorów
Zalety:
naturalna realizacja podtypów
możliwo¶ć wielkrotnego wykorzystania struktur i kodu
Obiektowa baza danych
Dodatkowe wymagania dla obiektowej b.d.
Trwało¶ć obiektów
Zachowywanie spójno¶ci danych
Zarz±dzanie transakcjami
Wielodostęp
Bezpieczeństwo:
autoryzacja dostępu
kopie rezerwowe i odtwarzanie
Język zapytań
Otwarto¶ć:
interfejsy do innych b.d. (także relacyjnych!)
interfejsy do różnych języków programowania
Rozproszenie
Problemy realizacji obiektowej b.d.
Zróżnicowanie struktur
Utrwalanie obiektów
Reprezentacja kodu metod w b.d.
Problemy indeksowania
Współdziałanie z relacyjnymi b.d.
Współdziałanie z językami programowania
7
Co to jest - obiektowa baza danych?
Zalety obiektowej b.d.
Bezpo¶rednia reprezentacja obiektów z obiektowego języka programowania
Możliwo¶ć przechowywania w b.d.:
logiki programów
klas do wielokrotnego użycia
Lepsza wydajno¶ć dla złożonych struktur
Kierunki rozwoju obiektowych b.d.
Rozszerzenie obiektowych języków programowania o system trwałych obiektów
"Czysto" obiektowe bazy danych (GemStone, O2)
Relacyjno-obiektowe bazy danych: SQL3, Oracle8?
Projektowanie struktur obiektowych
Modelowanie złożonych systemów
Reprezentacje złożono¶ci
Abstrakcja danych -- definiowanie danych w kategoriach operacji które mog± być na nich
wykonywane
Hermetyzacja -- definiowanie styków komponentów systemu w sposób mało zależny od ich
wnętrza
Generalizacja i specjalizacja
Skojarzenie komponentów
Komunikacja między komponentami
Rozwi±zania w modelu obiektowym
Abstrakcyjne typy danych
Osłonowanie
Dziedziczenie
Zwi±zki
Komunikaty
Elementy modelu obiektowego
Klasa
Klasa -- abstrakcyjny typ danych
Rodzaje klas
abstrakcyjna -- nie maj±ca instancji, wzorzec typu abstr.
maj±ca instancje
Składowe definicji klasy
nazwa
atrybuty
8
Co to jest - obiektowa baza danych?
usługi
Struktury
Reprezentuj± zależno¶ci między klasami
Rodzaje zależno¶ci:
gen-spec
cało¶ć-czę¶ć
poł±czenie -- realizowane w postaci tzw. atrybutów referencyjnych, wskazuj±cych na
identyfikator obiektu
Przykładowy model obiektowy (notacja Coad/Yourdon)
Przykłady obiektowych baz danych
GemStone
Produkt Servio Corp., od 1983 roku
"Czysto" obiektowa b.d.
Podstawowe cechy obiektowe
Tożsamo¶ć obiektów
Identyfikator typu surogatu OOP (Object Oriented Pointer), niezależny od fizycznego
położenia obiektu
Złożone i abstrakcyjne typy danych
Każdy obiekt należy do jednej klasy
Klasy s± także obiektami
Istniej± zmienne klasy -- wspólne dla wszystkich obiektów tej klasy
Atrybuty prostych typów nie s± obiektami
Metody s± zapisywane w języku OPAL
Typizacja jest traktowana jako ograniczenia
Osłonowanie
Dostęp do atrybutów tylko przez metody (wymiana komunikatów)
Polimorfizm
Redefiniowanie dziedziczonych metod
Dziedziczenie
Struktura drzewiasta
(bez wielodziedziczenia)
Wszystkie klasy pochodz± od klasy systemowej Object
Dodatkowe cechy bazy danych
Trwało¶ć obiektów
9
Co to jest - obiektowa baza danych?
Każdy obiekt maj±cy jakiekolwiek powi±zanie (np. przez dziedziczenie) z globalnym
"korzeniem" jest trwały
Obiekty s± automatycznie usuwane gdy nie ma da nich żadnych odniesień
Zachowywanie spójno¶ci danych
Aktywne obiekty -- samokontrola
Zwi±zki referencyjne dotycz± id (OOP)
Nie ma operacji kasowania danych
Język zapytań
Specjalnego języka brak
Do wyszukań w kolekcjach służ± metody select
Bezpieczeństwo
Kopie rezerwowe on-line: pełne i przyrostowe
Możliwo¶ć zapisu lustrzanego
Autoryzacja dostępu: userid + hasło
Uprawnienia dostępu:
do segmentów zawieraj±cych obiekty
do niektórych metod systemowych
Zarz±dzanie transakcjami
Wszystkie zmiany danych s± wykonywane w trybie transakcyjnym
Możliwo¶ć pracy readonly w trybie "beztransakcyjnym"
Wielodostęp
Izolacja transakcji
Wielodostęp do obiektów: słowniki obiektów dodaje się do list symboli użytkowników
Obiekty globalne s± widziane przez wszystkich
Blokady:
podej¶cie optymistyczne: system rozwi±zuje konflikty w czasie zatwierdzania
podej¶cie pesymistyczne: jawne wykorzystanie blokad
Otwarto¶ć
Dostępne interfejsy do C, C++, Smalltalk
Skalowalno¶ć
Obiekty zebrane w podsystemy i systemy
Rozproszenie
Serwer-j±dro Stone: zarz±dzanie zasobami dyskowymi
Klient Gem: język OPAL i zarz±dzanie danymi
Język OPAL
10
Co to jest - obiektowa baza danych?
Pochodna Smalltalk-80
Programy s± także obiektami
Dostarcza predefiniowanych klas:
proste typy danych
różnym kolekcje
Narzędzia
GeODE
¦rodowisko do budowy programów OPAL
definiowanie klas i kolekcji
narzędzia wspieraj±ce programowanie w OPAL, w tym debugger
Narzędzia do projektowania formularzy
Przegl±darki do struktur obiektów
O2
Produkt O2 Corp., Francja
Stosunkowo popularny w ¶rodowiskach akademickich
Podstawowe cechy obiektowe
Tożsamo¶ć obiektów
Każdy obiekt ma niezmienny identyfikator
Obiekty trwałe mog± także mieć nazwy
Złożone i abstrakcyjne typy danych
Obiekty i warto¶ci
obiekty -- maj± tożsamo¶ć, warto¶ci nie
każdy obiekt ma warto¶ć
obiekty mog± być dzielone -- zawarte w innych obiektach, warto¶ci mog± być jedynie
skopiowane
Typy
warto¶ci maj± typ (prosty lub złożony),
składowe typu złożonego mog± być warto¶ciami lub obiektami
Klasy i obiekty
każdy obiekt należy do jednej klasy
klasy zawieraj± dane (warto¶ć) oraz metody
metody s± pisane w języku O2C
Osłonowanie
Własno¶ci:
prywatne
11
Co to jest - obiektowa baza danych?
tylko do odczytu
publiczne
Metody:
prywatne
publiczne
Enkapsulacja na poziomie schematów: eksport/import klas
Polimorfizm
Redefiniowanie metod dziedziczonych
PóĽne wi±zanie
Możliwo¶ć wywoływania (przykrytych) metod z klas nadrzędnych
Dziedziczenie
Możliwe dziedziczenie wielokrotne
Korzeniem hierarchii jest klasa Object
Dodatkowe cechy bazy danych
Trwało¶ć obiektów
Trwałe s± elementy (obiekty, warto¶ci) którym nadano nazwę
Trwałe s± także wszystkie składniki (rekurencyjnie) danych trwałych
Garbage collection na ż±danie, obejmuje dane które utraciły cechę trwało¶ci
Zachowywanie spójno¶ci danych
Dane maj±ce powi±zania z innymi nie mog± być usunięte
Zwi±zki referencyjne dotycz± id
Zarz±dzanie transakcjami
Można pracować w trybie read-only albo transakcyjnym
Operacje na transakcjach:
commit -- zatwierdza transakcję, zwalnia blokady i zasoby
validate -- zatwierdza transakcję, zwalnia blokady ale zatrzymuje zasoby
abort -- odrzuca transakcję
transaction -- przej¶cie do trybu transakcyjnego
Wielodostęp
Izolacja transakcji
Dwufazowe blokowanie na poziomie stron
Bezpieczeństwo
Brak autoryzacji dostępu
Kopie rezerwowe:
off-line
12
Co to jest - obiektowa baza danych?
on-line
Możliwo¶ć prowadzenia dziennika transakcji (cold log)
Automatyczne odtwarzanie po awarii na podstawie dzienników powtórzeń (redo logs)
Język zapytań
OQL
Otwarto¶ć
O2API (biblioteka typu C)
Interfejs do C
Interfejs do C++ (ODMG)
Interfejs do WWW
Skalowalno¶ć
Struktura bazy odpowiednia dla wielkich aplikacji:
system danych składa się ze schematów
elementy schematu s± przypisane do baz (podział logiczny) a te do wolumenów (podział
fizyczny)
Możliwo¶ć indeksowania list i zbiorów
Możliwo¶ć ł±czenia danych w grona (clusters)
Rozproszenie
Praca w architekturze klient-serwer
Możliwo¶ci rozproszenia danych schematu:
rozłożenia danych w wielu bazach (różne podziały obiektów)
zapytań w OQL do rozproszonej kolekcji
Możliwo¶ć współpracy z ORB (Object Request Broker) wg standardu CORBA
Język O2C
Obiektowy język 4GL, pochodna C
Służy:
jako DDL i DML
do programowania metod obiektów
do budowania aplikacji
Warto¶ci
Powoływanie warto¶ci (zmiennych):
o2 typ zmienna[=warto¶ć],...
Zmienne mog± być obiektami lub warto¶ciami
Standardowe funkcje display, input służ± do domy¶lnej obsługi warto¶ci
Typy złożone
13
Co to jest - obiektowa baza danych?
Krotka (tuple) -- podstawowy typ złożony
definiowanie:
tuple(pole: typ, ... )
dostęp do elementów:
nazwa.pole
Lista
definiowanie: list(typ)
podstawianie:
lista = list(element, ...)
dostęp: lista[indeks]
dodawanie do listy:
lista += list(p)
test przynależno¶ci do listy:
(element in lista)
pętla sterowana list±:
for ( element in lista [where warunek] ) { instrukcje }
Zbiór
definiowanie: [unique] set(typ)
podstawienie:
zbiór = set(element, ...)
dodawanie, test przynależno¶ci, pętla: jak dla listy
Klasy i obiekty
Definicja klasy
składnia:
class klasa [inherits rodzice]
type typ_danych
[method sygnatury_metod]
end
słowa private, read, public przed definicj± typu, składowej typu lub metody okre¶laj±
stopień enkapsulacji
Powoływanie obiektów-instancji klas
powołuje się komend±
instancja = new klasa [(parametry)];
powoduje to m.in. wykonanie metody init klasy (można jej przekazać parametry j/w)
Składnia odwołań do danych
14
Co to jest - obiektowa baza danych?
do własno¶ci: obiekt->własno¶ć
do warto¶ci obiektu: *obiekt
Przykład definicji klasy:
class Person
type tuple
(
read name: tuple
(
last_name: string,
first_name: string
),
public address: Address,
private children: list(Person)
)
method
public is_adult: boolean,
public add_child(child: Person)
end
Metody
Budowa
sygnatura (nagłówek) w definicji klasy
ciało -- definiowane osobno
Self dotyczy obiektu, dla którego metodę wywołano
Składnia wywoływania
wi±zanie póĽne:
obiekt->metoda(parametry)
wi±zanie statyczne:
obiekt->metoda@klasa(parametry)
tak można wywołać metodę z nadklasy)
Standardowe metody: display, edit
Nazwy
Nazwę można nadać obiektowi lub warto¶ci
Nazwany element i wszystkie jego składowe (rekurencyjnie) staj± się trwałe
Nadawanie nazwy:
powoduje powstanie elementu
15
Co to jest - obiektowa baza danych?
składnia:
name nazwa: typ|klasa
nazwany obiekt trzeba jeszcze zainicjować komend± new
Język zapytań OQL
Wzorowany na SQL
Jest podstaw± standardu deiniowanego przez ODMG
Umożliwia deklaratywne składanie zapytań do danych obiektowych
Sposoby użycia
Interaktywnie (zapytania ad hoc)
komenda query w programach o2, o2dba itp.
wynik jest przedstawiany w postaci graficznej obrazuj±cej strukturę, z hiperpoł±czeniami
Embedded OQL -- wywoływanie z 3GL
zapytanie jest wywoływane przez funkcję o2query
Zapytania
Najprostsze zapytania
o nazwany obiekt lub warto¶ć:
nazwa
o element listy w krotce:
nazwa.składnik[indeks]
Zapytanie select służy do przeszukiwania kolekcji:
składnia: select [distinct] el
from el in kolekcja
where warunek
wyniki można ł±czyć w struktury:
select struct(
alias1: el1,
alias2: el2, ...) ...
Zapytania można dowolnie zagłębiać
(OQL jest ortogonalny)
Można użyć wielu kolekcji w zapytaniu i wykonywać "zł±czenia"
W zapytaniach można odwoływać się do metod (składnia "z kropk±")
Ciekawsze operatory
group by ł±czy w zbiory obiekty o wspólnych warto¶ciach wybranych atrybutów
element wyjmuje obiekt z kolekcji jednoelementowej (np. z wyniku select)
define tworzy nazwany obiekt z wyniku zapytania
16
Co to jest - obiektowa baza danych?
sort sortuje wynik zapytania
count, exists, like -- jak w SQL
Narzędzia
O2Tools
Graficzne ¶rodowisko programisty O2C/OQL
Zawiera:
przegl±darkę i edytor struktur
edytor do programów O2C
narzędzia do zarz±dzania kodem Ľródłowym
możliwo¶ć przechowywania wersji kodu żródłowego
kompilator
interfejs do OQL
O2Look
Narzędzie do tworzenia interfejsów graficznych
Tworzy graficzne odwzorowania obiektów, umożliwiaj±ce
przegl±danie
manipulację
wywoływanie metod z parametrami
O2Graph
Narzędzia i biblioteki klas do tworzenia i edycji grafów i drzew
O2Kit
Zbiór typowych klas wraz z metodami:
obsługa dat
dialogi
edytor tekstu typu Emacs
wy¶wietlarki do bitmapów
obsługa map aktywnych
17
Co to jest - obiektowa baza danych?
18
Download