Bazy danych i inżynieria oprogramowania Wykład 7: Wprowadzenie do standardu ODMG, część 1: Motywacje, Model obiektowy Kazimierz Subieta Instytut Podstaw Informatyki PAN, Warszawa Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 1 Plan wykładu (część 1) Co to jest ODMG? Krytyczne cechy obiektowych baz danych; kryteria wyboru Cele i uwarunkowania standardu Zawartość standardu ODMG 2.0; ramowa architektura Model obiektowy ODMG • Typy i klasy; interfejsy i implementacje • Podtypy i dziedziczenie K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 2 Co to jest ODMG? Object Database Management Group Jest to konsorcjum powstałe w wyniku porozumienia kilkunastu firm oferujacych swoje produkty określane jako “obiektowe systemy zarządzania bazami danych”: Objectivity, ObjectDesign, Ontos, O2, Poet, Servio, Versant,, ... Pomysł, forma działania, początkowy impuls oraz obiektowy model danych pochodzi od konsorcjum OMG, która opracowała i rozwija standard CORBA. ODMG nie ma związku z oficjalnymi instytucjami normalizacyjnymi takimi jak ANSI lub ISO. Zdaniem twórców ODMG, instytucje te działają wolno, nieefektywnie i są obciążone własnymi preferencjami. Standard ODMG budzi kontrowersje, zaś jego ogólny poziom techniczny jest przedmiotem krytyki. Wady są systematycznie usuwane w kolejnych wersjach standardu, ale nadal jest ich sporo (bedą omówione). Wersje: • ODMG-93 wersja 1.1 (grudzień 1993) • ODMG-93 wersja 1.2 (styczeń 1996) • ODMG wersja 2.0 (sierpień 1997) (Morgan Kaufman Publishers) K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 3 Kluczowi zawodnicy obiektowych BD Źródło: Barry & Associates, Inc., styczeń 1997, http://www.odbmsfacts.com System Wersja Firma ODB-II (Jasmine) GemStone Odapter (Java/Depot) ITASCA (Orion) Illustra/Informix MATISSE O2 ObjectStore Objectivity/DB Omniscience ONTOS DB Persistence IDB Object Database POET UniSQL OSMOS ODBMS VERSANT 2.0 5.0 B.05.xx 2.3.5 3.0 3.0 5.0 4.0.2 4.1 3.0 3.2 3.210 2.5 4.0 3.5 R10.0 3.1 4.2 K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 4 Fujitsu Software Corporation + Computer Associates Gemstone Systems, Inc. Hewlett-Packard Company IBEX Corporation S.A. Illustra Information Technologies, Inc. MATISSE Software, Inc. O2 Technology Object Design, Inc. Objectivity, Inc Omniscience Object Technology, Inc. ONTOS, Inc. Persistence Software, Inc. Persistent Data Systems, Inc. POET Software, Inc. UniSQL, Inc. Unisys Corporation VC Software, Inc. Versant Object Technology Krytyczne cechy obiektowych baz danych: (1) Jasny, naturalny, uniwersalny, powszechnie akceptowany model danych i odpowiadający temu modelowi język opisu danych (język schematu) Języki zapytań: zapytania interakcyjne ad hoc, zagnieżdżanie zapytań (embedding) Programowanie poprzez języki zapytań; bezszwowa integracja języka zapytań z językiem programowani; perspektywy, zapamiętane procedury, reguły Optymalizacja zapytań (query optimization) Obiektowe programowanie wizyjne (visual programming) Interfejsy (wiązania) do programowania aplikacji (API) dla popularnych języków programowania Wygodne środowisko do tworzenia i uruchamiania aplikacji Dynamiczna autoryzacja dostępu K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 5 Krytyczne cechy obiektowych baz danych (2) Sprawne zarządzanie pamięcią zewnętrzną, indeksowanie, buforowanie, odśmiecanie Konsekwentna organizacja i dostęp do meta-informacji (katalogów, pomocy) Rozszerzalność, skalowalność, dynamiczna ewolucja schematu Wspomaganie dla więzów integralności (integrity constraints) i aktywnych reguł (active rules) Dobrze udokumentowane, uniwersalne, elastyczne i minimalne biblioteki klas oraz inne środki ponownego użycia Wspomaganie dla materializowanych i niematerializowanych obiektowych perspektyw (object views), aktualizacja perspektyw (view updating) Bezszwowa integracja multimediów (tekst, grafika, wideo, audio) K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 6 Krytyczne cechy obiektowych baz danych (3) Zintegrowanie systemu z bogatym zestawem narzędzi i udogodnień (data mining, CASE, data warehouses, pakiety statytystyczne, ...) Zarządzanie transakcjami (własności ACID, długie transakcje) Składowanie (backup), odwracanie (rollback) i odtwarzanie (recovery) Wersjonowanie, własności temporalne, obiekty archiwalne Integracja z serwisami Internetu (przystosowanie do dostępu poprzez Web) Współdziałanie systemów heterogenicznych, przystosowanie do współpracy z z oprogramowaniem komponentowym (CORBA, OpenDoc, JavaBeans, ActiveX) Architektura klient-serwer Zarządzanie rozproszonymi obiektami, rozproszone przetwarzanie, optymalizacja zapytań w systemach rozproszonych Zarządzanie metodami dostępu, parametryczne dostrajanie K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 7 Kryteria oceny (obiektowych) SZBD Wydajność (performance) - jak szybki jest produkt? Skalowalność (scalability) - jak produkt będzie działał gdy wzrośnie liczba użytkowników i objętość danych? Funkcjonalność (functionality) - jakie możliwości i cechy produkt oferuje? Zgodność ze standardami - czy produkt uzależnia od jednego dostawcy? Łatwość użycia (usability) - ile wysiłku kosztuje nauczenie się produktu i jak łatwo będzie się go używać? Niezawodność (reliability) - jak często produkt zawodzi? Wspomaganie (support) - czy dostawca produktu zapewnia pomoc i jest odpowiedzialny? Środowisko (environment) - na jakim sprzęcie/systemie operacyjnym pracuje produkt? Żywotność (viability) - czy można oczekiwać, że dostawca będzie podtrzymywał produkt w przyszłości? Cena (price) - ile kosztuje produkt, w krótkim czasie i w oczekiwanym horyzoncie czasowym? K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 8 Po co standard? Przenaszalność (portability): Aplikacja może działać na różnych obiektowych SZBD. Współdziałanie (interoperability): Aplikacja może działać jednocześnie z wieloma obiektowymi SZBD Wartość dodana, synergia: Wytwórcy oprogramowania mogą skupić się na wartościach dodanych, nie na podstawowych interfejsach Narzędzia i biblioteki wspólne dla wielu systemów (nowy rynek) Uwolnienie użytkowników od niebezpieczeństwa zależności od jednego dostawcy Szybszy wzrost przemysłu, poprzez wzrost konkurencji w zakresie wartości dodanych Komunikacja pomiędzy użytkownikami i projektantami Ujednolicone uczenie W tej chwili jest dość trudno ocenić, czy standard spełni te oczekiwania. Jak uczy doświadczenie standardów SQL i C++, prawdopodobnie nie spełni. Jest to jednak nieodzowny początek drogi. K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 9 Co podlega standardyzacji? Interfejsy Ale nie wnętrze OSZBD lub jego architekturę Kandydaci do standardyzacji: • Model obiektowy (pojęcia, ograniczenia, terminologia) • Język definicji obiektów • Format wymiany informacji (przekazywania obiektów) • Obiektowy język zapytań • Abstrakcje wspomagające język zapytań (perspektywy, zapamiętane procedury, aktywne reguły,...) + • Wiązania do języków programowania: C++, Smalltalk, Java,... - • Zintegrowany język programowania aplikacji oparty o język zapytań (do pisania metod) - • Pomosty (gateways) do innych systemów (np. relacyjnych) - • Administrację systemem, katalogi BD, dostęp do katalogów - • Prawa dostępu, bezpieczeństwo - • Narzędzia i usługi (klasy systemowe, biblioteki klas) - • Protokóły wymiany informacji w sieci (np. IIOP) + + +/+/- Jest jeszcze wiele do zrobienia... K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 10 ODMG 2.0: zawartość • Ramowa architektura OSZBD • Model obiektowy • Języki specyfikacji obiektów - Język definicji obiektówODL (nadzbiór OMG IDL) - Format wymiany obiektów • Obiektowy język zapytań OQL (składnia wzorowana na SQL) • Wiązanie do C++ • Wiązanie do Smalltalk’a • Wiązanie do Java • Dodatki - Porównanie z modelem obiektowym OMG - Obiektowe bazy danych w środowisku OMG CORBA “Standard leży na przecięciu trzech istniejących dziedzin technologicznych: baz danych (SQL), technologii obiektowych (OMG) oraz obiektowych języków programowania (C++, Smalltalk, Java).” K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 11 ODMG 2.0: podejście umiarkowanie rewolucyjne Podejście ewolucyjne: Rozbudowa relacyjnych SZBD (DB2, Oracle, Sybase, Informix, Ingres) o nowe własności, w tym obiektowe np. BLOBy, abstrakcyjne typy danych, zapamiętane procedury. Niweczą standard SQL-92 poprzez niekompatybilne rozszerzenia Podejście eklektyczne, odmiana podejścia ewolucyjnego: Budowa systemów obiektoworelacyjnych, umożliwiających przechowywanie tradycyjnych tablic i obiektów. Brak kompatybilności, koncepcyjna redundancja, przypadkowość, niesystematyczność rozwiązań. SQL3 jest tu nadzieją, ale dość iluzoryczną. Podejście “wolna amerykanka”: Spontaniczna rozbudowa “od dołu do góry” niektórych narzędzi wspomagających “małą informatykę”: arkuszy kalkulacyjnych, systemów przetwarzania dokumentów (LotusNotes, MS Repository). Standardyzacja - wątpliwa. Podejście umiarkowanie rewolucyjne: Jednorodny model obiektowy, ale z licznymi odniesieniami do istniejących technologii. Takie właśnie podejście reprezentuje ODMG 2.0. Podejście rewolucyjne: Jednorodny model obiektowy, jednorodna architektura i język programowania baz danych, język zapytań zintegrowany z językiem programowania. Całkowite odrzucenie półśrodków takich jak C++, Java, SQL. Mocny polimorficzny system kontroli typów, ortogonalna trwałość, ortogonalność języków zapytań i trwałości. K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 12 ODMG 2.0: Ramowa architektura Źródłowe aplikacje w rozszerzonym jęz.progr. Deklaracje w ODL lub jęz.progr./ODL Preprocesor deklaracji Kompilator jęz. progr. metadane OSZBD, procedury czasu wykonania (runtime) Aplikacje w kodzie do konsolidacji Konsolidator (linker) Dostęp do danych Baza danych K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 13 Działający program Model obiektowy ODMG Ustala konstrukcje, które muszą być wspomagane przez OSZBD Podstawowymi prymitywami modelu są obiekty i literale. Każdy obiekt posiada unikalny identyfikator. Literal nie posiada identyfikatora, jest to stała. Obiekty i literale są charakteryzowane poprzez typy. Każdy element danego typu posiada wspólną dziedzinę stanów (ten sam zestaw własności) oraz wspólne zachowanie (ten sam zestaw operacji). Obiekt jest niekiedy określany jako wystąpienie typu. Stan obiektu jest zdefiniowany jako wartości przechowywane dla własności. Własnościami mogą być atrybuty obiektu oraz związki obiektu z innymi obiektami. Zwykle własności obiektu mogą zmieniać się w czasie. Zachowanie się obiektu jest zdefiniowane poprzez zbiór operacji, które mogą być wykonane na obiekcie lub przez obiekt. Operacje mogą mieć parametry wejściowe i wyjściowe, każdy z wyspecyfikowanym typem. Operacja może zwrócić rezultat określonego typu. Baza danych przechowuje obiekty, umożliwiając jednoczesny dostęp do nich przez wielu użytkowników. Opiera się na schemacie zdefiniowanym w ODL i zawiera wystąpienia typów zdefiniowane w jej schemacie. K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 14 Typy i klasy; interfejsy i implementacje Typ posiada dwa aspekty: - specyfikację interfejsu (jedną) - jedną lub więcej specyfikacji implementacji Interfejs (interface): zewnętrzna charakterystyka obiektów danego typu widoczna dla użytkowników obiektu. Interfejs włącza operacje, które można wykonać na obiekcie oraz zmienne stanu (atrybuty), których wartości są dostępne z zewnątrz. Implementacja: określa wewnętrzne aspekty obiektu danego typu. Składa się z reprezentacji oraz zbioru metod. Metody są ciałami procedur. Dla każdej operacji zdefiniowanej w interfejsie istnieje odpowiednia metoda, która ustala czynności niezbędne dla wykonania tej operacji. Implementacja może zawieraćstruktury danych i metody wewnętrzne, niewidoczne dla użytkowników obiektu i nie wyspecyfikowane w interfejsie. Typ może mieć wiele implementacji, np. jedną w C++, inną w Smalltalk’u; tylko jedna z nich występuje w danej aplikacji. Oddzielenie interfejsu (specyfikacji klasy) od implementacji jest bardzo istotne i określa sposób, w jaki ODMG podchodzi do problemu hermetyzacji (encapsulation). Mniej formalnie: Interfejs = typ Implementacja = klasa K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 15 Podtypy i dziedziczenie subtypes, inheritance Związek typ-podtyp (typ-nadtyp), określany także jako związek is-a. interface Pracownik{...}; interface Profesor : Pracownik{...}; interface ProfesorNadzw : Profesor{...}; Obiekt typu Profesor posiada cały interfejs Pracownik plus swój własny. Obiekt typu ProfesorNadzw posiada cały interfejs Profesor plus swój własny (czyli cały interfejs Pracownik, plus to, co dodał Profesor, plus własny). Dowolne wystąpienie podtypu jest jednocześnie wystąpieniem nadtypu, np. obiekt typu ProfesorNadzw jest jednocześnie obiektem typu Pracownik. Relacje “być podtypem”, “być nadtypem” są przechodnie. Stąd wynika, że wszędzie tam, gdzie może być użyty obiekt o danym typie T, może być także użyty obiekt typu T1, gdzie T1 jest podtypem T. Np. Wszędzie tam gdzie mozę być użyty obiekt Pracownik może być także użyty obiekt Profesor lub typu ProfesorNadzw. Jest to zasada zamienialności (substitutability). K.Subieta. Bazy danych i inżynieria oprogramowania, Wykład 7, Folia 16