Krzysztof Stencel Obiektowe i półstrukturalne bazy danych



Podobne dokumenty
Spis tre±ci. 1 Wst p Zawarto± rozdziaªów Projekt LoXiM... 2

Wst p. 1.1 Zawarto± rozdziaªów

Spis treści. Przedmowa

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

Spis tre±ci. Przedmowa... Cz ± I

Zagadnienia programowania obiektowego

SBQL. język zapytań dla obiektowych baz danych. Kamil Adamczyk. Uniwersytet Warszawski 20.IV.2009

Java w 21 dni / Rogers Cadenhead. Gliwice, cop Spis treści. O autorze 11. Wprowadzenie 13 TYDZIEŃ I JĘZYK JAVA

Implementacja schematów i statycznej kontroli typów w systemie JLoXiM

Bazy danych. Joanna Grygiel

Analiza wydajno±ci serwera openldap

Obliczenia arytmetyczne. Konkatenacja pól. Aliasy kolumn. Aliasy tabel. Co dalej? Rozdział 4. Korzystanie z funkcji. Zastosowanie funkcji

Projekt ATENA - system wspomagaj cy zarz dzanie szkoª lub zespoªem szkóª przedlicealnych

Praca Dyplomowa Magisterska

Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH"

Przypomnienie najważniejszych pojęć z baz danych. Co to jest baza danych?

Podyplomowe Studium Informatyki w Bizniesie Wydział Matematyki i Informatyki, Uniwersytet Łódzki specjalność: Tworzenie aplikacji w środowisku Oracle

Wykład 0 Informacje Podstawowe

Modelowanie i Programowanie Obiektowe

ZMODYFIKOWANY Szczegółowy opis przedmiotu zamówienia

Aplikacje internetowe oparte na kluczowych technologiach Java Enterprise(Servlet,JSP,JDBC, )

Wzorce projektowe kreacyjne

Podstawa programowa kształcenia ogólnego informatyki w gimnazjum

Programowanie aplikacji biznesowych

Informacje wstępne Autor Zofia Kruczkiewicz Wzorce oprogramowania 4

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Bazy danych. Andrzej Łachwa, UJ, /15

1. Wprowadzenie do C/C++

Uniwersytet Łódzki Wydział Matematyki i Informatyki, Katedra Analizy Nieliniowej. Wstęp. Programowanie w Javie 2. mgr inż.

Konstruowanie Baz Danych

Korzy ci wynikaj ce ze standaryzacji procesów w organizacjach publicznych a zarz dzanie jako ci

poziom: Core wersja: 2.6 moduł: B : Wytwarzanie SYLLABUS

Specjalizacja magisterska Bazy danych

Rok akademicki: 2012/2013 Kod: ZIE s Punkty ECTS: 3. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

MiASI. Modelowanie systemów informatycznych. Piotr Fulma«ski. 18 stycznia Wydziaª Matematyki i Informatyki, Uniwersytet Šódzki, Polska

Jeśli chcesz łatwo i szybko opanować podstawy C++, sięgnij po tę książkę.

Alicja Marszałek Różne rodzaje baz danych

SQL SERVER 2012 i nie tylko:

Technologie internetowe Internet technologies Forma studiów: Stacjonarne Poziom kwalifikacji: I stopnia. Liczba godzin/tydzień: 2W, 2L

Program szkoleniowy Efektywni50+ Moduł III Standardy wymiany danych

Programowanie obiektowe

Numer obszaru: 13. Jak pracować z uczniem uzdolnionym informatycznie? Od grafiki i multimediów do poważnych algorytmów w środowisku Logomocja-Imagine

SZKOLENIE: Administrator baz danych. Cel szkolenia

JĘZYK UML JAKO NARZĘDZIE MODELOWANIA PROCESU PROJEKTOWO-KONSTRUKCYJNEGO

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2012/2013. Forma studiów: Niestacjonarne Kod kierunku: 11.

INFORMATYKA Pytania ogólne na egzamin dyplomowy

Temat : SBQL 1 obiektowy język zapytań.

Myśl w języku Python! : nauka programowania / Allen B. Downey. Gliwice, cop Spis treści

O autorze... 9 Wprowadzenie... 11

Dotacje na innowacje. Inwestujemy w waszą przyszłość.

SQL w 24 godziny / Ryan Stephens, Arie D. Jones, Ron Plew. Warszawa, cop Spis treści

1. Wprowadzenie do C/C++

Lekcja 9 - LICZBY LOSOWE, ZMIENNE

JADWIGA SKIMINA PUBLIKACJA NA TEMAT: NAUKA MS. WORD 2000 W KLASIE IV

edycja 14 opracowany zgodnie z Zarządzeniami Wewnętrznymi PWr nr 14/2012 i 15/2012 i 34/2012

Krakowska Akademia im. Andrzeja Frycza Modrzewskiego. Karta przedmiotu. obowiązuje studentów, którzy rozpoczęli studia w roku akademickim 2013/2014

Baza danych - Access. 2 Budowa bazy danych

Oracle11g: Wprowadzenie do SQL

Optymalizacja R dlaczego warto przesi ± si na Linuxa?

WSTĘP DO PROGRAMOWANIA

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W NOWYM SĄCZU SYLABUS PRZEDMIOTU. Obowiązuje od roku akademickiego: 2011/2012

Zmiany w Podstawie programowej przedmiotów informatycznych

INFORMATYKA dla gimnazjum Opis założonych osiągnięć ucznia klasy trzeciej

Programowanie w internecie nazwa przedmiotu SYLABUS A. Informacje ogólne

Podstawy modelowania w j zyku UML

Hurtownie danych - przegląd technologii

Informatyka, I stopień. Programowanie (PRO300.1)

Komputer i urządzenia z nim współpracujące

Rekurencyjne struktury danych

OGŁOSZENIE O ZAMÓWIENIU - usługi

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Metody numeryczne i statystyka dla in»ynierów

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja II

Wskazówki dotyczące przygotowania danych do wydruku suplementu

Podstawy programowania. Wprowadzenie

Wzorce projektowe strukturalne cz. 1

Tworzenie aplikacji mobilnych do monitoringu środowiska - nowa specjalność magisterska w języku angielskim (MADEM)

Rzut oka na zagadnienia zwi zane z projektowaniem list rozkazów

AKADEMIA MUZYCZNA IM. I.J. PADEREWSKIEGO W POZNANIU WYDZIAŁ INSTRUMENTALNY

Matematyka wykªad 1. Macierze (1) Andrzej Torój. 17 wrze±nia Wy»sza Szkoªa Zarz dzania i Prawa im. H. Chodkowskiej

JAO - J zyki, Automaty i Obliczenia - Wykªad 1. JAO - J zyki, Automaty i Obliczenia - Wykªad 1

Grupy pytań na egzamin magisterski na kierunku Informatyka (dla studentów niestacjonarnych studiów II stopnia)

mail: strona: konsultacje: na stronie (po wcześniejszym umówieniu drogą mailową)

STUDIA PODYPLOMOWE. ZAOCZNE PODYPLOMOWE STUDIA KWALIFIKACYJNE dla nauczycieli

W zadaniach na procenty wyró»niamy trzy typy czynno±ci: obliczanie, jakim procentem jednej liczby jest druga liczba,

PRZEWODNIK PO PRZEDMIOCIE

Algorytmy zwiazane z gramatykami bezkontekstowymi

Organizacja zajęć BAZY DANYCH II WYKŁAD 1. Plan wykładu. SZBD Oracle

Studia podyplomowe. : prof. dr hab. inż. Włodzimierz Bielecki wbielecki@wi.zut.edu.pl

Wydział Informtyki i Nauki o Materiałach Kierunek Informatyka. kod kierunku (dodaj kod przedmiotu)

Rozkład materiału do nauczania informatyki w liceum ogólnokształcącym Wersja I

Politechnika Krakowska im. Tadeusza Kościuszki. Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2013/2014

PROGRAM PRAKTYKI ZAWODOWEJ. Technikum Zawód: technik informatyk

Język Java i technologie Web - opis przedmiotu

PRZEWODNIK PO PRZEDMIOCIE

Numer obszaru: 8 E-learning w szkole - wykorzystanie platform edukacyjnych w pracy szkoły

YapS Plan testów. Šukasz Bieniasz-Krzywiec Dariusz Leniowski Jakub Š cki 29 maja 2007

Spis treci. Dzie 1. I Wprowadzenie (wersja 0911) II Dostp do danych biecych specyfikacja OPC Data Access (wersja 0911)

Transkrypt:

Krzysztof Stencel Obiektowe i półstrukturalne bazy danych

Spis tre±ci 1 Wst p..................................................... 1 1.1 Zawarto± rozdziaªów................................... 1 1.2 Projekt LoXiM........................................ 2 2 Strukturalne obiektowe bazy danych....................... 7 2.1 Relacyjny model danych................................ 7 2.1.1 Poj cia pierwotne.............................. 7 2.1.2 Schemat tabel/relacji i schemat relacyjnej bazy danych....................................... 8 2.1.3 Egzemplarz relacji i egzemplarz relacyjnej bazy danych....................................... 8 2.2 Obiektowy model danych............................... 9 2.2.1 Poj cia pierwotne.............................. 9 2.2.2 Warto±ci...................................... 10 2.2.3 Typy danych.................................. 11 2.2.4 Hierarchia typów danych........................ 12 2.2.5 Schemat struktury obiektowej bazy danych........ 13 2.2.6 Przykªad schematu obiektowej bazy danych....... 14 2.2.7 Egzemplarz obiektowej bazy danych.............. 14 2.2.8 Dziedziczenie struktury......................... 17 2.2.9 Warto±ci domy±lne............................. 18 2.2.10 Brak koniktów dziedziczenia wielokrotnego....... 19 2.2.11 Klasykacja wielokrotna i dynamiczna............ 20 2.3 Model zachowania...................................... 22 2.3.1 Sygnatury metod.............................. 22 2.3.2 Schemat zachowania............................ 22 2.3.3 Egzemplarz schematu zachowania................ 23 2.3.4 Problem dyspozycji............................ 24 2.4 Podsumowanie......................................... 25

X Spis tre±ci 3 Przegl d j zyków zapyta«obiektowych baz danych........ 27 3.1 NaszQL............................................... 27 3.2 Ahoj przygodo!........................................ 29 3.3 Zª czenie zale»ne...................................... 31 3.4 Agregacja bez GROUP BY.............................. 32 3.5 Wyra»enia ±cie»kowe................................... 33 3.6 Zmienne ±cie»kowe..................................... 35 3.7 Dane póªstrukturalne OEM............................. 37 3.8 Lorel i UnQL.......................................... 38 3.9 Dane XML............................................ 40 3.10 XML-QL............................................. 42 3.11 Transformacje XSLT................................... 46 3.12 Podsumowanie......................................... 47 4 Obiektowo-relacyjne bazy danych.......................... 49 4.1 Zalety typów obiektowych............................... 49 4.2 Elementy obiektowo±ci w SQL:1999...................... 50 4.3 Elementy obiektowo±ci w Oracle......................... 52 4.3.1 Kolekcje...................................... 52 4.3.2 Typy u»ytkownika............................. 53 4.3.3 Konstruktor................................... 54 4.3.4 Metody typu obiektowego....................... 58 4.3.5 Typ referencyjny............................... 61 4.3.6 Porównywanie warto±ci typów obiektowych........ 63 4.3.7 Perspektywy obiektowe......................... 64 4.4 Rozszerzony przykªad. Baza zamówie«.................... 66 5 Lorel - j zyk póªstrukturalnych zapyta«................... 73 5.1 Model danych......................................... 73 5.2 Podstawowe zaªo»enie j zyka............................ 74 5.3 Równo± w pi ciu smakach.............................. 76 5.4 Wspólne przedrostki ±cie»ek............................. 79 5.5 Wyra»enia ±cie»kowe................................... 83 5.6 Przykªad przykªadów................................... 85 5.7 Podsumowanie......................................... 86 6 Aparat wykonawczy j zyka Lorel.......................... 89 6.1 Przykªadowe dane...................................... 89 6.2 Wykonywanie zapyta«w LORE.......................... 90 6.3 Maszyna wirtualna aparatu wykonawczego LORE.......... 91 6.3.1 Scan......................................... 92 6.3.2 Join......................................... 92 6.3.3 Select........................................ 93 6.3.4 Aggr......................................... 94 6.3.5 Plan wykonania zapytania...................... 95

Spis tre±ci XI 6.4 Indeksy............................................... 97 6.4.1 V index....................................... 97 6.4.2 Lindex....................................... 98 6.4.3 Bindex....................................... 98 6.4.4 P index....................................... 99 6.4.5 T index....................................... 99 6.4.6 Plan wykonania zapytania z u»yciem indeksu...... 100 6.5 Zapytanie z wynikiem wielowymiarowym.................. 101 6.5.1 Konstrukcja wyniku zapytania................... 102 6.5.2 Analiza mo»liwych planów wykonania............ 103 6.6 Podsumowanie......................................... 107 7 DataGuide................................................. 109 7.1 Póªschemat danych i jego zastosowania................... 109 7.2 Póªschemat w formie DataGuide......................... 110 7.3 Algorytm konstrukcji silnego DataGuide.................. 114 7.4 Przyrostowa piel gnacja silnego DataGuide................ 117 7.5 Zastosowanie DataGuide w realizacji zapyta«.............. 121 7.6 Podsumowanie......................................... 122 8 J zyki zapyta«dla danych XML........................... 123 8.1 Przykªadowy dokument XML............................ 124 8.2 Przegl d j zyków...................................... 124 8.2.1 Lorel........................................ 125 8.2.2 XML-QL..................................... 126 8.2.3 XML-GL..................................... 127 8.2.4 XSLT........................................ 128 8.2.5 XQL......................................... 131 8.3 XPath................................................ 133 8.3.1 Krok lokalizacyjny............................. 133 8.3.2 Osie.......................................... 134 8.3.3 Predykaty..................................... 134 8.3.4 Zapis skrócony................................ 136 8.3.5 Przykªady..................................... 136 8.4 Podstawowe elementy XQuery........................... 137 8.4.1 Wyra»enia ±cie»kowe........................... 138 8.4.2 Konstruktor elementu.......................... 138 8.5 FLWOR.............................................. 139 8.6 Instrukcje warunkowe i kwantykatory................... 140 8.7 Funkcje i rekurencja.................................... 142 8.8 Kontrola poprawno±ci typów............................ 144 8.8.1 Dwa systemy typów............................ 144 8.8.2 Schemat przykªadowego dokumentu.............. 144 8.8.3 Badanie typu.................................. 147 8.8.4 Typ argumentu funkcji......................... 148

XII Spis tre±ci 8.8.5 Instrukcja wyboru dla typu..................... 149 8.8.6 Typy elementarne.............................. 151 8.9 Podsumowanie......................................... 152 8.10 Zadanie............................................... 152 9 Podej±cie stosowe do j zyków zapyta«..................... 155 9.1 Modele skªadu obiektów................................ 156 9.1.1 Dane póªstrukturalne (model M0)............... 156 9.1.2 Dane obiektowe, klasy (model M1).............. 157 9.1.3 Role dynamiczne(model M2).................... 159 9.1.4 Hermetyzacja (model M3)....................... 160 9.2 Stos ±rodowisk i wi zanie nazw.......................... 161 9.2.1 Stos ±rodowisk................................. 161 9.2.2 Wi zanie nazw................................ 161 9.2.3 Funkcja nested................................ 163 9.3 J zyk zapyta«sbql................................... 166 9.3.1 Skªadnia zapyta«.............................. 166 9.3.2 Stos wyników.................................. 167 9.3.3 Semantyka zapyta«............................ 168 9.3.4 Operatory algebraiczne......................... 168 9.3.5 Operatory niealgebraiczne....................... 169 9.3.6 Przykªadowe zapytania w SBQL................. 172 10 Póªmocna kontrola typów w j zykach zapyta«............. 175 10.1 Mocna kontrola typów.................................. 175 10.2 Przyczynkowo± istniej cych systemów typów............. 176 10.3 Przykªad niespójno±ci w systemie typów ODMG........... 178 10.4 Kolekcje.............................................. 179 10.5 Póªmocna kontrola typów............................... 181 10.6 Prosty czy wymy±lny system typów?..................... 181 10.7 Niezale»no± danych i schematy baz danych............... 182 10.8 ródªa zb dnej zªo»ono±ci............................... 184 10.9 Koncepcja systemu kontroli typów....................... 185 10.10 Zewn trzny system typów.............................. 187 10.10.1 Architektura trójwarstwowa.................... 188 10.10.2 Deklaracja obiektu............................ 190 10.10.3 Deklaracja podprogramu....................... 191 10.10.4 Typy nazwane................................ 191 10.10.5 Typy rozró»nione.............................. 193 10.10.6 Deklaracja klasy............................... 193 10.10.7 Deklaracja interfejsu........................... 196 10.10.8 Programista systemowy........................ 198 10.10.9 Administrator................................ 199 10.10.10 Programista administracyjny................... 201 10.10.11 Programista aplikacyjny........................ 203

Spis tre±ci XIII 10.10.12 Przykªadowa skªadnia zewn trznego systemu typów 205 10.11 Schemat bazy danych i metabaza........................ 206 10.11.1 Metabaza.................................... 207 10.11.2 Atrybuty wierzchoªków metabazy............... 209 10.11.3 Korzenie, przynale»no± do klas i dziedziczenie.... 210 10.11.4 Metabaza jako sªownik danych.................. 211 10.11.5 Role dynamiczne............................... 211 10.11.6 Hermetyzacja................................. 211 10.11.7 Podprogramy i ich parametry referencyjne........ 212 10.11.8 Perspektywy.................................. 214 10.12 Sygnatury............................................ 215 10.12.1 Denicja sygnatur............................. 215 10.12.2 Statyczna funkcja nested....................... 221 10.13 Tablice decyzyjne wyprowadzania typów.................. 222 10.13.1 Operatory arytmetyczne i napisowe.............. 223 10.13.2 Operatory porównania......................... 225 10.13.3 Operatory logiczne............................. 226 10.13.4 Generyczne operatory algebraiczne.............. 227 10.13.5 Generyczne operatory niealgebraiczne............ 231 10.13.6 Operator punktu staªego....................... 235 10.13.7 Podsumowanie................................. 236 10.14 Aparat statycznej kontroli typów........................ 236 10.14.1 Architektura aparatu kontroli typów............. 237 10.14.2 Procedura statycznej kontroli typów.............. 239 10.14.3 Modykacja drzewa skªadni zapytania........... 244 10.14.4 Wznowienie procesu kontroli typów po bª dzie.... 249 10.14.5 Sygnatury wariantowe i rozwidlenie procesu....... 252 10.14.6 Przykªadowa statyczna kontrola typów........... 253 10.14.7 Przykªad dla schematu danych z dziedziczeniem... 258 11 Strumieniony aparat wykonawczy JLoXiM................. 261 11.1 Motywacja............................................ 261 11.2 Zaªo»enia............................................. 263 11.3 Strumie«............................................. 263 11.3.1 Rekord kontrolny.............................. 264 11.3.2 Resultset..................................... 264 11.3.3 Dziedzina komunikacji.......................... 264 11.3.4 Relacja zgodno±ci rekordów kontrolnych........... 265 11.3.5 Uporz dkowanie strumienia..................... 266 11.4 Komponenty.......................................... 266 11.4.1 Store......................................... 267 11.4.2 Stamp........................................ 267 11.4.3 GetNested.................................... 268 11.4.4 RefMaterializer................................ 268 11.4.5 Merge........................................ 269

XIV Spis tre±ci 11.4.6 HighestDened................................ 270 11.4.7 Komponenty dla operatorów algebraicznych....... 270 11.4.8 BreakBag..................................... 270 11.4.9 MakeBag..................................... 271 11.4.10 Select........................................ 271 11.5 Konstrukcja sieci wykonawczej dla zapytania.............. 271 11.5.1 Statyczne wi zanie nazw i operatorów............ 272 11.5.2 Budowa planu sieci wykonawczej................. 273 11.6 Przykªady sieci........................................ 277 11.7 Optymalizacje sieci wykonawczej......................... 279 11.8 Realizacja............................................. 279 11.8.1 Implementacja strumieni........................ 280 11.8.2 Scalanie komponentów.......................... 280 11.8.3 Strumienie a pami wspóªdzielona............... 280 11.8.4 Minimalizacja ilo±ci danych odczytywanych ze skªadu........................................ 281 11.8.5 JLoXiM - platforma eksperymentalna............ 281 11.9 Podsumowanie......................................... 282 12 Uniwersalny model stanu obiektu.......................... 283 12.1 Relacyjna baza danych a obiekty C++................... 284 12.1.1 Niezgodno± modelu danych..................... 284 12.1.2 Niezgodno± czasu wi zania..................... 285 12.1.3 Niezgodno± czasu»ycia obiektów................ 286 12.2 Uniwersalny model stanu............................... 286 12.3 Model relacyjny....................................... 288 12.4 Model M0/AS0........................................ 290 12.5 Model danych XML................................... 292 12.6 Model obiektowy j zyka C++........................... 294 12.7 Model obiektowy j zyków Java,.NET oraz Python......... 295 12.8 Podsumowanie......................................... 297 13 Uniwersalny j zyk zapyta«................................. 299 13.1 Operatory j zyka UQL................................. 299 13.1.1 Zmiana nazwy................................. 300 13.1.2 Spªaszczanie................................... 300 13.1.3 Odwzorowanie................................. 300 13.1.4 Ewaluacja..................................... 300 13.1.5 Pobieranie k-tego podobiektu.................... 301 13.1.6 Filtrowanie.................................... 301 13.1.7 Zagnie»d»anie................................. 301 13.1.8 Klonowanie................................... 301 13.1.9 Produkt kartezja«ski........................... 302 13.1.10 Grupowanie................................... 302 13.1.11 Ró»nica....................................... 302

Spis tre±ci XV 13.1.12 Transpozycja.................................. 303 13.1.13 Zwijanie...................................... 303 13.2 Przykªady odwzorowa«zapyta«.......................... 304 13.3 Dalsze prace.......................................... 307 Literatura..................................................... 309 Indeks......................................................... 319

1 Wst p Burzliwy rozwój obiektowych baz danych miaª miejsce w latach dziewi dziesi tych XX wieku. W ostatnich latach XX wieku silnie rozwijaªa si te» koncepcja póªstrukturalnych baz danych. Obecnie nadal u»ywa si obu tych rodzajów baz danych. Chocia» s one dalej rozbudowywane, jednak zajmuj raczej nisze rynkowe i nie s ju» wiod cymi technologiami. Przez ostanie 10 lat prowadziªem wykªad monograczny o takich bazach danych, a tak»e prace badawcze nad rozwojem ich koncepcji. Niniejszy tom jest zbiorem materiaªów zebranych przeze mnie w tym okresie. Mo»na go podzieli na dwie cz ±ci. Pierwsza z nich to podr cznik do prowadzonego przeze mnie wykªadu monogracznego. Druga cz ± to zbiór wyników bada«naukowych. Niektóre z przedstawionych tu zagadnie«byªy przedmiotem wcze±niejszych publikacji [BS01, BS07, Ste06]. W niniejszej ksi»ce zebraªem je wszystkie, zaktualizowaªem, rozszerzyªem, a tak»e uzupeªniªem caªkiem nowym materiaªem dydaktycznym i naukowym. Wszystko stanowi jednolit monogra obiektowych i póªstrukturalnych baz danych. 1.1 Zawarto± rozdziaªów Rozdziaªy 2-9 skªadaj si na podr cznik do nauki przedmiotu Obiektowe i póªstrukturalne bazy danych. Rozdziaª 2 zawiera informacje o obiektowym strukturalnym modelu danych. Jego celem jest m.in. przekonanie czytelnika,»e nie tylko relacyjny, ale tak»e obiektowy model danych mo»na sformalizowa. W rozdziale 3 zaproponowaªem klasykacj j zyków zapyta«dla baz obiektowych o modelach opisanych w rozdz. 2 oraz wªasny pro±ciutki referencyjny j zyk zapyta«naszql. Oba te rozdziaªy s napisanym caªkowicie od nowa i uzupeªnionym materia- ªem z [BS07]. W rozdziale 4 przedstawiªem zagadnienia zwi zane z obiektoworelacyjnym modelem danych i metodami projektowania i programowania takich baz danych. Rozdziaª ten stanowi istotnie rozszerzenie materiaªu przedstawionego w [BS01].

2 1 Wst p Rozdziaªy 5-7 stanowi caªkowicie nowy materiaª po±wi cony bardzo ciekawemu przedsi wzi ciu budowy systemu zarz dzania bazami danych LORE i aparatu wykonawczego j zyka zapyta«lorel. Rozdziaª 5 to omówienie tego j zyka. W rozdziale 6 przedstawiªem architektur i zasady dziaªania aparatu wykonawczego LORE. Z kolei rozdziaª 7 to prezentacja koncepcji póªschematu w formie DataGuide. W rozdziale 8 omówiªem j zyki zapyta«dla danych XML, a w szczególno- ±ci najwa»niejszy z nich XQuery, który jest ju» standardem przemysªowym. Rozdziaª ten to rozwini cie i uzupeªnienie tre±ci przedstawionych w [BS07]. Rozdziaª 9, jako ostatni w cz ±ci dydaktycznej, stanowi prezentacj architektury stosowej zaproponowanej pod koniec XX wieku przez prof. Kazimierza Subiet. W czasie dziaªania grupy roboczej OMG, która miaªa wypracowa nowy standard dla obiektowych baz danych, uznano architektur stosow za idealny punkt wyj±ciowy do budowy tego standardu. Rozdziaª 9 jest uzupeªnieniem zagadnie«omówionych w [Ste06]. Rozdziaªy 10-13 to artykuªy naukowe zawieraj ce oryginalny wkªad w rozwój dziedziny baz danych. W rozdziale 10 zebraªem informacje o mojej autorskiej koncepcji póªmocnej kontroli typów pierwotnie opublikowanej w [Ste06, LSS06]. Rozdziaª 11 to oryginalna koncepcja strumieniowego aparatu wykonawczego SBQL. Pocz tkowe rozdziaªy ksi»ki zawieraj omówienie wielu ró»nych modeli danych. Rozdziaªy 12 i 13 to raport z próby zbudowania uniwersalnego modelu danych i uniwersalnego j zyka zapyta«. W szczególno±ci, uniwersalny model danych staª si podstaw do pewnych ogólnych wniosków na temat systemów odwzorowa«obiektowo-relacyjnych. 1.2 Projekt LoXiM W tym punkcie pragn opisa swoje do±wiadczenia z pewnego du»ego przedsi wzi cia programistycznego prowadzonego w ramach zaj ze studentami. Na pocz tku roku akademickiego 2005/6 rozpocz li±my budow systemu zarz - dzania baz danych zgodnie z architektur stosow (por. rozdz. 9). SBQL byª jego natywnym j zykiem zapyta«. Docelowo ów SZBD miaª obsªugiwa tak»e zapytania w innych j zykach zapyta«, takich jak SQL, OQL, Lorel i XQuery. Zapytania tych j zyków miaªy by odwzorowywane na SBQL, który odgrywaª rol asemblera. Budowanemu SZBD nadaªem nazw LoXiM, która to nazwa przegraªa w 2005 roku konkurs na miano nowej wersji systemu budowanego przez zespóª Kazimierza Subiety w PJWSTK. Zwyci sk w tamtym konkursie okazaªa si ODRA b d ca skrótem od Object Database for Rapid Application development [AHK + 08]. Nazwa LoXiM byªa wzorowana na nazwie legendarnego systemu LOQIS [Sub90a]. Sªowo LoXiM zawiera anagram skrótu XML, gdy» miaª to by system póªstrukturalny. Maªe literki o oraz i miaªy symbolizo-

1.2 Projekt LoXiM 3 wa obiektowo± i Internet, poniewa» w zamierzeniu system miaª by u»ywany w aplikacjach WWW. J zykiem implementacji LoXiM jest C++. Oczekiwaªem,»e studenci sami zorganizuj prace zgodnie z zasadami in»ynierii oprogramowania. Byli to przecie» studenci dwóch ostatnich lat studiów magisterskich 1. Studenci przyst pili do prac i z czasem powstaªy pierwsze zr by funkcjonalno±ci [Ole07]. Wkrótce system rozrósª si do ogromnych rozmiarów jak na przedsi wzi cie akademickie (ponad 100 000 wierszy kodu). Poszczególne fragmenty stawaªy si przedmiotem licznych prac magisterskich: optymalizacja zapyta«[sit07], klasy w modelu M1 [Kac07], podsystem dzienników [Bud07, Per10], interfejs programistyczny dla Javy [Ros07], aktualizowalne perspektywy [Gry08], narz dzia do monitorowania [Kla08], uniwersalny protokóª komunikacyjny [Tab08], póªmocna kontrola typów [Hum20], indeksy [Tur08], sterownik JDBC [Mic09], narz dzia do administracji zdalnej [Kos09] oraz interfejsy i schematy zewn trzne [D b09]. Powstaªa te» witryna przedsi wzi cia loxim.mimuw.edu.pl. Niestety, z czasem okazaªo si,»e budowa tego systemu przerosªa studentów. Jako± kodu okazaªa si zbyt niska. Dawaª si we znaki brak niezb dnych narz dzi i metodyk in»ynierii oprogramowania. Nadzieja,»e studenci informatyki sami spostrzeg ten brak, a mo»e nawet w por mu zaradz, okazaªa si pªonna. Wybór C++ jako j zyka programowania te» okazaª si niefortunny. LoXiM miaª ogromne wycieki pami ci. W ci gu kilku minut przetwarzania zapyta«potraª zgubi jeden gigabajt. Podj li±my próby naprawy tej sytuacji poprzez diagnozowanie i porz dkowanie [Dop09, Tim09] oraz refaktoryzacj aparatu wykonawczego [Šo±10]. Niestety, wysiªki te nie przyniosªy rezultatów. Owszem, ograniczono wycieki pami ci i zwi kszono stabilno±, jednak nie byªo mowy o doprowadzeniu LoXiM do jako±ci pozwalaj cej nawet na beta-testowanie. Przyczyn kªopotów byªo kilka. Po pierwsze, studenci nie byli w stanie narzuci sobie i kolegom najlepszych praktyk in»ynierii oprogramowania. Po drugie, okazaªo si,»e studenci nie znaj C++ oraz technik bezpiecznego pisania programów w tym j zyku. Po trzecie, brakowaªo ci gªo±ci studenci ko«czyli prace magisterskie i opuszczali zespóª na zawsze. W trakcie prac nad poprawianiem LoXiMa kilku studentów postanowiªo napisa podobny system od nowa, ale w ±rodowisku.net. Wkrótce powstaª w C# system LoXiM# [Grz09] maj cy lepsz stabilno±. Korzystaj c z aparatu wykonawczego i skªadu danych LoXiM#, studenci zbudowali fasad do obsªugi skªadu XML [Kac08] oraz procesor zapyta«sql [Pie09]. Niestety, wkrótce LoXiM# zostaª porzucony. Przyczyn byªa silna niech studentów MIMUW do technologii rmy Microsoft. Opisuj t histori, aby osoby pragn ce prowadzi podobne przedsi wzi cia mogªy unikn podobnych potkni. Ostatecznie zdecydowaªem o zbudowaniu w Javie nowej wersji LoXiMa. Postanowiªem odgórnie narzuci metody i techniki in»ynierii oprogramowania. Byªy to kroki sªuszne, poniewa» otrzy- 1 Miaªo to miejsce przed wprowadzeniem systemu bolo«skiego.

4 1 Wst p many system JLoXiM okazaª si stabilny i pozbawiony wad dwóch swoich poprzedników. Zastosowanie Javy wyeliminowaªo wiele kªopotów z zarz dzaniem pami ci operacyjn. Od pocz tku te» nad kodem ¹ródªowym czuwaª osobi±cie Piotr Tabor, sªuchacz studium doktoranckiego, który wcze±niej braª udziaª w budowie LoXiM. Dla JLoXiMa wybrali±my architektur warstwow widoczn na rys. 1.1 oraz peªn wymienno± wszystkich komponentów. Realizacja nowego j zyka zapyta«wymagaªa jedynie podmiany moduªów aparatu wykonawczego wstrzykiwanych w technologii Java Spring. Wymusili±my stosowanie wielu dobrych praktyk in»ynierii oprogramowania, jak codzienna budowa, testowanie regresywne, ±ledzenie usterek, przegl dy kodu itd. Zarówno LoXiM, jak i JLoXiM byªy dla studentów doskonaª lekcj o prowadzeniu przedsi wzi programistycznych, przy czym LoXiM to przykªad negatywny (jak tego nie robi ), a JLoXiM pozytywny (jak to robi ). JLoXiM ze swoj elastyczn architektur staª si poligonem do±wiadczalnym dla bada«naukowych nad strumieniowymi aparatami wykonawczymi. Wyniki tych prac opisali±my w rozdz. 11 niniejszego tomu oraz opublikowali±my w [TS10]. Raport z implementacji tego podej±cia znajduje si w pracy magisterskiej [Kut11]. Wymienno± wszelkich moduªów JLoXiM oznaczaªa,»e mogªy powsta liczne odmienne moduªy skªadowania danych [Ada11, wi11]. Opracowano na nowo tak»e wiele standardowych komponentów SZBD: podsystem odtwarzania po awariach [Šup11], indeksy [Len11], mened»er transakcji [Chm11], kontroler wspóªbie»no±ci [Bªa10], póªmocn kontrol typów [Man10] i obiektowe interfejsy programistyczne [Dor10]. Ostateczne wyniki przedsi wzi programistycznych pod wspóln nazw LoXiM mo»na uzna za pozytywne. To fakt,»e studenci nie byli w stanie narzuci sobie sami re»imu metodologicznego pozwalaj cego budowa du»e systemy informatyczne. Gdy jednak ten re»im wprowadzono z zewn trz, studenci ch tnie si mu poddali i potrali projektowa i programowa zgodnie z reguªami naszej profesji. Mam nadziej,»e z czasem poradz sobie tak»e z narzucaniem takiego re»imu sobie i innym. Wokóª projektu LoXiM powstaªo 29 prac magisterskich i dwa artykuªy konferencyjne [TS10, DST12]. Napisano kilkaset tysi cy linii kodu. Samej bazy danych nie udaªo si szeroko spopularyzowa w»adnej wersji. Kod ¹ródªowy bazy JLoXiM posªu»yª jako przedmiot studium problemowego z in-»ynierii oprogramowania opisanego w artykule [DST12]. Dokumentacj oraz kod ¹ródªowy JLoXiM mo»na znale¹ w witrynie projektu pod adresem jloxim.mimuw.edu.pl.