Oglądaj/Otwórz

Transkrypt

Oglądaj/Otwórz
Prof. dr hab. inż. Stanisław Kozielski
Instytut Informatyki
Politechnika Śląska
Gliwice, 29.04.2015 r.
Recenzja
rozprawy doktorskiej Aleksandry Boniewicz pt.: „Optymalizacja warstwy
dostępu do danych w aplikacjach korzystających z odwzorowań obiektoworelacyjnych”
Promotor rozprawy: prof. dr hab. Krzysztof Stencel
Promotor pomocniczy: dr inż. Piotr Wiśniewski
1. Aktualność i znaczenie tematyki rozprawy
Rozprawa dotyczy systemów odwzorowań obiektowo-relacyjnych (ORM – ang. objectrelational mapping). Systemy ORM tworzą sporą grupę narzędzi i środowisk programistycznych, które wyrosły z potrzeb programistów tworzących aplikacje, czyli programy użytkowe,
korzystające z baz danych. Problemem w tym procesie jest odmienność obiektowego modelu
danych w obiektowych językach programowania, powszechnie stosowanych obecnie do
budowy aplikacji i relacyjnego modelu danych, będącego podstawą większości komercyjnych
systemów zarządzania bazami danych. Narzędzia ORM udostępniają projektantowi obiektowej aplikacji mechanizmy umożliwiające trwałe przechowywanie obiektów w relacyjnej
bazie danych oraz operowanie tymi obiektami z pełną kontrolą transakcyjności. Narzędzia te
automatyzują więc proces transformacji danych obiektowych, używanych w aplikacji, na
postać danych przechowywanych w relacyjnej bazie danych (i odwrotnie). W strukturze
całego systemu informatycznego narzędzia ORM tworzą zazwyczaj dodatkową warstwę
pośredniczącą między aplikacją a bazą danych.
Systemy ORM budowane są dla określonych języków programowania, natomiast obejmują
one jak najszerszy zestaw systemów zarzadzania bazami danych. To rodzi pewien problem,
bowiem język SQL, który stanowi podstawę dostępu do relacyjnych baz danych, nie we
wszystkich systemach baz danych został zaimplementowany tak samo, a w niektórych
systemach niektóre funkcje SQL-a, zwykle rzadziej używane, nie zostały zaimplementowane
w ogóle. Przykładem mogą być tzw. zapytania rekurencyjne, wprowadzone dopiero
w standardzie SQL:1999, przy czym niektóre firmy tworzące systemów baz danych
opracowały już wcześniej własne rozwiązania (np. IBM w DB2 i Oracle). W rezultacie
implementacje zapytań rekurencyjnych w różnych systemach baz danych różnią się między
sobą, a w niektórych, np. popularnym systemie MySQL, funkcja ta w ogóle nie została
zaimplementowana. To m.in. jest przyczyną, że w systemach ORM nie rozwinięto mechanizmów obsługi zapytań rekurencyjnych.
W ocenianej rozprawie podjęto próbę rozszerzenia funkcjonalności warstwy odwzorowań
obiektowo-relacyjnych o mechanizmy obsługi zapytań rekurencyjnych, rozważając dwa
zasadniczo różne przypadki, kiedy w implementacji języka SQL dla danej bazy są dostępne
zapytania rekurencyjne, a także kiedy ich brak. Rozpatrzono też wpływ na wydajność
wykonywania zapytań rekurencyjnych danych redundantnych, które mogą być materializowane w procesie obsługi bazy danych.
1
Prace nad rozwojem narzędzi ORM są w dalszym ciągu prowadzone, więc podjęcie tematu,
który umożliwia rozszerzenie funkcjonalności tych systemów uważam za aktualne i celowe.
Rozważając znaczenie podjętego tematu należałoby postawić też pytanie, na ile zapytania
rekurencyjne są problemem istotnym dla aplikacji korzystających z baz danych. Dla części
aplikacji nie jest to zadanie typowe i pierwszoplanowe. Jednak dane o strukturze
hierarchicznej oraz dane grafowe nie są rzadkością w bazach danych, a uwzględnienie
powiązań hierarchicznych, a także powiązań w postaci grafu prowadzi do zapytań rekurencyjnych. Autorka pracy przedstawiła statystykę pokazującą skalę obecności tego typu danych
i zapytań w wybranej kategorii systemów informatycznych (systemów obsługi studiów).
Reasumując, uważam że rozprawa dotyczy aktualnej i wystarczająco ważnej problematyki
badawczej.
2. Zakres pracy
Praca składa się z siedmiu rozdziałów, czterech dodatków i bibliografii.
W pierwszym rozdziale zdefiniowano elementarne pojęcia dotyczące relacyjnego modelu
danych oraz obiektowego modelu programowania, a następnie scharakteryzowano bardzo
krótko narzędzia realizujące odwzorowania obiektowo-relacyjne. Sformułowano też cel
rozprawy, wymieniono wyniki uznane przez autorkę za najważniejsze i przedstawiono
strukturę pracy. Cel pracy niepotrzebnie został zdefiniowany nazbyt ogólnie, dopiero dalsza
treść punktu 1.1.1 pracy doprecyzowuje zakres badań.
Drugi rozdział pracy zawiera w pierwszej części podstawowe informacje o wybranych
w pracy rozwiązaniach ORM: JPA – standardzie ORM dla języka Java oraz Hibernate popularnym systemie ORM wykorzystującym standard JPA. Autorka przyjęła tu dość
dyskusyjną formę prezentacji sposobu odwzorowania obiektów na relacje – listingi plików
2.1 – 2.4 i omawianie ich szczegółów można by przenieść do dodatków. W drugiej części
tego rozdziału krótko przedstawiono historię implementacji zapytań rekurencyjnych w języku
SQL i składnię tych zapytań w standardzie SQL:1999. Omówiono też różnice w implementacji zapytań rekurencyjnych w różnych systemach zarządzania bazami danych.
Trzeci rozdział zawiera opis bazy danych wykorzystanej do eksperymentalnej oceny wydajności programów implementujących metody omawiane bądź opracowane w kolejnych
rozdziałach rozprawy. Opis ten jest nadzwyczaj skąpy: przedstawiono strukturę tabel, ale brak
komentarzy, które mogłyby ułatwić interpretację danych. Przedstawiono również teksty
7 zapytań rekurencyjnych do zdefiniowanej bazy danych.
W czwartym rozdziale pracy przedstawiono proponowane rozwiązanie interfejsu programistycznego rozszerzającego system Hibernate o możliwość kierowania zapytań rekurencyjnych
do systemów baz danych, które takie zapytania realizują. Dla przykładowych tabel z danymi
hierarchicznymi i danymi grafowymi (dającymi możliwość formułowanie rekurencyjnych
zapytań) zaprezentowano przykłady różnego formułowania takich zapytań dla dwóch
dostępnych w Hibernate sposobów odwzorowania obiektów na tabele: za pomocą plików
konfiguracyjnych XML oraz użycia odpowiednich adnotacji w klasie Javy. Przeprowadzono
testy wydajności opracowanych rozwiązań poprzez pomiar czasu wykonania zapytań rekurencyjnych dla różnych rozmiarów danych i trzech systemów zarządzania bazami danych.
Komentując przedstawione rozwiązania można zwrócić uwagę, że osiągnięto zamierzony cel,
jednakże sposób prezentacji treści rozdziału czwartego pozostawia spory niedosyt. Oba
projekty interfejsu „spadają z nieba” i zostały przedstawione w postaci listingów odpowied-
2
nich plików i programów (wraz z komentarzami). Taki sposób prezentacji niezbyt przystaje
do pracy doktorskiej.
W rozdziale piątym przedstawiono projekt rozbudowy systemu odwzorowań obiektoworelacyjnych Hibernate o możliwość wykonania zapytań rekurencyjnych w tym systemie.
Założono więc, że ORM Hibernate współpracuje z systemem zarządzania bazą danych, który
nie realizuje rekurencyjnych zapytań języka SQL, natomiast w tabelach relacyjnej bazy
danych są przechowywane dane o strukturze hierarchicznej lub dane grafowe. Rozpatrzono
trzy metody realizacji zapytań rekurencyjnych: iterację bezpośrednią, rozwinięcie wszerz
i rozwinięcie w głąb. Autorka zaimplementowała wszystkie trzy metody dla systemu
Hibernate współpracującego z bazą danych MySQL i przeprowadziła testy porównujące te
metody dla różnej liczby rekordów tabeli z danymi hierarchicznymi i różnej liczby poziomów
zagłębienia rekursji.
W szóstym rozdziale rozpatrzono możliwość przyspieszenia wykonywania zapytań rekurencyjnych poprzez wykorzystanie danych redundantnych, gromadzonych (zmaterializowanych)
w bazie danych. Rozpatrzono dwa warianty przechowywania danych redundantnych:
w dodatkowo utworzonej tabeli lub w dodatkowych kolumnach utworzonych w tabeli podstawowej, zawierającej dane o strukturze hierarchicznej. Dla każdego wariantu przedstawiono
dwie metody wykorzystania danych redundantnych.
W pierwszym wariancie analizowano metodę ścieżek pełnych, w której są wyznaczane
i materializowane wszystkie ścieżki możliwe do utworzenia dla rozważanych danych hierarchicznych oraz metodę ścieżek logarytmicznych, w której nie przechowuje się wszystkich
węzłów na drodze od korzenia do każdego węzła, a jedynie te pary węzłów, których odległość
w hierarchii jest potęga dwójki. Metoda ścieżek pełnych jest znana z literatury, natomiast
autorska metoda ścieżek logarytmicznych pozwala zachować kompromis między wielkością
pomocniczej tabeli i kosztem jej budowy, a kosztem zadawania zapytań o połączenie węzłów
hierarchii.
Dla drugiego wariantu, wymagającego utworzenie dodatkowych kolumn, przedstawiono
metodę zbiorów zagnieżdżonych oraz metodę ścieżek zmaterializowanych (obie znane
z literatury). W pierwszej z tych metod do tabeli dodawane są dwie kolumny, do których są
wpisywane liczby informujące o lewostronnych i prawostronnych powiązaniach każdego
wiersza tabeli traktowanego jako węzeł struktury drzewiastej. W metodzie ścieżek zmaterializowanych do tabeli jest dodawana kolumna, w której w każdym wierszu umieszczana jest
lista węzłów od danego węzła do korzenia drzewa.
Analiza tekstu podrozdziału 6.2, w którym zaprezentowano wymienione wyżej metody, jest
bardzo uciążliwa. Opis metod, a zwłaszcza przykładów, jest niezwykle oszczędny.
W drugiej części rozdziału szóstego przedstawione zostały dwie grupy testów, którym
poddano metody zapewniające realizację zapytań rekurencyjnych. Celem pierwszej było
sprawdzenie, czy użycie danych redundantnych faktycznie skraca czas realizacji zapytań
rekurencyjnych. Porównano metodę ścieżek pełnych z metodą rozwijania zapytań wszerz.
W analizie wyników podkreślono, że ocena przydatności tych metod zależy od porównania
częstości wykonywania zapytań i modyfikacji danych zmieniających hierarchiczne
powiązania danych, a więc wymagających uaktualnienia tabeli zawierającej wszystkie ścieżki
w hierarchii. Celem drugiej grupy testów było porównanie wzajemne wszystkich czterech
metod korzystających z danych redundantnych, z uwzględnieniem narzutów czasowych jakie
wprowadzają operacje modyfikacji danych (wstawienie, usunięcie, aktualizacja), zmuszające
do aktualizacji danych redundantnych. Wskazano obszary, w których przeważają zalety
poszczególnych metod. Zwrócono uwagę, że zastosowanie metod wymagającego utworzenia
3
dodatkowych kolumn do tabel podstawowych (zawierających np. dane hierarchiczne) może
być nie do zaakceptowania w środowisku produkcyjnym bazy danych zawierającej te tabele.
W trzeciej części rozdziału szóstego zaproponowano funkcje kosztu dla obciążenia bazy
danych zapytaniami rekurencyjnymi i operacjami modyfikacji danych. Funkcje te opracowano dla wszystkich metod korzystających z danych redundantnych, na podstawie wyników
omówionych eksperymentów.
Ostatni, siódmy, rozdział pracy zawiera podsumowanie uzyskanych wyników. Zasygnalizowano też planowane w przyszłości zadania badawcze, które mają ułatwić praktyczne
wykorzystanie rezultatów pracy.
Do pracy dołączono cztery dodatki. W pierwszym zamieszczono wykaz tabel Uniwersyteckiego Systemów Obsługi Studiów zawierających dane hierarchiczne oraz listingi kilkunastu
wybranych zapytań rekurencyjnych tego systemu. Drugi dodatek zawiera skrypt z poleceniami SQL-a tworzącymi tabele testowej bazy danych. W trzecim dodatku zamieszczono teksty
procedur wypełniania i pielęgnacji danych redundantnych, wymaganych w metodach przedstawionych w rozdziale 6. Ostatni dodatek przedstawia wyniki dodatkowych testów dla
czterech metod korzystających z danych redundantnych, uwzględniające selektywność
zapytań. Kończąca rozprawę bibliografia zawiera wykaz 39 cytowanych w pracy źródeł.
3. Ocena pracy
Autorka wykazała się gruntowną wiedzą z zakresu narzędzi odwzorowań obiektoworelacyjnych, a także problemów realizacji zapytań rekurencyjnych w bazach danych.
Do ważniejszych rezultatów badawczych uzyskanych w rozprawie zaliczam:
 opracowanie interfejsu programistycznego rozszerzającego narzędzia odwzorowań
obiektowo-relacyjnych (na przykładzie systemu Hibernate) o możliwość kierowania
zapytań rekurencyjnych do systemów baz danych, które takie zapytania realizują;
 opracowanie i eksperymentalna analiza własności trzech metod wykonania z poziomu
narzędzi ORM zapytań rekurencyjnych do systemów baz danych, które nie realizują
rekurencyjnych zapytań języka SQL;
 opracowanie i szczegółowa analiza czterech metod wykorzystania danych redundantnych do przyspieszenia wykonania na poziomie narzędzi ORM zapytań
rekurencyjnych do systemów baz danych nie wspierających takich zapytań.
W powyższych punktach pierwiastki badawcze najwyraźniej zarysowane są w temacie
trzecim, gdzie przedstawiono m.in. autorską metodę ścieżek logarytmicznych. W pozostałych
przewagę mają problemy programistyczne, swą złożonością wykraczające jednak poza
poziom zadań inżynierskich.
Doceniam eksperymentalną część pracy, która pozwoliła sprawdzić poprawność i ocenić
jakość proponowanych metod. Realizacja tej części daje podstawę do pozytywnej oceny
warsztatu programistycznego i doświadczenia Autorki pracy.
Problemy rozwiązane w ocenianej pracy nie należą wprawdzie do tych, które otwierają nowe
kierunki badawcze, ale stwarzają one podstawy do użytecznego rozszerzenia funkcjonalności
narzędzi ORM. Należy przy tym zauważyć, że narzędzia ORM zajmują ważne miejsce
w zbiorze narzędzi i środowisk programistycznych decydujących o łatwości tworzenia
i wydajności systemów informatycznych korzystających z baz danych.
Reasumując, uważam że cel rozprawy został osiągnięty.
4
Ponadto można też podkreślić, że rezultaty badań przedstawione w pracy były wcześniej
publikowane w sześciu pracach ze współudziałem autorki rozprawy, w tym w trzech
publikacjach indeksowanych przez Web of Science. Prace te były również prezentowane na
kilku konferencjach międzynarodowych. Wyniki te zostały więc w jakimś stopniu
zweryfikowane w środowisku naukowym. Wszystkie te publikacje mają jednak kilku autorów
i brak mi danych, aby szczegółowo ocenić wkład w te prace autorki rozprawy. Natomiast
należy zauważyć, że w czterech publikacjach jej nazwisko znalazło się na pierwszym miejscu
na liście autorów.
4. Uwagi do pracy
W ramach uwag kieruję do Autorki następujące pytanie:
Czy można byłoby rozważyć wbudowanie zapytania rekurencyjnego do perspektywy
definiowanej po stronie bazy danych? Jak wtedy zmieniłoby to problem wykonywania
zapytań rekurencyjnych z poziomu warstwy ORM?
Strona redakcyjna pracy budzi szereg wątpliwości, bądź nawet zastrzeżeń. Dałem im wyraz
w punkcie 2 tej recenzji w trakcie omawiania zakresu rozprawy. Lektura teksu pracy nasunęła
mi jeszcze kilka uwag:
1) Str. 37: W tytule tablicy 4.2 powinny się chyba pojawić „dane grafowe”?.
2) Str. 46: Rysunek 4.3, zwłaszcza w wersji czarno-białej, jest praktycznie nieczytelny.
3) Str. 46 i 47: Zamieszczone w tablicach 4.3 - 4.5 określenie „Kod natywny Hibernate”
wymaga bardziej dokładnego objaśnienia.
4) W pracy brak wykazu używanych skrótów, który zwykle ułatwia analizę tekstu.
5) Tytuły niektórych rozdziałów lub podrozdziałów niewiele mówią, np. „2 Podstawowe
informacje”, „4.4 Analiza” (podobnie 5.4 i 6.4),
Przedstawione uwagi nie wpływają istotnie na moją merytoryczną ocenę wyników rozprawy.
5. Wniosek końcowy
Podsumowując stwierdzam, że w recenzowanej rozprawie został sformułowany, a następnie
poprawnie rozwiązany problem naukowy dotyczący rozszerzenia funkcjonalności narzędzi
warstwy odwzorowań obiektowo-relacyjnych o możliwość wykonywania zapytań rekurencyjnych do baz danych.
Autorka wykazała się gruntowną wiedzą w zakresie narzędzi odwzorowań obiektoworelacyjnych oraz realizacji zapytań rekurencyjnych w bazach danych, a także umiejętnościami
i doświadczeniem praktycznym, udokumentowanymi implementacją opracowanych metod
i eksperymentalną weryfikacją opracowanej koncepcji.
Stwierdzam, że oceniana praca spełnia wymagania stawiane rozprawom doktorskim
przez obowiązujące przepisy. Wnoszę o dopuszczenie Pani mgr Aleksandry Boniewicz
do dalszych etapów przewodu doktorskiego.
5