Nowy projekt w PJWSTK i IPI PAN: System zarządzania obiektową bazą danych Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa Instytut Podstaw Informatyki PAN, Warszawa K.Subieta. Założenia projektu SZOBD, Folia 1 czerwiec 2001 Motywacje • Stworzenie poligonu badawczego, podstawy publikacji naukowych dla uczestników projektu • Samo-kształcenie i nauczanie: zrozumienie zasad projektowania i konstrukcji SZOBD • Prace doktorskie i prace magisterskie • Podjęcie wyzwania technologicznego, pokazanie światu potencjalnego kierunku rozwoju SZOBD • Cele komercyjne (mniej ważne): w dalszym etapie zastosowania komercyjne stworzonego prototypu K.Subieta. Założenia projektu SZOBD, Folia 2 czerwiec 2001 Stan obecny w zakresie SZOBD (1) • Systemy tzw. "czysto-obiektowe": rozczarowują niskim poziomem interfejsów do tworzenia aplikacji, nie są wyposażane w atrakcyjne cechy takie jak języki zapytań, perspektywy, zapamiętane procedury i metody, itd. Pseudo-standard ODMG rozczarowuje niespójnościami i wadami koncepcji; prawdopodobnie jest już martwy. • Systemy tzw. "obiektowo-relacyjne": rozczarowują molochowatością i eklektyzmem - zmieszaniem różnych mało kompatybilnych paradygmatów. Pseudo-standard ANSI SQL3: nieprawdopodobne monstrum, zmarł pod własnym ciężarem. K.Subieta. Założenia projektu SZOBD, Folia 3 czerwiec 2001 Stan obecny w zakresie SZOBD (2) • Standard SQL 1999 (SQL 2000) - kontynuacja standardu SQL3, ma wszelkie szanse podzielić jego los. • XML, czyli jak W3C próbuje zbudować dziedzinę baz danych od nowa opierając się na banalnej koncepcji składniowej. Frustrujące podejście "bottom-up". • PJama i inne poronione koncepcje dodania cechy trwałości do języka Java. • JDO, czyli jak przystosować język Java do bazodanowych funkcji. Skrzynia ładunkowa Jelcza, silnika malucha. Brak koncepcji języka zapytań. • "Pospolite ruszenie": SODA i temu podobne zrywy tzw. "praktyków". K.Subieta. Założenia projektu SZOBD, Folia 4 czerwiec 2001 Stan obecny w zakresie SZOBD (3) • Świat baz danych zrobił się eklektyczny i dekadencki: brak jednorodnych, spójnych i uniwersalnych koncepcji, próby dopasowania systemów do wielu popularnych technologii, języków, koncepcji i buzzword-ów. Owocuje to monstrualnością rozwiązań. • Obiektowość w bazach danych zbyt małą wagę przywiązuje do języków zapytań, źródła sukcesu relacyjnych baz danych. • Technologie XML w zakresie baz danych są naiwne. • Java jako paradygmat budowy baz danych jest "drugą pomyłką ludzkości" (pierwszą był C++, B. Meyer). K.Subieta. Założenia projektu SZOBD, Folia 5 czerwiec 2001 Stan obecny w zakresie SZOBD (4) • Frustrująca cechą obecnych podejść do obiektowych baz danych jest przyjmowanie założenia, że aplikacje działające na takich bazach danych muszą być programowane w obecnie popularnych obiektowych językach programowania, takich jak C++, Java i (rzadziej) Smalltalk. • Ponieważ te języki są silnie przywiązane do własnych struktur fizycznych, to natychmiast rodzi zarzut, że obiektowe bazy danych są krokiem w tył w stosunku do relacyjnych, ponieważ nie spełniają wymogu konceptualizacji danych i zmuszają do programowania na niskim poziomie, znacznie niższym niż poziom SQL. K.Subieta. Założenia projektu SZOBD, Folia 6 czerwiec 2001 Stan teorii w zakresie SZOBD • Kontynuacja i rozszerzanie paradygmatów modelu relacyjnego, takich jak algebra relacji i rachunek relacyjny. • Ułomność koncepcji, ograniczenia funkcjonalności, poważne wady formalne tworów określanych jako "obiektowe algebry". • Nowe koncepcje takie jak komprehensje i rachunek monoidów - w istocie są to koncepcje składniowe, bez istotnej semantyki. • Obecnie jedyną sensowną i uniwersalną koncepcją teoretyczną jest podejście stosowe (SBA). Jedynym sposobem propagacji tej koncepcji jest budowa systemu. K.Subieta. Założenia projektu SZOBD, Folia 7 czerwiec 2001 Nasze aktywa • SBA jest zaproponowane przeze mnie i rozwijane w zespołach, którymi kierowałem lub kieruję. Biorąc pod uwagę teoretyczne buble produkowane przez inne zespoły badawcze, SBA tworzy szansę, której nie powinniśmy zmarnować. • SBA ma zaszłości implementacyjne w postaci prototypu Loqis. Wiele rozwiązań tego systemu można przenieść i uogólnić w nowym systemie. • Praca doktorska Jacka Płodzienia posuwa do przodu ważny aspekt tego podejścia - optymalizację zapytań. • Dalsze prace doktorskie i magisterskie jako motywacja. K.Subieta. Założenia projektu SZOBD, Folia 8 czerwiec 2001 Nasze pasywa • Pieniądze: nie należy się spodziewać, szczególnie w pierwszym okresie rozwoju projektu. To zmniejsza motywacje potencjalnych uczestników projektu. W dalszym etapie można się starać o granty KBN lub UE. • Programowanie: słabo rozpoznane środowiska implementacyjne, brak większych doświadczeń w zakresie programowania. Ale właśnie z tego powodu ten projekt ma sens. • Kadry: najtrudniejszy będzie etap początkowy, w którym należy zbudować fundamenty systemu, gdyż tej pracy nie da się zrównoleglić. K.Subieta. Założenia projektu SZOBD, Folia 9 czerwiec 2001 Podstawowe założenia projektu (1) • Odrzucenie wszelkich pozostałości modelu relacyjnego. • Zerwanie z eklektyzmem i wszystkoizmem, zbudowanie uniwersalnego SZOBD na bazie jednorodnej koncepcji i jednorodnego języka zapytań/programowania obejmujących wszystkie aspekty i moduły SZOBD. • Tylko jeden język (SBQL++) będący jednocześnie językiem zapytań, wyrażeń, konstrukcji imperatywnych, oraz wszelkich abstrakcji programistycznych i bazodanowych (procedury, metody, perspektywy, itd.). Zapytania/programy w tym języku będą kompilowane do kodu pośredniego, następnie interpretowane przez własną maszynę wirtualną. K.Subieta. Założenia projektu SZOBD, Folia 10 czerwiec 2001 Podstawowe założenia projektu (2) • Zachowanie wszystkich ideałów obiektowości, takich jak: ortogonalna trwałość, wysoki poziom abstrakcji danych i dostępu do danych, dowolnie złożone obiekty, relatywizm obiektów, pełna wewnętrzna identyfikacja obiektów. • Jednorodne traktowanie danych indywidualnych i masowych, pełna ortogonalność konstruktorów danych. • Zachowanie wszystkich pojęć obiektowości takich jak: klasy i dziedziczenie, metody (pamiętane po stronie bazy danych), hermetyzacja, polimorfizm, związki asocjacyjne, interfejsy. K.Subieta. Założenia projektu SZOBD, Folia 11 czerwiec 2001 Podstawowe założenia projektu (3) • Optymalizacja zapytań na bazie reguł przepisywania, indeksów, analizy modeli kosztu, itd. • Zachowanie wszystkich niezbędnych cech systemów baz danych, takich jak: transakcje, wielodostęp, ochrona dostępu, buforowanie, rozproszenie zasobów. • Interfejs nasłuchowy na bazie protokołów internetowych (TCP/IP, HTTP, IIOP) umożliwiający przezroczystą integrację zasobów rozproszonych. • Umożliwienie podłączenia spadkowych aplikacji poprzez broker działający na poziomie podobnym do poziomu ORB-ów CORBA, ale (w odróżnieniu) z zachowanie wszelkich cech bazo-danowych. K.Subieta. Założenia projektu SZOBD, Folia 12 czerwiec 2001 Podstawowe założenia projektu (4) • Wydajność systemu oraz konsumpcja zasobów pamięci nie będą priorytetami przy konstrukcji systemu. Liczyć się będzie zredukowanie dystansu pomiędzy modelem pojęciowym a modelem implementacyjnym. • Staranne zaprojektowanie metamodelu i katalogów systemu, umożliwiające m.in. optymalizacje i generyczność aplikacji poprzez refleksję. • Statyczna i dynamiczna kontrola typologiczna poprawności programów i danych, na tyle elastyczna, aby nie zmniejszać uniwersalności systemu. Nie mam na myśli polimorficznych systemów typów a la ML. K.Subieta. Założenia projektu SZOBD, Folia 13 czerwiec 2001 Architektura systemu - dolne warstwy CRUD - Create, Retrieve, Update, Delete Interfejsy wyższego poziomu Interfejs CRUD dostępu do interpretowanych trwałych i nietrwałych obiektów Fizyczny skład nietrwałych obiektów Interfejs CRUD transakcyjnego dostępu do interpretowanych trwałych obiektów Interfejs będzie zajmował się sesjami, lokalnymi transakcjami i ochroną danych Interfejs CRUD dostępu do interpretowanych trwałych obiektów Interfejs będzie specjalizowany dla poszczególnych kategorii trwałych bytów Interfejs CRUD dostępu do nie-interpretowanych trwałych obiektów (BLOB-ów) Dowolny trwały byt programistyczny czasu wykonania (obiekt, klasa, procedura, sesja, dziennik, transakcja, perspektywa, indeks, pozycja katalogu, okno, itd.) będzie zapamiętany i dostępny w identyczny sposób. Fizyczny skład trwałych obiektów K.Subieta. Założenia projektu SZOBD, Folia 14 czerwiec 2001 Utylizacja spadkowych baz danych Interfejsy wyższego poziomu Interfejs CRUD dostępu do interpretowanych trwałych i nietrwałych obiektów Osłona (wrapper) specjalizowana dla danej spadkowej bazy danych Interfejs programistyczny (API) spadkowej bazy danych (np. JDBC) Spadkowa baza danych K.Subieta. Założenia projektu SZOBD, Folia 15 Fizyczny skład nietrwałych obiektów Istotne jest przyjęcie założenia, że spadkowe bazy danych będą dostępne na poziomie interfejsu CRUD, a nie np. SQL. Może to mieć konsekwencje dla wydajności, ale uwalnia od konieczności translacji języka wysokiego poziomu np. SBQL na SQL. czerwiec 2001 Architektura systemu - górne warstwy Zarządzanie sesjami użytkowników, transakcje globalne Interfejs będzie zajmował się tworzeniem i zamykaniem sesji, transakcjami globalnymi, rejestracją użytkowników, ochroną danych i usług. Środowisko udogodnień (administracja, zapytania i modyfikacje ad hoc, ...) Środowisko tworzenia i modyfikacji zapytań/programów Integrator i broker odległych baz danych Interpreter i optymalizator zapytań/programów Wszystkie programy będą przechowywane w bazie danych (niekoniecznie tej samej, na której operują) Interfejs będzie zajmował się integracją rozproszonych zasobów danych i usług. Interfejs będzie zajmował się kompilacją i wykonaniem zapytań/programów Interfejsy CRUD niższego poziomu K.Subieta. Założenia projektu SZOBD, Folia 16 czerwiec 2001 Integracja zasobów rozproszonych Filozofia podobna do założeń standardu CORBA: Miejsce 1 Miejsce 2 Miejsce 3 Integrator i broker odległych baz danych Integrator i broker odległych baz danych Integrator i broker odległych baz danych Architektura może być określona jako multi-klient/multi-serwer. Koncepcja nie dzieli aplikacji/miejsc na klientów i serwery. Różnica z CORBA będzie polegać na tym, że zintegrowane zasoby będą przetwarzane we własnym języku zapytań/programowania. K.Subieta. Założenia projektu SZOBD, Folia 17 czerwiec 2001 Programowanie aplikacji w Java, C++,...? • Nie ma takiego założenia. To jest właśnie przyczyna molochowatości systemów, a koncepcyjna prostota może być naszym jedynym atutem. • Na pewnym etapie można zrobić interfejs pozwalający z naszego języka wołać kod napisany w innych językach. Nigdy odwrotnie. • Loqis ma udogodnienie pozwalające na wywołanie procedury napisanej w innym języku, przechowywanej w dynamicznej bibliotece (.dll). Udogodnienie przechwytuje parametry ze stosu Loqisa, uruchamia procedurę i wkłada jej wynik na stos Loqisa. • Procedura nie ma dostępu do bazy danych, musi on być zorganizowany w języku wywołującym procedurę. K.Subieta. Założenia projektu SZOBD, Folia 18 czerwiec 2001 Integracja z Web • Problem nie wygląda na skomplikowany. • Programy odwzorowujące a la XSL(T), pozwalające odwzorować XML na obiekty bazy danych oraz wyprodukować z bazy danych XML lub HTML, będzie można zaprogramować w języku zapytań/programowania. • Potrzebny będzie dość prosty interfejs skryptowy (API) pozwalający na wywołanie tych programów. • Tworzenie dynamicznych stron Web będzie polegało na napisaniu tych programów odwzorowujących oraz wywołaniu ich przy pomocy skryptów zanurzonych w HTML, Java, Perlu, PHP lub innym tego rodzaju języku. K.Subieta. Założenia projektu SZOBD, Folia 19 czerwiec 2001 Technologie Implementacyjne • Przyjmujemy, że wszystko będzie napisane od nowa w wybranym języku (przypuszczalnie Java). Nie zakładamy budowy tego systemu na wierzchołku innego systemu, np. na relacyjnej lub obiektowej bazie danych. • NT raczej niż Linux. Na pewno nie Unix. • Problemem są warstwy dolnego poziomu i buforowanie. Można byłoby rozejrzeć się za jakąś dobrą stertą (heap) z GC, do przechowywania "gumowych" blobów. • Interfejsy graficzne: można wykorzystać standardowy interfejs Windows, interfejs "przeglądarkowy" (np. IE), Visual Basic, lub inny pakiet ze standardowymi widżetami. K.Subieta. Założenia projektu SZOBD, Folia 20 czerwiec 2001 Model obiektowy (1) • Dowolnie złożone obiekty, dynamicznie rozszerzalne, brak stałego formatu obiektów. Moduły, sesje, transakcje, procedury, funkcje,... są także obiektami. • Pełny relatywizm obiektów: każdy podobiekt (atrybut) jest też obiektem. • Totalna wewnętrzna identyfikacja: każdy obiekt lub podobiekt ma (nieczytelny) wewnętrzny identyfikator, który może być trwały. • Związki referencyjne pomiędzy obiektami; integralność referencyjna podtrzymywana systemowo. • Związki referencyjne i metody są także obiektami i posiadają wewnętrzne identyfikatory. K.Subieta. Założenia projektu SZOBD, Folia 21 czerwiec 2001 Model obiektowy (2) • Obiekty mają unikalne "zewnętrzne" nazwy pierwszej kategorii programistycznej. • Ortogonalna trwałość: obiekty trwałe i nietrwałe są przetwarzane przy pomocy dokładnie tych samych środków. Cecha trwałości jest tylko "flagą" zawieszoną na obiekcie. Żadnych "persistence capable classes"! • Kolekcje: obiekty posiadające podobiekty. Będą rozróżniane: "wielozbiory", "sekwencje" i "opcje" (modelowanie wartości NULL). Brak pojęcia ekstensji. • Metody, trygery, ograniczenia, będą mogły być własnościami obiektów, tak samo jak atrybuty i związki referencyjne. Trwałe wątki - koncepcja do rozważenia. K.Subieta. Założenia projektu SZOBD, Folia 22 czerwiec 2001 Model obiektowy (3) • Klasy: pierwszej kategorii, przechowują inwarianty obiektów, w tym metody, atrybuty, typy, ograniczenia. Przechowywane w bazie danych. • Hierarchia dziedziczenia, wielokrotne dziedziczenie. • Dynamiczne role - alternatywa dla wielokrotnych interfejsów i zasady zamienialności (LSP). • Polimorfizm metod, przesłanianie. • Kontrola typologiczna - bardzo ostrożna i sterowana, możliwości typów polimorficznych, ale bez ortodoksyjnych ograniczeń. Typy (poza wyjątkami) będą traktowane wyłącznie jako dodatkowe ograniczenie budowy obiektu oraz sposobu ich użycia. K.Subieta. Założenia projektu SZOBD, Folia 23 czerwiec 2001 Model obiektowy (4) • Typy atomowe: int, real, string, boolean, .... • Metody - pisane wyłącznie w dedykowanym języku zapytań programowania. • Brak metod i atrybutów "klasowych". Jeżeli pojawi się taka konieczność, to należy wstawić metody bezpośrednio do kolekcji lub utworzyć nową klasę dla kolekcji. • Wynik zwracany przez zapytania: kombinacja wartości, nazw i referencji do obiektów. • Procedury bazy danych, perspektywy (aktualizowalne), trygery (pojęcie "zdarzenia", rejestracja i obsługa zdarzeń). K.Subieta. Założenia projektu SZOBD, Folia 24 czerwiec 2001 Model obiektowy (5) • Hermetyzacja "ortogonalna" - dowolna cecha obiektu lub klasy może być "publiczna" lub "prywatna". • Listy eksportowe czyli interfejsy. • Listy importowe (pasywnych i aktywnych efektów ubocznych). • Katalogi: standardowa budowa i dostęp poprzez język zapytań; umożliwienie programowania z refleksją. • Abstrakcyjne typy danych: synonim klasy. • Zdarzenia - specjalne "fruwajace" obiekty środowiska programistycznego i bazy danych, wyłapywane przez "zjadaczy zdarzeń". K.Subieta. Założenia projektu SZOBD, Folia 25 czerwiec 2001 Model klasowy bez dynamicznych ról i40 KlasaOsoba i41 Wiek (...kod...) ................ i1 Osoba Klasyczny, stosowany w większości systemów i2 Nazwisko ”Wilski” i3 RokUr 1950 i50 KlasaPrac i51 ZmieńZar (...kod...) i52 ZarNetto (...kod...) ................ i4 Prac i9 Prac i5 Nazwisko ”Nowak” i10 Nazwisko ”Kowalski” i6 RokUr 1944 i11 RokUr 1940 i7 Zar 2500 i12 Zar 2000 i8 PracujeW i13 PracujeW i127 K.Subieta. Założenia projektu SZOBD, Folia 26 Skomplikowane reguły wiązania nazw. Brak "czystości" referencyjnej. i128 czerwiec 2001 Model z dynamicznymi rolami i40 KlasaOsoba i41 Wiek (...kod...) Proste wiązanie nazw. Czystość referencyjna. Brak anomalii wielo-dziedziczenia. ............. i1 OSOBA i60 KlasaStudent i2 Nazwisko ”Wilski” i61 ŚredniaOcen (...kod...) i3 RokUr 1950 ................ i50 KlasaPrac i51 ZmieńZar (...kod...) i52 ZarNetto (...kod...) ................ i4 OSOBA i7 OSOBA i5 Nazwisko ”Nowak” i8 Nazwisko ”Kowalski” i6 RokUr 1944 i9 RokUr 1940 i13 PRAC i16 PRAC i14 Zar 2500 i17 Zar 2000 i19 STUDENT i20 NrIndeksu 76943 i21 Wydział ”fizyka” i18 PracujeW i15 PracujeW i127 K.Subieta. Założenia projektu SZOBD, Folia 27 i128 czerwiec 2001 Język zapytań/programowania • SBQL - Stack Based Query Language • Semantyka oparta na koncepcji stosu środowiskowego • Operatory niealgebraiczne: where, . , zależne złączenie, kwantyfikatory, uporządkowanie, tranzytywne domknięcia. • Operatory algebraiczne: +, -, *, /, =, <, union, ..... • Klasy, dziedziczenie, hermetyzacja, polimorfizm. • Konstrukcje imperatywne bazujące na zapytaniach. • Perspektywy, procedury, metody (pełna rekurencja), trygery, parametry w postaci zapytań, wynik jako zapytanie, macro-call-by-value, macro-call-by-reference. K.Subieta. Założenia projektu SZOBD, Folia 28 czerwiec 2001 Rezultaty zwracane przez zapytania Atomowe: 25 "Kowalski" i11 true Złożone: struct{i1, i56} bag{i1, i56} sequence{i1, i56} option{i1} option{} bag{ struct{i1, i56}, struct{i6, i72}, struct{i11, i72}} bag{struct{n("Kowalski"), Zarobek(2500), d(i56)}} bag{struct{ Dział(i56), Prac( bag{ struct{ n("Nowak"), s(i9 ) }, struct{ n("Stec" ), s(i14) }})} K.Subieta. Założenia projektu SZOBD, Folia 29 czerwiec 2001 Podsumowanie • Nie jest pewne, czy obecny czas i sytuacja w Polsce sprzyja, ale jedyną szansą na zaistnienie zespołu naukowego na szerszym forum jest zbudowanie nowego systemu o ciekawych, niespotykanych własnościach. Tworzenie 51-szego systemu obiektowego o znanych własnościach ma mały sens i jest nieinteresujące. • System taki można zbudować na bazie SBA. • Atutem takiego systemu może być maksymalna koncepcyjna jednorodność i uniwersalność. Przepowiadam rychły zmierzch "epoki eklektycznej", symptomami tej przepowiedni są trupy SQL3 i ODMG. • Czy wystarczy nam wytrwałości? K.Subieta. Założenia projektu SZOBD, Folia 30 czerwiec 2001