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