inf59 R2NZQ2ED7SF6R4SAW2O5VNTAKZWM7TCWLG4FUYI

Celem naszego opracowania jest porównanie relacyjnych i obiektowych baz danych (RBD i OBD) w oderwaniu od konkretnych produktów. Mówić będziemy również o obiektowo-relacyjnych BD - najpopularniejszych obecnie (w przeliczeniu na dolary) systemów bazodanowych, stanowiących komercyjny kompromis pomiędzy modelem relacyjnym i obiektowym. Pokrótce scharakteryzujemy każda z tych generacji, zwrócimy uwagę na podstawowe cechy wspólne i różnice.
Zdobyte przez nas materiały dotyczące RBD były pisane w odniesieniu do sieciowych oraz hierarchicznych BD, a te dotyczące OBD pisane w okresie rozkwitu podejścia obiektowego do wszystkich dziedzin informatyki, które tylko można takim spojrzeniem objąć. Dlatego tez nasze opracowanie mimo wielu starań może się okazać nieco "tendencyjne" podobnie jak większość opublikowanych do tej pory porównań RBD i OBD.

Podział i charakterystyka baz danych
Bazy danych bardzo różnią się miedzy bosa - praktycznie każdy produkt tworzy własną kategorie i dlatego trudno je szufladkować. Te zależność najlepiej widać właśnie w przypadku baz relacyjnych i obiektowych: model relacyjny okazał się zbyt skromny dla rosnących potrzeb, a obiektowy zbyt trudny (zbyt kosztowny) w realizacji. Prawa rynku wymusiły wiec powstanie bardzo silnej grupy "relacyjno-obiektowych baz danych", której nie sposób pominąć w naszym opracowaniu.
Jako elementy charakteryzujące dana grupę wybraliśmy

Relacyjne bazy danych (RDBMS)
Technologia relacyjnych baz danych została opracowana przez E. F. Codda i zaimplementowana później m.in. przez IBM. Ostatecznie standard RDBMS został opracowany przez ANSI X3H2. Zwykle produkt kwalifikuje się przy pomocy wersji specyfikacji języka SQL (ostatni to SQL2). Z czasem relacyjne bazy danych oddalały się od swej teoretycznej podstawy - algebry relacji.


Model danych
Dane przechowywane są w tabelach, z których każda ma stała ilość kolumn i dowolna ilość wierszy. Wiersze odpowiadają niepodzielnym krotkom (tuple), a kolumny odpowiednim atrybutom (attribute). Kolumny zawierają dane określonego typu, po jednej wartości w wierszu. Typy są zdefiniowane na etapie projektowania bazy danych i jest ich określona ilość, maja stały rozmiar i zwykle są to ogólnie znane typy proste (liczba, data, godzina, ciąg znaków, znak, itp.). Każda tabela (relacja) ma zdefiniowany klucz (key) - wyróżniony atrybut lub kilka atrybutów, którego wartość jednoznacznie identyfikuje dany wiersz.


Język zapytań
Widok (view) jest to pewien podzbiór bazy danych podawany w formie tabeli, będący wynikiem wykonania zapytania. Dane z bazy są wybierane na podstawie wartości w konkretnych pól w krotkach. Zapytania mogą mieć prosta postać i wymagać danych z wyłącznie jednej tabeli, jak również mogą być bardzo wyrafinowane wymagając od systemu operowania łączeniem (join), zagnieżdżaniem (nesting), różnica i suma teorii zbiorów (set union/difference) oraz innymi operacjami.


Model obliczeniowy
Wszelkie przetwarzanie oparte jest na wartościach pól w krotkach. Krotki nie posiadają uniwersalnego identyfikatora (niezmiennego w czasie). Nie ma tez zabezpieczenia przed odnoszeniem się do innego wiersza tej samej tabeli. Przeglądanie wyników zapytań odbywa się przy pomocy "kursora" umożliwiającego przeglądanie wiersz po wierszu. Podobnie ma się sprawa uaktualniania danych. Manipulacja relacjami odbywa się w sposób globalny przy użyciu operatorów algebry relacji (lub temu podobnych jeżyków) - przetwarzanie wiersz po wierszu nie jest dozwolone.

Liczące się na rynku RDBMS
Oracle (wersje 7.x), System 10/11 [Sybase], Dynamic Server [Informix], DB/2 [IBM], OpenIngres [Computer Associates]

Obiektowe bazy danych (ODBMS)
Obiektowe bazy nie są określone żadnym oficjalnym standardem. Obowiązujący obecnie standard de facto opracowany przez ODMG został opublikowany w roku 1993. Jednym z podstawowych celów modelu obiektowego jest bezpośrednie odwzorowanie obiektów i powiązań miedzy nimi wchodzących w skład aplikacji na zbiór obiektów i powiązań w bazie danych. Dzięki mechanizmom obiektowym można tez zwiększyć niezależność danych od aplikacji poprzez przeniesienie procedur obsługi danych (w postaci metod) do systemu zarządzania baza.

Model danych
Model danych stosowany w obiektowych bazach danych korzysta z pojęć takich jak klasy, atrybuty, metody, udostępnia identyfikatory obiektów (OID), hermetyzacje danych oraz metod, wielokrotne dziedziczenie, etc.
Obiektowe bazy danych łącza własności obiektowości i obiektowych języków programowania z możliwościami systemów bazodanowych, a wiec nie tylko przechowywanie danych czy obiektów. Rozszerzają możliwości obiektowych języków programowania (takich jak C++, Java czy Smalltalk) czyniąc z nich narzędzia do łatwego i efektywnego tworzenia systemów baz danych zmniejszając stopień złożoności i ilość kodu programów dzięki zgodności koncepcyjnej na każdym etapie powstawania produktu.

Jezyk zapytan
Obiektowo zorientowany język staje się zarówno językiem programowania jak i językiem bazy danych, zapewniając bezpośrednią zależność miedzy obiektem w aplikacji a obiektem w bazie. Z takiej bezpośredniej zależności korzystają języki definicji danych, przetwarzania danych oraz zapytań. OBDMS zostały do tej pory zintegrowane z językami C++, C, Smalltalk, Java i LISP.
Standard ODMG-93 dostarcza dodatkowo deklaratywny języki OQL. Język ten nie jest w pełni kompatybilny z SQL. SQL2 pomija zupełnie pojecie typu w znaczeniu postrzeganym przez model obiektowy. Wynik zapytania w języku OQL może natomiast być struktura, literałem, obiektem lub zbiorem obiektów. Większość baz obiektowych jest jednak wyposażona w SQL w celu zapewnienia zgodności ze standardem ODBC (Object Database Connectivity).

Model obliczeniowy
Mimo, ze podobnie jak w RDBMS, wciąż możliwe są zapytania deklaratywne, głównym sposobem tworzenia i modyfikacji obiektów jest korzystanie bezpośrednio z odpowiedniego dla bazy obiektowego języka programowania. Ponadto tworzone obiekty otrzymują unikalne identyfikatory niezmienne w czasie, które mogą być wykorzystywane przez inne obiekty w celu definiowania powiązań z tymi obiektami. Zwykle identyfikatory są konwertowane na wskaźnik do pamięci w chwili wczytywania konkretnego obiektu - uzyskujemy dzięki temu skrócenie dostępu do obiektu gdy jest on obecny np. w pamięci podręcznej.

Liczące się na rynku ODBMS
Jasmine [Computer Associates], Gemstone, O2, Object Store [Object Design], Objectivity/DB [Objectivity], Versant ODMBS [Versant]

Obiektowo-relacyjne bazy danych (ORDBMS)
Stanowią bardzo silna grupę systemów, która w ostatnim czasie dobrze zaznaczyła się na rynku oprogramowania. Nazywane są Object Relational lub Extended Relational. Są wynikiem ostrożnej ewolucji systemów relacyjnych w kierunku obiektowych. Kierunek rozwoju jest wyznaczany przez dwie tendencje:

Model danych
ORDBMS korzysta z modelu danych zawartego w standardzie SQL3, który mówi, ze "obiektowo-relacyjny model danych próbuje dodać obiektowości do tablic". Dane są wciąż przechowywane w tabelach, jednak wartości mogą mięć nieco bogatsza niż dotychczas postać - ADT (Abstract Data Type). Pola typu ADT zachowują funkcjonalność zwykłych pól (mogą być używane do indeksowania, wyszukiwania, pobierania lub umieszczania danych) przy nowych zawartościach (jak np. multimedia).

Jezyk zapytan
Ponieważ ten model rozszerza model relacyjny, dlatego opracowywany obecnie SQL3 (nazywany tez ObjectSQL) jest rozszerzeniem SQL. Rozszerzenie dotyczy rozbudowy możliwości zapytań o obiekty zagnieżdżone, ADT, atrybuty o wartości wyliczanej (np. metody obiektu), itp. Wyniki są jednak wciąż podawane w formie tabel krotek, a nie jako kolekcje obiektów.

Model obliczeniowy
Rozszerzony język SQL jest podstawowym interfejsem dostępu do danych. Bezpośrednie odwzorowanie miedzy obiektami z języka programowania a obiektami / tabelami w bazie nie istnieje, tłumaczenie wciąż obciąża programistę.

Liczące się na rynku ORDBMS
Oracle (wersje 8.x), Illustra (Universal Server) [Informix], DB/2 Extenders (Universal Database) [IBM], UniSQL/X [UniSQL], OSMOS [Unisys]

Migracja



Na powyższym schemacie widać najistotniejsze zmiany architektury dokonane przy przejściu z modelu relacyjnego na obiektowy. Należy tu szczególnie zwrócić uwagę, ze cześć informacji tkwiącej w bibliotekach, typach, aplikacjach i modułach została usystematyzowana i umieszczona bezpośrednio w klasach.


 

Porównanie
Poniższa tabelka jest próba zebrania w przejrzysty sposób informacje podanych wcześniej wraz z wypływającymi z nich wnioskami.

cecha

RDBMS

ORDBMS

ODBMS

Standard

SQL2 (ANSI X3H2)

SQL3/4 (w opracowaniu)

ODMG-v2.0

współpraca z obiektowymi językami programowania

słaba, programiści musza dostosowywać program obiektowy do potrzeb bazy

graniczona głownie do nowych typów danych

bezpośrednia, szeroko rozumiana

użytkowanie

łatwa do zrozumienia struktura, wiele narzędzi dla użytkowników

zapewnia niezależność danych od aplikacji, trudno odzwierciedlać złożone powiązania

łatwe dla programistów, użytkownikom pozostaje pewien dostęp przez SQL

programowanie

zapewnia niezależność danych od aplikacji, trudno odzwierciedlać złożone powiązania

zapewnia niezależność danych od aplikacji, trudno odzwierciedlać złożone powiązania

obiekty w naturalny sposób odzwierciedlają dziedzinę, łatwość modelowania różnorodnych typów i powiązań

rozszerzalność

brak

głownie ograniczona do nowych typów danych

daje sobie rade z dowolna złożonością dziedziny, użytkownicy mogą pisać metody i dołączać struktury

złożone dane i powiązania miedzy nimi

trudne do zrealizowania

trudne do zrealizowania

daje sobie rade z dowolna zlozonoscia dziedziny, uzytkownicy moga pisac metody i dolaczac struktury

"dojrzałość" systemów

bardzo dojrzale, dobrze poznana i przetestowana metodologia, liczne implementacje, stabilność na rynku

niedojrzałe, rozszerzenia są nowe, wciąż ewoluujące i stosunkowo słabo poznane

dość dojrzale (dzięki powszechności OOA i OOD)

możliwość utrzymania się na rynku

przewidywana dla dużych przedsiębiorstw obecnych na rynku

przewidywana dla przedsiębiorstw znanych z RDBMS, dołączają się nowi

na razie trudno prognozować mimo iż sukces modelu obiektowego wydaje się oczywisty

Wady i zalety poszczególnych modeli


Poniżej podajemy te cechy poszczególnych modeli, które w zasadniczy sposób odróżniają je miedzy sobą. Wydaje nam się, ze taka zwięzła charakterystyka jest łatwiejsza do przeanalizowania, niż długa tabela, która w większości pól zawierałaby "nie dotyczy".

RDBMS Relacyjne bazy danych

Zalety:

Wady:

ODBMS Obiektowe bazy danych


Zalety:

Wady:

Większość wad z czasem samoczynnie zaniknie, gdyż są spowodowane po prostu zbyt dużym tempem rozwoju w porównaniu do innych dziedzin (np. szkolenia programistów, zmiany mentalności, ...).

ORDBMS Obiektowo-relacyjne bazy danych

Zalety:

Wady:

 

Krótkie porównanie relacyjnych i obiektowych baz danych


RELACYJNE

OBIEKTOWE

Cechy podstawowe

  • Dane zawarte w tabelach

  • Tabele składają się z kolumn

  • Typy - predefiniowalne

  • Liczba wierszy zmienna

  • Value-based

  • Nie ma wskaźników lecz klucze zewnętrzne

  • Obiekt w bazie reprezentuje obiekt w świecie rzeczywistym

  • Typ obiektowy (klasa):

  • definicja złożonego typu danych (może zawierać inne typy obiektowe lub ich kolekcje)

  • procedury (metody) i operatory do manipulowania tymi danymi

  • Identity-based

  • Enkapsulacja

  • Dziedziczenie:

  • strukturalne: potomek dziedziczy strukturę danych.

  • behawioralne: potomek dziedziczy metody i operatory

Przykłady systemów

Oracle, Informix, Sybase, Ingres, DB2, Progress, Gupta, Access

GemStone, O2, Persistence, Versant, POET, Objectivity, ODI

Stan na dzisiaj

Dominuje w zastosowaniach komercyjnych (ok. 95% rynku baz danych)

Mniej popularne, jednak dobrze rokują na przyszłość

Zalety

  • niezależność od języka programowania

  • sprawdzone, dobrze zdefiniowana teoria

  • możliwość zarządzania wielka ilością danych

  • możliwość złożonych kryteriów wyszukiwawczych

  • możliwość dostępu do danych fizycznych

  • dobre mechanizmy kontroli dostępu do danych

  • mechanizmy perspektyw

  • dość łatwa reprezentacja świata

  • dokładnie reprezentuje złożone zależności miedzy obiektami

  • łatwość działania na złożonych obiektach

  • duża podatność na zmiany

  • możliwość definiowania własnych typów, metod

  • dobra integracja z językami programowania ogólnego przeznaczenia (np. C++, Smalltalk)

  • ujednolicony model pojęciowy - obiektowe podejście do analizy, projektowania i implementacji

Wady

  • brak bezpośredniej reprezentacji n-m

  • dla trudniejszych problemów bardzo dużo tabel

  • mało naturalna reprezentacja danych

  • ograniczona podatność na zmiany

  • 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 (impedance 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

Lepsze gdy...

  • dane są proste, niezagnieżdżone, łatwe do umieszczenia w tablicy

  • dane maja postać bierna, a procesy korzystające z danych stale się zmieniają

  • często potrzeba wyszukiwać dane spełniające różnorodne warunki

  • dane maja złożona lub zagnieżdżoną strukturę zdefiniowana przez użytkownika

  • dane tworzą hierarchie

  • dane są rozproszone w sieci heterogenicznej

  • dane dynamicznie zmieniają rozmiar

 

 

Bibliografia
1. Steve McClure; "Object Database vs. Object-Relational Databases"; Sierpien 1997
2. Kazimierz Subieta; "Obiektowe Bazy Danych kontra Relacyjne Bazy Danych"
3. Won Kim; "Wprowadzenie do obiektowych baz danych"; Wydawnictwa Naukowo-Techniczne
4. Kazimierz Subieta; "Slownik czesto spotykanych terminow dotyczacych obiektowosci; Wrzesien 1997



Wyszukiwarka