Obiektowe bazy danych - wprowadzenie (konspekt wykładu)
Pomimo wzrastającego zainteresowania programowaniem obiektowym i obiektowymi bazami
danych, nie opracowano jak dotąd jednego standardu pojęć obiektowych do wykorzystania w językach
programowania i bazach danych. Obecnie systemy relacyjnych baz danych silnie zdominowały rynek
baz danych, a systemy baz obiektowych muszą sobie dopiero wyrobić własne miejsce na tym rynku.
Powszechnie uważa się, że wkrótce zostanie opracowany i uzgodniony standard obiektowego modelu
danych, który umożliwi systemom obiektowych baz danych następnej generacji zajęcie
niekwestionowanego miejsca na rynku baz danych.
Obiektowa baza danych jest zbiorem obiektów, których zachowanie się i stan oraz związki są
określone zgodnie z obiektowym modelem danych. Model danych przedstawia logiczną strukturę
obiektów (encji) z prawdziwego świata, nałożonych na nie więzów i związków między tymi
obiektami. Z obiektowym podstawowym modelem danych są ściśle związane następujące pojęcia:
1) Obiekt i identyfikator obiektu:
Każda encja pochodząca z rzeczywistego świata jest obiektem bazy danych, z którym jest
skojarzony jednoznaczny, systemowy identyfikator.
Obiektem jest rzecz lub pojęcie obserwowane w świecie rzeczywistym, którego dotyczy
system informacyjny. Obiekt jest odróżnialny od innych obiektów, ma dobrze określoną
granicę i nazwę
Obiektem może też być pewien zamknięty fragment oprogramowania (dana, procedura,
moduł, dokument, okienko dialogu) którym można operować jak zwartą bryłą (wyszukiwać,
kopiować, usuwać, indeksować)
Obiekt posiada swoją tożsamość, która wyróżnia go spośród innych obiektów. Tożsamość
obiektu jest niezależna od wartości jego atrybutów (tożsamość= trwały wewnętrzny
identyfikator)
Obiekt posiada stan, który może zmieniać się w czasie (bez zmiany tożsamości)
Obiekt może być złożony
Obiekt może być powiązany z innymi obiektami
Obiekt ma przypisane zachowanie tj. zestaw operacji które wolno do niego stosować
(implementacja operacji jest nazywana metodą)
Obiekt ma przypisany typ tj. wyrażenie językowe, które ogranicza dopuszczalną budowę
obiektu oraz ustala operacje, które wolno wykonywać na obiekcie
2) Atrybuty i metody:
Obiekt charakteryzuje się jednym lub więcej atrybutami i jedną lub więcej metodami, które operują
na wartościach atrybutów.
3) Klasa:
Wszystkie obiekty, które mają ten sam podzbiór atrybutów i metod mogą być zgrupowane w jednej
klasie.
4) Hierarchia klas i dziedziczenie:
Klasy w systemie tworzą hierarchię. Klasa może mieć dowolną liczbę podklas może mieć też
nadklasę (czasami kilka nadklas). Obiekty należące do danej klasy mogą dziedziczyć atrybutu i
metody od nadklasy (czasami kilku nadklas - dziedziczenie wielokrotne).
5) Hermetyzacja i przekazywanie komunikatów:
W celu uzyskania dostępu do wartości atrybutów i metod obiektu muszą zostać wysłane
odpowiednie komunikaty. Nie ma innej drogi dostępu do obiektu oprócz ogólnie dostępnego
interfejsu, który jest dla niego określony.
4) Polimorfizm
W zależności od bieżącego kontekstu obiektów mogą one różnie reagować na przychodzące
komunikaty. Jednej interfejs dostępu do obiektu może być wykorzystany do realizacji różnych
zadań-algorytmów.
Największa zaletą modelu obiektowego jest to, że przy jego wykorzystaniu można w sposób bardziej
naturalny niż w przypadku modelu obiektowego przedstawić sytuacje zachodzące w świecie
rzeczywistym. Najprostszym przykładem jest choćby możliwość przechowywanie obiektów
złożonych. W relacyjnej bazie danych w kolumnie wiersza można przechowywać tylko pojedynczą
atomową wartość. Obiekt złożony składa się natomiast z innych obiektów, które z kolei same mogą
zawierać inne obiekty. Większość obiektów świata rzeczywistego ma właśnie taki charakter.
Przykładowe oprogramowanie do zarządzania bazami danych wykorzystujące model obiektowy (za
Wikipedia):
Caché
Cerebrum
ConceptBase
Db4o
eXtremeDB
ENCORE
Facets (dawniej znana jako GemStone-J)
Gemstone Database Management System
Generic Object Oriented Database System (GOODS) [2]
Haley Systems
JADE
Jasmine Object Database
JDOInstruments
JODB (Java Objects Database) [3]
Magma Object Database [4]
MyOODB [5]
ObjectDB [6]
Objectivity/DB
ObjectStore
ONTOS
Orient ODBMS (oprogramowanie) [7]
Ozone Database Project [8]
Perst
Statice
Versant Object Database [9]
Zope Object Database
W praktyce są one jednak wykorzystywane niezwykle rzadko.