www.eprace.edu.pl » obiektowe-bazy » Standardy » Standard ODMG

Standard ODMG

Powstanie grupy ODMG

Brak standardu obiektowych baz danych był główną przeszkodą ich masowego użycia. Relacyjne bazy danych swój sukces zawdzięczają nie tylko wyższemu poziomowi zaawansowania oraz prostszemu modelowi w porównaniu z wcześniejszymi systemami. Do sukcesu tego w dużej mierze przyczyniła się właśnie standaryzacja. Akceptacja standardu SQL pozwoliła tworzyć systemy baz danych w wysokim stopniu kompatybilne ze sobą, co w efekcie dało wiele korzyści. Korzyści wynikające ze standaryzacji są istotne także w przypadku obiektowych systemów baz danych.

Wnioski te spowodowały, iż Rick Cattel zdecydował się zainicjować próbę stworzenia standardu dla obiektowych systemów baz danych. W lecie 1991 roku na zaimprowizowanym śniadaniu z producentami obiektowych systemów bazodanowych przedstawił swoje frustracje na temat braku postępu w kształtowaniu się właśnie takiego standardu. Zaowocowało to pierwszym spotkaniem w tej sprawie już jesienią 1991 roku.

Kolejne ważne zdarzenia związane z grupą ODMG można przedstawić w następujących punktach:

Wysiłek ODMG daje przemysłowi obiektowych baz danych standard, który ułatwia szybki start, zamiast mozolnego kształtowania standardu przez lata. ODMG umożliwia wielu producentom wykorzystanie jednolitego interfejsu do obiektowych baz danych, co pozwala klientom na pisanie ich własnych aplikacji.

Kolejne podrozdziały prezentujące standard powstały w oparciu o [Cattell 2000, Haase 1999, Subieta 1998c] oraz stronę WWW grupy: http://www.odmg.com.

Cele

Głównym celem jest przedstawienie zestawu standardów, pozwalających klientom systemów baz danych na pisanie przenośnych aplikacji, czyli takich, które mogą współpracować z więcej niż jednym produktem bazodanowym. Układ danych, język definiowania i manipulowania danymi oraz język zapytań muszą być przenośne. Kolejnym celem jest to, że wypracowane propozycje będą przydatne w operowaniu systemami bazodanowymi, również wersjami rozproszonymi, komunikującymi się za pomocą OMG Object Request Broker.

Systemy bazodanowe mogą być bardzo różne, lecz ważne jest, aby umożliwiały przenośność na poziomie kodu źródłowego. Nie można również zapomnieć o pozostawieniu miejsca na innowacje w przyszłości. Z pewnością rzeczywiste systemy będą różnorodne dla wielu klas odbiorców, z odmiennymi cechami, bibliotekami itp., jednak muszą one współpracować ze sobą na poziomie określonym właśnie przez standard.

Istotnym zagadnieniem jest określenie zakresu działań związanych z tworzeniem propozycji standardu. Obiektowe systemy baz danych mają architekturę, która jest znacząco inna od pozostałych systemów bazodanowych. Zatem przejście z relacyjnego systemu na obiektowy jest zmianą bardziej rewolucyjną niż ewolucyjną. Bardziej, niż stworzenie języka w rodzaju SQL’a do manipulowania danymi, obiektowe systemy przezroczyście integrują możliwości baz danych z językami programowania. Ta przezroczystość eliminuje konieczność translacji danych między reprezentacją w bazie danych, a reprezentacją w języku programowania. Model ten także umożliwia zapytania rodem z relacyjnych systemów ale posiada większe możliwości, gdyż na przykład umożliwia przechowywanie list, tablic i rezultatów dowolnego typu.

Podsumowując, zdefiniowanie obiektowego systemu baz danych, oznacza stworzenie systemu bazodanowego, który integruje potencjał zorientowanych obiektowo języków programowania. System taki tworzy obiekty w bazie, wyglądające tak samo jak obiekty w języku programowania. Dodatkowo niezauważalnie monitoruje dane, zapewnia równoległy dostęp, ochronę danych oraz inne tym podobne cechy systemów bazodanowych.

Architektura

Przedstawione poniżej części składają się na zaproponowaną przez standard architekturę:

Jako podstawa użyty został model obiektu zaproponowany przez OMG. Rdzeń modelu OMG został zaprojektowany jako wspólny mianownik dla ORB (Object Request Broker), systemów bazodanowych, obiektowych języków programowania oraz innych aplikacji. Trzymając się architektury OMG, ODMG zaprojektowało własny profil tego modelu, zawierający dodatkowe cechy (na przykład relacje), aby zagwarantować możliwość realizacji swoich zamierzeń.

Język specyfikacji jako podstawę przyjął IDL (Interface Definition Language) z OMG. Wersja 2.0 dodała obsługę innych języków, które umożliwiają na przykład wymianę obiektów pomiędzy rozproszonymi bazami danych

Język zapytań został pomyślany jako język deklaratywny. Służy on do pobierania oraz uaktualniania obiektów w bazie. Jako podstawa został użyty język SQL, wzbogacony o nowe możliwości.

Określa ono zasady połączenia ODL i OQL z językiem C++ oraz specyfikuje zestaw klas umożliwiających takie połączenie. C++ jest językiem bardzo popularnym, będąc jednocześnie mocno krytykowanym za cechy niskiego poziomu. Pozwala to przypuszczać, że w przyszłości wiązanie do C++ straci na znaczeniu, na korzyść rozbudowy języka OQL oraz wiązań do języków takich jak Smalltalk i Java.

ODMG starało się stworzyć standard wiązania, co było o tyle kłopotliwe, że nie ma jeszcze oficjalnego standardu tego języka. Wiązanie pozwala na pełne wsparcie ODL oraz OQL dla Smalltalk’a zgodnego z rozwojową wersją standardu ANSI.

Wersja wiązania ODMG 3.0 wymaga języka Java w wersji co najmniej 1.2.2. Umożliwia wiązanie pomiędzy Javą oraz językami ODL i OQL, a także zawiera bibliotekę do operacji na bazie oraz transakcji. Wiązanie to w ostatnim czasie doczekało się wielkiego konkurenta. Firma Sun Microsystems, twórca języka Java, zaproponowała ostatnio własny standard komunikacji tego języka z bazami danych zwany Java Data Objects. Standard ten został przedstawiony w dalszej części pracy.

Istnieje możliwość korzystania z bazy jednocześnie przy pomocy wiązań C++, Smalltalk’a oraz Javy, jeśli tylko programista zadba o używanie typów danych wspieranych przez wszystkie te języki. Wsparcie dla kolejnych języków jest planowane w późniejszym czasie. Należy zauważyć, że w przeciwieństwie do relacyjnych systemów obsługiwanych przez SQL’a, dane w systemach obiektowych są silnie związane z danym językiem programowania. Dzieje się tak, aby zapewnić jedno spójne środowisko dla programu oraz dla jego danych.

Model obiektu

Model obiektu w obiektowych bazach danych określa rodzaje semantyk, za pomocą których mogą być definiowane obiekty. Semantyka mówi między innymi o charakterystyce obiektu, o tym w jakiej relacji jest obiekt z innymi obiektami, jak obiekt jest nazywany oraz jak identyfikowany. Model obiektu specyfikuje także, jakie konstrukcje są możliwe w systemach.

Podstawą modelowania jest obiekt oraz literał. Każdy obiekt posiada swój unikalny identyfikator. Literał natomiast nie posiada identyfikatora. Obiekty oraz literały mogą być dzielone na kategorie ze względu na swoje typy. Wszystkie elementy danego typu posiadają dany zakres stanów oraz dane zachowanie (czyli zdefiniowane operatory, które pozwalają na operowanie elementami).

Stan obiektu jest definiowany przez zestaw wartości, które przybierają różne właściwości obiektu. Właściwościami mogą być albo atrybuty danego obiektu, albo powiązania obiektu z innymi obiektami. Zazwyczaj właściwości obiektu mogą być zmieniane w czasie.

Zachowanie się obiektu jest definiowane przez zestaw operacji, które mogą być wykonane przez lub na obiekcie. Operacje mogą posiadać listę parametrów wejściowych oraz listę danych wyjściowych określonego typu. Dodatkowo każda operacja może zwracać wynik również określonego typu.

Baza przechowuje obiekty pozwalając im na bycie dzielonymi przez wielu użytkowników oraz wiele aplikacji. Baza jest oparta na schemacie zdefiniowanym w ODL’u.

Model obiektu w rozumieniu ODMG specyfikuje to, co jest rozumiane przez obiekt, literał, typ, operację, właściwości, atrybuty, powiązania itd. Programista tworzący aplikacje używa konstruktorów dostarczonych przez model obiektu ODMG, do tworzenia modelu obiektów dla danej aplikacji. Aplikacyjny model obiektu specyfikuje określone typy oraz operacje i właściwości każdego z tych typów. Obiekt aplikacyjny jest schematem bazodanowym.

Analogicznie do modelu obiektu ODMG dla obiektowych baz danych, istnieje relacyjny model dla relacyjnych baz danych, który jest zaimplementowany w SQL’u. Model relacyjny jest fundamentem zarządzania funkcjonalnością systemów relacyjnych baz danych. Podobnie model obiektu ODMG jest fundamentalną definicją dla funkcjonalności obiektowych systemów baz danych. Model ten ma znacznie bogatszą semantykę niż model relacyjny.

Języki programowania

Opisane poniżej języki programowania są używane do programowania baz danych zgodnych z systemami obiektowymi ODMG. Głównym celem powstania tych języków jest ułatwienie przenoszenia danych pomiędzy systemami różnych producentów.

ODL

ODL (Object Definition Language) jest językiem używanym do definiowania specyfikacji obiektu zgodnie z modelem obiektu ODMG. ODL jest używany do wspierania przenośności schematu danych pomiędzy różnymi systemami.

Głównymi zasadami, które wytyczały rozwój ODL’a są:

ODL w zamierzeniach nie ma być pełnym językiem programowania. Jest to język do definiowania specyfikacji obiektu. Za pomocą tego języka można zdefiniować charakterystykę typów, włącznie z ich danymi oraz operacjami na tych danych. ODL tworzy jedynie sygnatury operacji, ale nie mówi nic na temat implementacji tych operacji.

ODL ma w zamierzeniach definiować typy obiektów, które mogą być implementowane w różnych językach programowania. Zatem język ten nie próbuje bezpośrednio nawiązywać do składni żadnego z języków programowania ogólnego przeznaczenia. Użytkownicy mogą użyć ODL’a, aby zdefiniować swój schemat bazy danych w sposób niezależny od konkretnej implementacji programu korzystającego z tej bazy.

Biblioteki do wiązania z językami takimi jak C++, Smalltalk i Java zostały zaprojektowane tak, aby umożliwić także deklaratywną składnię, osiągalną w tych językach. W związku z różnicami w modelu obiektów tych języków, nie zawsze jest możliwe osiągniecie spójnej semantyki w ODL’u dostępnym z bibliotek. Podejmowane były starania, aby minimalizować tę niespójność.

Składnia ODL’a jest rozszerzeniem IDL’a, który jest rozwijany przez OMG jako część CORBA (Common Object Request Broker Architecture). IDL był tworzony pod wpływem języka C++, co również wywarło wpływ na ODL.

ODL umożliwia także integrację schematów baz danych stworzonych innymi metodami. Przykładowymi językami, które łatwo mogą być przekonwertowane do specyfikacji ODL są: SQL (ANSI X3H2), EXPRESS (STEP/PDES), Object Information Management (ANSI X3H7), CAD Framework Initiative. Umożliwia to integrację z istniejącymi już rozwiązaniami.

Przykładowy interfejs klasy w ODL’u:

interface Student {

key student_id;

attribute string name;

attribute string student_id;

relationship Set<Course> takes;

take (in Course);

}

OIF

OIF (Object Interchange Language) jest językiem, który umożliwia wymianę obiektów za pomocą plików tekstowych.

Następujące cechy są uwzględniane w celu scharakteryzowania stanu obiektu:

Struktura pliku OIF zawiera definicję obiektu, włączając w to specyfikację typów, wartości atrybutów oraz relacje z innymi obiektami. Identyfikatory są specyfikowane razem z tzw. tag name, który zapewnia unikalność nazwy. Jest on widoczny w całym zestawie plików OIF i jednoznacznie identyfikuje dany obiekt.

OML

OML (Object Manipulation Language) oznacza język manipulacji obiektami. Standard obiektowych baz danych ODMG nie zawiera specyficznego języka do tego zadania. Modyfikacje obiektów mają odbywać się za pomocą zwyczajnych języków programowania, które mogą komunikować się z bazą danych za pomocą odpowiednich wiązań do tych języków. Dodatkowe cechy związane z manipulacją obiektami takie jak zarządzanie trwałością obiektu, transakcje itp., zrealizowane są w bibliotece zapewniającej wiązanie do danego języka programowania. OML jest więc zależny od konkretnego języka programowania i nie może być rozpatrywany w oderwaniu od konkretnego wiązania. W obecnym standardzie ODMG 3.0 znajdują się wiązania do trzech języków (C++, Smalltalk, Java), z czego wynika istnienie trzech odmian OML’a.

OQL

OQL (Object Query Language) jest językiem umożliwiającym stawianie zapytań do obiektowego systemu bazy danych.

Do głównych zasad, które wytyczały rozwój OQL’a można zaliczyć:

Przykładowe zapytania (do klasy przytoczonej w przykładzie do ODL’a) mogą być następujące:

SELECT s.name

FROM s IN students

WHERE s.student_id = "4711"

SELECT s.name

FROM s IN students

WHERE EXISTS c IN s.takes: c.code = "CME-DB"

Wiązania do języków programowania

W kolejnych rozdziałach pracy zostały zaprezentowane wiązania do następujących języków programowania: C++, Smalltalk oraz Java. Ogólny schemat wiązania na przykładzie wiązania do języka C++ został przedstawiony na poniższym rysunku (rys. 4.1).

Wiązanie ODL do języka C++ zostało zrealizowane jako biblioteka dla tego języka. W bibliotece tej można znaleźć klasy oraz funkcje, pozwalające zaimplementować model obiektu zgodny z modelem ODMG. Wiązanie OML nie jest konieczne, gdyż syntaktyka oraz semantyka OML są w całości zawarte w standardzie C++ oraz standardowej bibliotece klas.

ODL/OML specyfikują jedynie logiczną charakterystykę obiektów oraz operacje używane do manipulacji na nich. Celem jest dążenie do ideału, gdzie wszystko jest przezroczyste dla programisty, czyli jest on niezależny od sposobu adresowania obiektów, zarządzania pamięcią, fizycznej reprezentacji obiektu, struktur dostępu jak indeksy itp. Niestety w rzeczywistym świecie nie jest tak znakomicie. Istnieją powody, dla których został stworzony zestaw konstrukcji nazwanych „physical pragmas”. Daje on programiście w niektórych przypadkach kontrolę nad elementami z niższych warstw, lub przynajmniej daje możliwość dawania systemowi bazodanowemu wytycznych w celu optymalizacji jego pracy. Mechanizm ten istnieje wewnątrz ODL’a oraz OML’a. Ponieważ mechanizm ten nie jest standardowym elementem języka, a jedynie dodatkiem zależnym od implementacji, dlatego można o nim mówić jedynie w odniesieniu do konkretnego wiązania z językiem wyższego poziomu.


RYSUNEK 4.1. OGÓLNY SCHEMAT WIĄZANIA NA PRZYKŁADZIE JĘZYKA C++.


Wiązanie do języka C++

Wiązanie do języka Smalltalk

Z powodu braku oficjalnego standardu języka Smalltalk, członkowie organizacji ODMG jako podstawę przyjęli rozwojową wersję standardu X3J20 ANSI Smalltalk.

U podstaw tworzenia wiązania do języka Smalltalk stały następujące zasady:

Wiązanie do języka Java

Wiązanie ODMG do języka Java opiera się na następujących założeniach:



komentarze

423432

skomentowano: 2011-02-26 16:27:56 przez: 432432

Copyright © 2008-2010 EPrace oraz autorzy prac.