pobierz plik referatu - BDAS

Transkrypt

pobierz plik referatu - BDAS
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Rozdział 17
w
Ocena wydajności narzedzi Object-Relational
Mappers na podstawie testu OO7
w
1 Wstęp
da
.b
w
Streszczenie. Na rynku istnieje wiele narzędzi ORM pozwalających na
utrwalanie obiektów klas języka Java bez utraty relacji między obiektami,
dziedziczenia, polimorfizmu albo kolekcji. Dla trzech wybranych narzędzi
(Castor, Hibernate, OJB) zaimplementowano test OO7– standardowy zestaw
eksperymentów do badania wydajności obiektowych baz danych. Dokonano
porównania przyjętego modelu danych z modelem testu OO7. Rozdział
prezentuje wyniki oraz wnioski z przeprowadzonych testów nawigacji.
pl
s.
Coraz więcej projektów informatycznych stosuje obiektowe języki programowania, takie
jak Java lub C# do budowy logiki biznesowej oraz relacyjne baz danych do
przechowywania obiektów. Między tymi elementami (pierwszym obiektowym i drugim
relacyjnym) istnieje różnica. Programiści radzą sobie z tym problemem w taki sposób, że
odwzorowują obiekty na tabele w relacyjnej bazie danych.
Obecnie znaleźć można wiele produktów umożliwiających operowanie na relacyjnych
bazach danych w sposób obiektowy. Do oceny wydajności architektury obiektoworelacyjnej wybrano dwa tego typu systemy: Castor - http://www.castor.org/status.html oraz
Hibernate - http://www.hibernate.org/4.html. Trzeci z testowanych systemów - Jakarta OJB
- http://db.apache.org/ojb/features.html jest zgodny ze standardem Java Data Object [2].
W pracy - ze względu na ograniczoną objętość rozdziału - opisano jedynie eksperymenty
dotyczące nawigacji. Wyniki z eksperymentów dotyczących zapytań oraz modyfikacji
opisane zostały w opracowaniu [3].
2 Test OO7 - struktura wewnętrzna bazy testowej
Pierwotnie test OO7 [1] został przygotowany z myślą o porównywaniu wydajności
aplikacji korzystających z obiektowych baz danych. Test ten został zaplanowany w taki
sposób, aby zasymulować pracę prawdziwego systemu typu CASE. Obejmuje on wiele
Dariusz Król: Politechnika Wrocławska, Instytut Informatyki Stosowanej,
Wybrzeże Wyspiańskiego 27, 50-370 Wrocław, Polska
email: [email protected]
Bartłomiej Knabel: LUKAS Bank SA, pl. Orląt Lwowskich 1, 53-605 Wrocław, Polska
email: [email protected]
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
D. Król, B. Knabel
w
hierarchicznych powiązań między obiektami (1:1, 1:n, m:n). Dzięki wyodrębnieniu szeregu
parametrów, jest wysoce konfigurowalny.
Kluczowym elementem testu OO7 jest zestaw, czyli zbiór części złożonych. Każda taka
część stanowi odpowiednik procedury w aplikacji typu CASE (a więc jest to pewien
element projektowy) i posiada dwa atrybuty typu całkowitego: id (identyfikator) oraz data
(data utworzenia) oraz jeden typu znakowego: typ (typ elementu). Z każdą częścią złożoną
związany jest dokument. Składa się on z identyfikatora typu całkowitego oraz z dwóch
atrybutów typu znakowego: tytuł oraz tekst.
Atrybutami pojedynczej części atomowej (oprócz identyfikatora, typu, daty) są dwa pola
będące liczbami całkowitymi. Data generowana jest jako liczba losowa z przedziału od
1000 do 1999. Każda część atomowa związana jest z kilkoma innymi za pomocą
dwukierunkowego połączenia uzyskanego za pomocą obiektu połączenie. Liczba połączeń
jest ustanawiana poprzez parametr LiczbaPolaczenNaAtom. Parametr ten może przybierać
wartość 3, 6 lub 9 i jest on odpowiedzialny za tzw. wypełnienie bazy. Połączenia wewnątrz
grafu generowane są w sposób losowy, jednak algorytm dba o to, aby każdej części
atomowej przypisać po jednym połączeniu w taki sposób, aby stanowiły one pierścień.
Struktura wewnętrzna testu OO7 wprowadza pojęcie zestawu podstawowego, który
zawiera części złożone, co zostało pokazane na rys. 1. Istnieje również, składający się z
zestawów podstawowych, zestaw złożony. Nadrzędnym elementem tej hierarchii jest klasa
moduł. Dzięki takiemu porządkowi baza jest konfigurowalna i to na wielu poziomach.
Przykładowo, moduły mogą symulować pracę kilku użytkowników. Z modułem skojarzona
jest klasa manual, która jest wykorzystywany do operacji na dużych i nieskomplikowanych
obiektach. Ponadto moduł przechowuje indeks korzenia hierarchii zestawów. Każdy zestaw
posiada identyfikator, datę typu całkowitego oraz pole typ typu znakowego. Zestaw złożony
może być połączony identyfikatorem z zestawem podstawowym (niekoniecznie jednym), a
zestaw podstawowy z częścią złożoną (jedną lub więcej).
da
.b
w
w
3 Porównanie przyjętego modelu danych z modelem testu OO7
pl
s.
Jak już wcześniej wspomniano, model danych testu OO7 został zaprojektowany z myślą o
symulacji pracy aplikacji typu CASE. Jednak z powodu parametryzacji, może on
charakteryzować dowolną aplikację opierającą się na obiektowej bazie danych. W
proponowanym rozwiązaniu przyjęto pewien model klas oraz dziedziczenia między nimi.
Abstrakcyjną klasą bazową jest element projektowy. Zawiera ona (oprócz
identyfikatora) atrybuty typ oraz data, a w modelu istnieje aż pięć klas rozszerzających tą
klasę. Są to: moduł, zestaw złożony, zestaw podstawowy, część złożona oraz część atomowa.
Pozostałe klasy, takie jak manual, dokument i połączenie nie są związane z żadną inna
klasą. Na szczycie hierarchii znajduje się moduł, który posiada wskaźnik do manuala.
Kolejnym poziomem jest drzewo składające się z zestawów złożonych oraz podstawowych.
168
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Ocena wydajności narzedzi Object-Relational Mappers na podstawie testu OO7
1
-glownyZlozony
Modul
-modul
*
1
-manual
1
Manual
-modul
*
ZestawZlozony
*
-zestawZlozony
-ZlozonyNadrzedny
1
-zestawyZlozone
1
*
ZestawPodstawowy
-ZestawyZlozone
-zestawyPodstawoweDzielace
w
*
-zestawyPodstawoweNieDzielace
-czesciZlozoneNieDzielone
CzescZlozona
*
-czesciZlozoneDzielone
w
*
Rys. 1. Ogólny diagram UML dla modelu danych testu OO7
w
Każdy zestaw podstawowy łączy się z wieloma częściami złożonymi relacją m:n.
Pierwotna wersja testu OO7 przewidywała dwa rodzaje takich powiązań: pierwszy typ
„prywatny” dla jednego modułu, drugi „współdzielony” między modułami. Ponieważ
implementacja testu ograniczała się do jednego modułu, w toku dalszych prac
zrezygnowano z definiowania różnych typów powiązań.
1
da
.b
CzescZlozona
-czescZlozona
1
1
-dokument
1
*
-czescZlozona
-czesciAtomowe
Dokument
CzescAtomowa
1
-glownaAtomowa
*
-zAtomowej
-polaczenieDo
*
*
*
-doAtomowej
-polaczenieZ
Polaczenie
pl
s.
Rys. 2. Szczegółowy diagram UML dla części złożonej
Każda część złożona posiada powiązanie 1:1 z dokumentem oraz z częścią atomową.
Części atomowe powiązane są między sobą za pomocą obiektu połączenie. Każda część
atomowa może być powiązana z innymi na takich samych zasadach, jak to było opisane
wcześniej. Powiązane połączeniami części atomowe należą zawsze do tej samej części
złożonej.
Podsumowując, wprowadzono następujące różnice w stosunku do modelu
zaproponowanego przez autorów testu OO7 [1]:
− implementacja nie zawiera abstrakcyjnej klasy zestaw,
− data jest typu java.util.Date, zamiast Integer,
− zamiast tablicy znaków używano typu java.lang.String,
− używano standardowych kolekcji Javy (np. ArrayList).
Większość z wprowadzonych zmian związana jest ze zmianą języka programowania na
język Java.
169
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
D. Król, B. Knabel
4 Opis eksperymentów
Eksperymenty zaimplementowano w środowisku Eclipse 3.1 z wykorzystaniem JRE w
wersji 1.5. Serwer aplikacyjny stanowił Apache Tomcat w wersji 5.0.27. Zarówno badania,
jak i implementacja prowadzone były w systemie Windows XP. Do testów wykorzystano
systemy mySQL 4.0.17, Castor 0.9.6, Hibernate 3.0 oraz OJB 1.0.3.
Podstawowe parametry testów zostały przedstawione w tabelach 1 i 2.
w
Tabela 1. Opis parametrów testu
Opis
LiczbaCzANaCzZ
Liczba części atomowych przypadająca na część złożoną.
LiczbaPolaczenNaAtom
DlugoscDokumentu
Liczba połączeń dwukierunkowych z jednej części
atomowej.
Długość atrybutu tekst obiektu Dokument.
DlugoscManuala
Długość atrybutu tekst obiektu Manual.
LiczbaCzZłozNaModul
Liczba części złożonych znajdujących się w module.
LiczbazestWZestZl
Liczba zestawów w zestawie złożonym.
LiczbaPoziomow
Liczba poziomów w hierarchii zestawów.
da
.b
w
w
Nazwa parametru
LiczbaCzZWZestPdst
Liczba części złożonych w zestawie podstawowym.
LiczbaModulow
Liczba modułów.
W związku z tym, że dla daty używano typu java.util.Date, należało wprowadzić nowe
zakresy generowanych wartości (rys. 3).
Częśći złożone historyczne
Częśći złożone aktualne
Zestawy podstawowe
1-1998
1-2000
1-2001
1-2002
1-2003
1-2004
1-2005
2005-12-31
pl
s.
1997 -01-01
1-1999
Rys. 3. Graficzne przedstawienie wieku części złożonych oraz zestawów podstawowych
Przyjęto następujące oznaczenia:
− M3, M6 i M9 - małe bazy zawierające odpowiednio 58 tys. obiektów, 88 tys.
obiektów i 118 tys. obiektów;
− D3, D6 i D9 - duże bazy zawierające odpowiednio 508 tys. obiektów, 808 tys.
obiektów i 1 mln 108 tys. obiektów.
Tabela 2. Dobór parametrów używanych podczas generowania danych
Nazwa parametru
M3
M6
M9
D3
D6
D9
LiczbaCzANaCzZ
20
20
20
200
200
200
LiczbaPolaczenNaAtom
3
6
9
3
6
9
DlugoscDokumentu
2000
2000
2000
20 000
20 000
20 000
170
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Ocena wydajności narzedzi Object-Relational Mappers na podstawie testu OO7
100000
100000
100000
1000000 1000000 1000000
LiczbaCzZlozNaModul
500
500
500
500
500
500
LiczbaCzestWZestZl
3
3
3
3
3
3
LiczbaPoziomow
7
7
7
7
7
7
LiczbaCzZWZestPdst
3
3
3
3
3
3
LiczbaModulow
1
1
1
1
1
1
w
DlugoscManuala
W kolejnych punktach opracowania przeanalizowano mechanizmy nawigacji zgodnie ze
specyfikacją testu OO7.
w
4.1 Nawigacja (1). Raw traversal speed
w
Nawigacja (1) rozpoczyna się od wywołania metody nawigacja() dla modułu. Dzięki
rekurencyjnej nawigacji zestawów złożonych, zgodnie z hierarchią zestawów, odwiedzane
zostają wszystkie jego zestawy złożone, a następnie podstawowe. Dla każdego
odwiedzonego zestawu podstawowego następuje odwołanie do wszystkich prywatnych
części złożonych i związanych części atomowych (metoda nawigacja()).
złożo
na
Zestaw
złożony
nawigacja()
Ze s
taw
y po
d sta
wo w
e
Zestaw
podstawowy
Czę
ś
d zie ći nie
lon
e
nawigacja()
Głó
wn
aa
nawigacja()
tom
ow
a
Część
atomowa
Połączenie
Po
la c
zen
ieD
o
Część złożona
Po
łac
ze
n ie
Z
nawigacja()
Zestawy
złożone
da
.b
Głów
na
Moduł
nawigacja()
{
nicNieRob();
}
Rys. 4. Schemat nawigacji (1)
pl
s.
Wszystkie odwiedzane części atomowe zostają zliczone, a dla każdej z nich wywoływana
zostaje pusta metoda nicNieRob(). Fakt, że metoda ta nie wykonuje żadnych obliczeń, jest
istotny dla nawigacji (1). Dzięki temu czas trwania eksperymentu pozwala określić
szybkość przeszukiwania w głąb.
czas [s]
400
300
200
100
0
M3
Castor
gorący
zimny
M6
M9
Hibernate
gorący
zimny
D3
D6
D9
OJB
gorący
zimny
Rys. 5. Wyniki nawigacji (1)
171
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
D. Król, B. Knabel
w
Opisany eksperyment wykazał znaczne różnice między poszczególnymi narzędziami
ORM. System OJB przy zimnym, czyli pustym buforze dla najmniejszej bazy (M3)
potrzebował aż 157 [s] przy 38 [s] dla Hibernate. Podobnie dla większych baz testowych –
najgorzej radził sobie OJB, Castor okazał się być niewiele lepszy. W przypadku dużych baz
danych, poradził sobie tylko Hibernate.
W systemie OJB najlepiej działa bufor. Czasy uzyskiwane przy rozgrzanym buforze nie
przekraczają jednej sekundy, co jest wynikiem lepszym od zimnego startu o ponad 200%.
Hibernate przy gorącym starcie jest lepszy o około 10% dla małych baz – dla dużych
różnica jest prawie niezauważalna. Najmniej z pamięci podręcznej potrafi korzystać Castor,
który tylko dla najmniejszej bazy poprawia się po pierwszej iteracji.
Nawigacja (1) przechodzi przez wszystkie poziomy hierarchii obiektów testu OO7 i
mówi o szybkości dostępu do metod „zanurzonych” najgłębiej, bo zaimplementowanych
dla części atomowej. Przeprowadzony eksperyment dowodzi, że narzędzia ORM takiego
obiektowego zadania nie potrafią wykonać szybko. Testy wykonywane były na szybkim
komputerze, a trwały nawet 400 [s]. Jedynie system OJB na gorącym buforze działał
stosunkowo szybko.
w
w
4.2 Nawigacja (2). Traversal with field updates
nawigacja()
Głów
na
złożo
na
Zestaw
złożony
nawigacja()
Zwstawy
złożone
Zes
taw
y po
d sta
wo w
e
Zestaw
podstawowy
Czę
ś
dzie ći nie
lo n
e
nawigacja()
Głó
wn
aa
nawigacja()
tom
ow
a
Część
atomowa
Połączenie
Po
la c
zen
ieD
o
Część złożona
Po
łac
ze
n ie
Z
Moduł
da
.b
Nawigacja (2) w sposobie poruszania się po obiektach nie różni się od nawigacji (1).
Różnica polega na tym, że dla części atomowej zamiast metody pustej, zostaje wywołana
metoda zamienXY(), która dokonuje zamiany wartości nieindeksowanych atrybutów.
nawigacja()
{
pl
s.
wariant B - 1x
wariant C - 4x
zamienXY();
}
Część
atomowa
wariant A - 1x
nawigacja()
{
zamienXY();
}
Rys. 6. Schemat nawigacji (2)
Nawigacja (2) występuje w trzech wariantach: metoda zamienXY() wywoływana jest tylko
dla jednej części atomowej przypadającej na część złożoną, metoda zamienXY()
uruchamiana jest dla wszystkich części atomowych przypadających na część złożoną,
metoda zamienXY() uruchamiana jest cztery razy dla wszystkich części atomowych
przypadających na część złożoną.
172
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Ocena wydajności narzedzi Object-Relational Mappers na podstawie testu OO7
czas [s]
300
250
200
150
100
50
0
M3
M6
w
Castor
gorący
zimny
M9
D3
Hibernate
gorący
zimny
D6
D9
OJB
gorący
zimny
Rys. 7. Wyniki nawigacji (2a)
w
da
.b
w
Nawigacja (2a) potwierdza wniosek z nawigacji (1) wskazujący na niewielką rolę pamięci
podręcznej w systemach Castor i Hibernate. Po raz kolejny start z gorącym buforem
niewiele przyspieszył wykonanie operacji. Pod tym względem najlepszy jest system OJB.
Nawigacja (1) nie dokonywała żadnych zmian, co powodowało, że na gorącym buforze
OJB działało błyskawicznie. W przypadku aktualizacji jednej części atomowej czas
przebiegu eksperymentu w porównaniu z nawigacją (1) na gorącym buforze wzrósł z 0,1 do
7 [s].
Porównując wyniki nawigacji (1) z nawigacją (2a) – rys. 5 i rys. 7 - można zauważyć, że
są one bardzo do siebie zbliżone, a w niektórych przypadkach różnice między nimi są
niezauważalne.
czas [s]
400
300
200
100
0
M3
Castor
gorący
zimny
M9
Hibernate
gorący
zimny
D3
D6
D9
OJB
gorący
zimny
pl
s.
Rys. 8. Wyniki nawigacji (2b)
M6
Nawigacja (2b) dokonuje o wiele więcej aktualizacji niż poprzedni eksperyment.
Aktualizowana jest każda z części atomowych. Czasy uzyskane na zimnym buforze, są
zbliżone do wyników nawigacji (2a). Ciekawe wnioski można wysunąć obserwując wyniki
tego doświadczenia dokonane z gorącą - pełną pamięcią podręczną. Okazuje się, że
systemowi Castor sprawia trudność dokonywanie wielu aktualizacji. Czasy z gorącym
startem są gorsze niż z pustym buforem. Tendencja taka jest tym większa, im większa baza.
Potwierdza to wcześniejsze obserwacje, w myśl, których wewnętrzne struktury danych
dobrane są w sposób nieoptymalny. Większa ilość danych znajdująca się w pamięci
podręcznej powoduje wolniejsze przetwarzanie.
Wyraźnie więcej czasu potrzebuje OJB, gdy posiada już pewną ilość danych w buforze.
Jedynie dla systemu Hibernate szybkość nawigacji (2b) pozostaje podobna do tej z
nawigacji (2a).
173
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
D. Król, B. Knabel
czas
700 [s]
600
500
400
300
200
w
100
0
M3
M6
Castor
gorący
zimny
M9
D3
D6
Hibernate
gorący
zimny
D9
OJB
gorący
zimny
w
Rys. 9. Wyniki nawigacji (2c)
da
.b
w
Wyniki nawigacji (2c) pokazują, że systemy Hibernate i Castor nie korzystają z bufora. O
wiele gorzej prezentuje się OJB, ponieważ jest on ponad 2 razy wolniejszy od pozostałych.
Sytuacja taka ma miejsce zarówno dla gorącego, jak i dla zimnego bufora. Takie
zachowanie OJB może być zdeterminowane nieefektywnymi strukturami danych w
buforze, albo dokonywaniem wielokrotnej fizycznej aktualizacji w bazie danych.
4.3 Nawigacja (3). Traversal with indexed field updates
Nawigacja (3), podobnie jak nawigacja (2), mierzy szybkość aktualizacji pól w części
atomowej. Tym razem jednak dotyczy ona pola data, które jest w bazie danych polem
indeksowanym. Wywoływana metoda zmienDate() działa w taki sposób, że datę parzystą
zwiększa, natomiast datę nieparzystą zmniejsza o jeden dzień. Podobnie jak dla nawigacji
(2), zwracana jest liczba dokonanych aktualizacji.
nawigacja()
Głów
na
złożo
na
Zestaw
złożony
Ze s
taw
y po
d sta
wow
e
Zestaw
podstawowy
Czę
ś
d zie ći nie
lo n
e
nawigacja()
pl
s.
nawigacja()
Zestawy
złożone
wariant B - 1x
wariant C - 4x
tom
ow
a
Część
atomowa
nawigacja()
{
zamienDate();
}
Część
atomowa
wariant A - 1x
nawigacja()
{
zamienDate();
}
Rys. 10. Schemat nawigacji (3)
174
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Połączenie
ieD
o
nawigacja()
Głó
wn
aa
Po
la c
zen
Część złożona
Po
łac
ze
n ie
Z
Moduł
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
Ocena wydajności narzedzi Object-Relational Mappers na podstawie testu OO7
czas [s]
300
200
100
0
M3
M6
M9
w
Castor
gorący
zimny
D3
Hibernate
gorący
zimny
D6
D9
OJB
gorący
zimny
Rys. 11. Wyniki nawigacji (3a)
w
Nawigacja (3a) zachowuje się bardzo podobnie jak nawigacja (2a), choć wyraźnie widać,
że różnią się skalą. Wykresy przedstawione dla nawigacji (3) dochodzą w skrajnym
przypadku do 700 [s], przy niecałych 500 [s] dla nawigacji (2).
w
czas [s]
400
300
da
.b
200
100
0
M3
M6
M9
Castor
gorący
i
D3
Hibernate
gorący
zimny
D6
D9
OJB
gorący
zimny
Rys. 12. Wyniki nawigacji (3b)
pl
s.
Nawigacja (3b) potwierdza wnioski dotyczące nawigacji (2a) oraz (3a). Po raz kolejny daje
się zaobserwować, że wyniki są bardzo zbliżone. Najbardziej wrażliwym systemem na
indeksowanie jest Castor, gdyż właśnie w jego przypadku czas wzrósł najbardziej. Jeśli
chodzi o OJB i Hibernate, to obserwowane różnice są nieznaczne.
czas [s]
700
600
500
400
300
200
100
0
M
3
Castor
gorący
i
M
6
M9
Hibernate
gorący
zimny
D3
D6
D9
OJB
gorący
zimny
Rys. 13. Wyniki nawigacji (3c)
175
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006
D. Król, B. Knabel
Nawigacja (3c) nasuwa nieco inne spostrzeżenia. Hibernate oraz OJB pozostały na
podobnym poziomie, tak jak to było dla nawigacji (3a) i (3b). Różnica działania Castora dla
nawigacji (3c) w porównaniu do nawigacji (2c) praktycznie jest niezauważalna.
5 Wnioski z przeprowadzonych badań
w
Literatura
1.
2.
3.
4.
da
.b
w
w
Przeprowadzone testy pokazały, że ten sam eksperyment może trwać różnie długo, w
zależności od wybranego narzędzia a różnice mogą wynosić nawet kilkadziesiąt sekund.
Świadczy to o tym, że kod SQL jest generowany w różny sposób.
W zdecydowanej większości eksperymentów pamięć podręczna działała na tyle źle, że
niejednokrotnie jej obecność nie odbijała się korzystnie na wynikach. Wyjątkiem było OJB,
w którym pamięć podręczna działała prawidłowo. Pozostałe narzędzia albo zbyt często
porównywały zawartość bufora ze stanem faktycznym w bazie danych, albo też zbyt rzadko
z niego korzystały.
Ważnym spostrzeżeniem jest fakt, że przeniesienie systemu z jednej relacyjnej bazy
danych na inną nie stanowi z reguły problemu. Wystarczy tylko dograć odpowiedni
sterownik oraz zmienić informacje w pliku konfiguracyjnym.
Implementacja testu okazała się być prosta jedynie z teoretycznego punktu widzenia.
Pierwsze próby uruchomienia każdego z wymienionych narzędzi kończyły się błędem.
Świadczy to o tym, że narzędzia ORM znajdują się jeszcze w początkowej fazie rozwoju.
pl
s.
Carey M.: The OO7 Benchmark. Computer Science Tech. Report, University of WisconsinMadison, 1994.
Knabel B.: Uniwersalny dostęp do baz danych w środowisku J2EE. Praca magisterska,
Politechnika Wrocławska, 2005.
Król D., Knabel B.: Wyszukiwanie danych w bazie danych na platformie J2EE. Prace Naukowe
Instytutu Informatyki Stosowanej Politechniki Wrocławskiej, Bazy Danych, Zeszyt 7, 2006.
Szpunar Z., Wróblewski A.: Rzutowanie modelu obiektowego do relacyjnego modelu danych.
Prace Naukowe Instytutu Informatyki Stosowanej Politechniki Wrocławskiej, Bazy Danych,
Zeszyt 6, 2005, 51-66.
176
(c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006