Spis treści:
Rozdział I. Część teoretyczna
1. Wprowadzenie 4
2. Podejście stosowe SBA do baz danych 6
2.1 Obiekt 7
2.1.1 Tożsamość obiektu, identyfikator obiektu 8
2.1.2 Nazwa obiektu 9
2.1.3 Stan obiektu, atrybuty obiektu 9
2.2 Metody związane z obiektem 10
2.3 Obiekt złożony 11
2.4 Relatywizm między obiektami 12
2.5 Powiązania między obiektami 13
2.6 Język SBQL (ang. Stack Based Query Language) 15
2.6.1 Założenia składniowe języka SBQL 15
2.6.2 Nazwy, zakresy, wiązanie 16
2.6.3 Operacyjna semantyka zapytań i programów 17
2.7 Abstrakcyjny model składu obiektów w SBQL 18
2.8 Modele M0, M1, M2 i M3 składu obiektów 19
2.8.1 Model M0 23
2.8.2 Modele M1,M2, M3 26
2.9 Składnia języka SBQL (ang. Stack Based Query Language) 27
2.10 Stos rezultatów QRES (ang. Query REsult Stack) 30
2.11 Architektura mechanizmu przetwarzania zapytań i optymalizacji 32
2.12 Operatory algebraiczne 34
2.12.1 Typowe operatory algebraiczne 34
2.12.2 Koercje 35
2.12.3 Operatory algebraiczne na strukturach i kolekcjach 36
2.12.4 Operator if 37
2.13 Operatory nie-algebraiczne 37
2.14 Podsumowanie 38
3. Metody optymalizacji zapytań w SBQL 39
3.1 Metoda organizacji i udostępniania danych 41
3.2 Metoda niezależnych pod zapytań 41
3.2.1 Analiza metody 42
3.2.2 Architektura optymalizatora 44
3.2.3 Drzewo syntaktyczne 46
3.3 Wykorzystanie rozdzielności operatorów 48
3.4 Optymalizacja za pomocą indeksów 52
3.4.1 Indeksy zakresowe 55
3.4.2 Wybór indeksu do optymalizacji 56
3.5 Usuwanie martwych pod zapytań 57
3.6 Kolejność wykorzystania metod optymalizacyjnych 62
Rozdział II. Część praktyczna
4. System EGOVBUS jako infrastruktura dla ODRA 65
4.1 Opis systemu eGgovBUS. Advanced eGovernment Information Services Bus 65
4.2 Opis modułu testowego 67
5. Zaimplementowane metody optymalizacyjne w systemie ODRA 69
5.1 Środowisko testowe 74
5.2 Optymalizacja poprzez metodę niezależnych pod zapytań 74
5.3 Optymalizacja za pomocą indeksów 76
5.4 Optymalizacja wykorzystująca usuwanie martwych pod zapytań 81
5.5 Wnioski z przeprowadzonych testów 85
6. Podsumowanie 87
7. Spis rysunków, tabel i wykresów 89
8. Bibliografia 91
9. Załączniki 92
9.1 Skrypt createM0.2.cli 92
9.2 Płyta DVD – cyfrowa wersja pracy
1. Wprowadzenie
Każda istniejąca już baza danych lub ta, która powstanie, służy do prze-chowywania, wprowadzonych danych w systemie informatycznym oraz do za-rządzania nimi poprzez System Zarządzania Bazą Danych (SZBD), (ang. Data Base Menagment System, DBMS). Najczęściej są to bazy w architekturze klient-serwer.
Jest to bardzo wygodny sposób przechowywania, dostępu i operowania na zbiorach danych od bardzo małych, kilka rekordów w jednej tabeli, do baz danych zawierających setki tabel i miliony rekordów. W większości baz danych zazwyczaj dopisywane są nowe dane, natomiast operacji usuwania danych jest bardzo niewiele. Dlatego w pewnym momencie, serwer bazodanowy jest mocno obciążony lub brakuje miejsca na dysku. Z tego też względu na odpowiednio zaprojektowanych bazach danych przeprowadzane są operacje optymalizacji, tak aby serwer bazodanowy był najmniej obciążony w czasie pracy oraz aby dane nie zajmowały aż tyle cennego miejsca.
Optymalizacja polega na zwiększeniu wydajności bazy danych, a głównie na skróceniu czasu oczekiwania na wynik zadanego zapytania do tej bazy. Optymalizację zapytań zostawiono w całości specjalnemu modułowi oprogra-mowania SZBD, tzw. optymalizatorowi zapytań (ang. query optimizer). Dodat-kowo zakładano, że w razie zbyt małej wydajności optymalizatora, programista może zastąpić zapytanie do bazy przez niskopoziomowy kod, napisany w języku niskiego poziomu (ang. low-level), przez co wydajność może być dowolnie po-prawiona. Jednak z czasem programiści i producenci zrezygnowali z tego spo-sobu optymalizacji, ponieważ miała swoje spore wady. W ograniczonym czasie, w którym potrzebne jest zapytanie, nie jest możliwe ogarnięcie i zrozumienie przez programistę wszystkich powiązań występujących w złożonym zapytaniu i w jego środowisku. W związku z tym nie jest w stanie ich efektywnie wykorzy-stać. Ręcznie zoptymalizowany kod, przez zastosowanie języka programowania niskiego poziomu, wpływa również niekorzystnie na czytelność kodu. Taki kod staję się też bardziej obszerny co w przyszłości powodowałoby problemy z jego poprawieniem.
Obecnie wykorzystuje się tzw. automatyczne optymalizatory. Korzystają one z gotowych algorytmów i dysponują pełną i aktualną wiedzą dotyczącą ak-tualnego stanu środowiska bazy danych. Są w stanie działać w sposób znacznie bardziej uniwersalny i skuteczny, nie zakłócając przy tym czytelności kodu zapy-tania. Nie zwiększają go również objętościowo co ma także wpływ na szybkość przetwarzania. Dużo wyższa efektywność automatycznych optymalizatorów za-pytań jest ograniczona przez złożoność i charakter tych zapytań oraz zakres stosowania algorytmów optymalizacyjnych. Ponieważ, niektóre proste zapyta-nia, mogą nie być zoptymalizowane ze względu na ich środowisko działania. Np.: zapytanie o pełny przegląd bardzo dużego zbioru obiektów.
Ponieważ ze względu na sposób przechowywania danych, bazy możemy podzielić na relacyjne i obiektowe. W tych dwóch architekturach jest wiele me-tod optymalizacyjnych, które działają na różne elementy.
W bazach relacyjnych metodami optymalizacyjnym na polepszenie wy-dajności bazy danych i przyśpieszenie ewaluacji zapytania są min: normalizacja. Polega ona na wyeliminowaniu redundantnych i powtarzających się danych. Pozwalająca na uniknięcie problemów związanych z wstawianiem, modyfikowa-niem i usuwaniem rekordów. Jest procesem rozkładu dużych tabel na mniejsze. Metody zastosowania indeksów, które pozwalają na szybkie odszukanie wyma-ganych danych, przez co zapytania będą się wykonywać znacznie szybciej. Optymalizacja poprzez modyfikowanie zapytań oraz stosowanie procedur i funk-cji. [2]
Tematem pracy jest „Optymalizacja obiektowych baz danych w systemie ODRA dla środowiska eGovBus”. Metody dla tej architektury bazy danych są opisane w części teoretycznej, a wyniki testów i wnioski z badań za-warte są w części praktycznej.
Opisane i przetestowane zostały metody, które bazują na modyfikacji za-pytań. Są to: metoda niezależnych pod zapytań, optymalizacja za pomocą in-deksów (ta metoda ma także charakter niskopoziomowy z uwagi na redundant-ne struktury indeksów zapisane w bazie), metoda usuwająca martwe pod zapy-tania.
Testy były przeprowadzane na wygenerowanej przykładowej bazie w prototypowym systemie ODRA (ang. Object Data Rapid fo Aplication), który jest silnikiem do wirtualizacji danych w rozproszonych środowiskach bazodano-wych.