Obiektowe i półstrukturalne bazy danych
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ą ważne nisze rynkowe. Książka składa się z dwóch części. Pierwsza z nich to podręcznik do prowadzonego przez autora wykładu monograficznego. Zawiera prezentację modeli danych strukturalnego obiektowego i półstrukturalnego (w tym XML) oraz omówienie języków zapytań dla tych modeli (OQL, XQuery, SBQL itd). Dużo miejsca poświęcono interesującej półstrukturalnej bazie danych LORE. Przedstawiłem jej ciekawy język zapytań Lorel, jego realizację w SZBD oraz koncepcję półschematu danych DataGuide. Druga część tej książki to zbiór wyników badań naukowych. Zawarto w niej autorską koncepcję północnej kontroli typów opartą na półschematach danych, zaimplementowaną w SZBD JLoXiM strumieniową metodę realizacji zapytań SBQL oraz rozważania o uniwersalnym modelu danych i uniwersalnym języku zapytań.
- Kategorie:
- Język wydania: polski
- ISBN: 978-83-63103-31-6
- Liczba stron: 324
-
Sposób dostarczenia produktu elektronicznegoProdukty elektroniczne takie jak Ebooki czy Audiobooki są udostępniane online po opłaceniu zamówienia kartą lub przelewem na stronie Twoje konto > Biblioteka.Pliki można pobrać zazwyczaj w ciągu kilku-kilkunastu minut po uzyskaniu poprawnej autoryzacji płatności, choć w przypadku niektórych publikacji elektronicznych czas oczekiwania może być nieco dłuższy.Sprzedaż terytorialna towarów elektronicznych jest regulowana wyłącznie ograniczeniami terytorialnymi licencji konkretnych produktów.
-
Ważne informacje techniczneMinimalne wymagania sprzętowe:procesor: architektura x86 1GHz lub odpowiedniki w pozostałych architekturachPamięć operacyjna: 512MBMonitor i karta graficzna: zgodny ze standardem XGA, minimalna rozdzielczość 1024x768 16bitDysk twardy: dowolny obsługujący system operacyjny z minimalnie 100MB wolnego miejscaMysz lub inny manipulator + klawiaturaKarta sieciowa/modem: umożliwiająca dostęp do sieci Internet z prędkością 512kb/sMinimalne wymagania oprogramowania:System Operacyjny: System MS Windows 95 i wyżej, Linux z X.ORG, MacOS 9 lub wyżej, najnowsze systemy mobilne: Android, iPhone, SymbianOS, Windows MobilePrzeglądarka internetowa: Internet Explorer 7 lub wyżej, Opera 9 i wyżej, FireFox 2 i wyżej, Chrome 1.0 i wyżej, Safari 5Przeglądarka z obsługą ciasteczek i włączoną obsługą JavaScriptZalecany plugin Flash Player w wersji 10.0 lub wyżej.Informacja o formatach plików:
- PDF - format polecany do czytania na laptopach oraz komputerach stacjonarnych.
- EPUB - format pliku, który umożliwia czytanie książek elektronicznych na urządzeniach z mniejszymi ekranami (np. e-czytnik lub smartfon), dając możliwość dopasowania tekstu do wielkości urządzenia i preferencji użytkownika.
- MOBI - format zapisu firmy Mobipocket, który można pobrać na dowolne urządzenie elektroniczne (np.e-czytnik Kindle) z zainstalowanym programem (np. MobiPocket Reader) pozwalającym czytać pliki MOBI.
- Audiobooki w formacie MP3 - format pliku, przeznaczony do odsłuchu nagrań audio.
Rodzaje zabezpieczeń plików:- Watermark - (znak wodny) to zaszyfrowana informacja o użytkowniku, który zakupił produkt. Dzięki temu łatwo jest zidentyfikować użytkownika, który rozpowszechnił produkt w sposób niezgodny z prawem. Ten rodzaj zabezpieczenia jest zdecydowanie bardziej przyjazny dla użytkownika, ponieważ aby otworzyć książkę zabezpieczoną Watermarkiem nie jest potrzebne konto Adobe ID oraz autoryzacja urządzenia.
- Brak zabezpieczenia - część oferowanych w naszym sklepie plików nie posiada zabezpieczeń. Zazwyczaj tego typu pliki można pobierać ograniczoną ilość razy, określaną przez dostawcę publikacji elektronicznych. W przypadku zbyt dużej ilości pobrań plików na stronie WWW pojawia się stosowny komunikat.
Wstęp 16 1.1 Zawartość rozdziałów 16 1.2 Projekt LoXiM 17 2 Strukturalne obiektowe bazy danych 21 2.1 Relacyjny model danych 21 2.1.1 Pojęcia pierwotne 21 2.1.2 Schemat tabel/relacji i schemat relacyjnej bazy danych 22 2.1.3 Egzemplarz relacji i egzemplarz relacyjnej bazy danych 22 2.2 Obiektowy model danych 23 2.2.1 Pojęcia pierwotne 23 2.2.2 Wartości 24 2.2.3 Typy danych 25 2.2.4 Hierarchia typów danych 26 2.2.5 Schemat struktury obiektowej bazy danych 27 2.2.6 Przykład schematu obiektowej bazy danych 28 2.2.7 Egzemplarz obiektowej bazy danych 28 2.2.8 Dziedziczenie struktury 31 2.2.9 Wartości domyślne 32 2.2.10 Brak konfliktów dziedziczenia wielokrotnego 33 2.2.11 Klasyfikacja wielokrotna i dynamiczna 34 2.3 Model zachowania 36 2.3.1 Sygnatury metod 36 2.3.2 Schemat zachowania 36 2.3.3 Egzemplarz schematu zachowania 37 2.3.4 Problem dyspozycji 38 2.4 Podsumowanie 39 3 Przegląd języków zapytań obiektowych baz danych 41 3.1 NaszQL 41 3.2 Ahoj przygodo! 43 3.3 Złączenie zależne 45 3.4 Agregacja bez GROUP BY 46 3.5 Wyrażenia ścieżkowe 47 3.6 Zmienne ścieżkowe 49 3.7 Dane półstrukturalne OEM 51 3.8 Lorel i UnQL 52 3.9 Dane XML 54 3.10 XML-QL 56 3.11 Transformacje XSLT 60 3.12 Podsumowanie 61 4 Obiektowo-relacyjne bazy danych 63 4.1 Zalety typów obiektowych 63 4.2 Elementy obiektowości w SQL:1999 64 4.3 Elementy obiektowości w Oracle 66 4.3.1 Kolekcje 66 4.3.2 Typy użytkownika 67 4.3.3 Konstruktor 68 4.3.4 Metody typu obiektowego 72 4.3.5 Typ referencyjny 75 4.3.6 Porównywanie wartości typów obiektowych 77 4.3.7 Perspektywy obiektowe 78 4.4 Rozszerzony przykład. Baza zamówień 80 5 Lorel - język półstrukturalnych zapytań 87 5.1 Model danych 87 5.2 Podstawowe założenie języka 88 5.3 Równość w pięciu smakach 90 5.4 Wspólne przedrostki ścieżek 93 5.5 Wyrażenia ścieżkowe 97 5.6 Przykład przykładów 99 5.7 Podsumowanie 100 6 Aparat wykonawczy języka Lorel 102 6.1 Przykładowe dane 102 6.2 Wykonywanie zapyta« w LORE 103 6.3 Maszyna wirtualna aparatu wykonawczego LORE 104 6.3.1 Scan 105 6.3.2 Join 105 6.3.3 Select 106 6.3.4 Aggr 107 6.3.5 Plan wykonania zapytania 108 6.4 Indeksy 110 6.4.1 Vindex 110 6.4.2 Lindex 111 6.4.3 Bindex 111 6.4.4 Pindex 112 6.4.5 Tindex 112 6.4.6 Plan wykonania zapytania z użyciem indeksu 113 6.5 Zapytanie z wynikiem wielowymiarowym 114 6.5.1 Konstrukcja wyniku zapytania 115 6.5.2 Analiza możliwych planów wykonania 116 6.6 Podsumowanie 120 7 DataGuide 122 7.1 Półschemat danych i jego zastosowania 122 7.2 Półschemat w formie DataGuide 123 7.3 Algorytm konstrukcji silnego DataGuide 127 7.4 Przyrostowa pielęgnacja silnego DataGuide 130 7.5 Zastosowanie DataGuide w realizacji zapyta« 134 7.6 Podsumowanie 135 8 Języki zapytań dla danych XML 136 8.1 Przykładowy dokument XML 137 8.2 Przegląd języków 137 8.2.1 Lorel 138 8.2.2 XML-QL 139 8.2.3 XML-GL 140 8.2.4 XSLT 141 8.2.5 XQL 144 8.3 XPath 146 8.3.1 Krok lokalizacyjny 146 8.3.2 Osie 147 8.3.3 Predykaty 147 8.3.4 Zapis skrócony 149 8.3.5 Przykłady 149 8.4 Podstawowe elementy XQuery 150 8.4.1 Wyrażenia ścieżkowe 151 8.4.2 Konstruktor elementu 151 8.5 FLWOR 152 8.6 Instrukcje warunkowe i kwantyfikatory 153 8.7 Funkcje i rekurencja 155 8.8 Kontrola poprawności typów 157 8.8.1 Dwa systemy typów 157 8.8.2 Schemat przykładowego dokumentu 157 8.8.3 Badanie typu 160 8.8.4 Typ argumentu funkcji 161 8.8.5 Instrukcja wyboru dla typu 162 8.8.6 Typy elementarne 164 8.9 Podsumowanie 165 8.10 Zadanie 165 9 Podejście stosowe do języków zapytań 168 9.1 Modele składu obiektów 169 9.1.1 Dane półstrukturalne (model M0) 169 9.1.2 Dane obiektowe, klasy (model M1) 170 9.1.3 Role dynamiczne (model M2) 172 9.1.4 Hermetyzacja (model M3) 173 9.2 Stos środowisk i wiązanie nazw 174 9.2.1 Stos środowisk 174 9.2.2 Wiązanie nazw 174 9.2.3 Funkcja nested 176 9.3 Język zapytań SBQL 179 9.3.1 Składnia zapytań 179 9.3.2 Stos wyników 180 9.3.3 Semantyka zapytań 181 9.3.4 Operatory algebraiczne 181 9.3.5 Operatory niealgebraiczne 182 9.3.6 Przykładowe zapytania w SBQL 185 10 Półmocna kontrola typów w językach zapytań 187 10.1 Mocna kontrola typów 187 10.2 Przyczynkowość istniejących systemów typów 188 10.3 Przykład niespójności w systemie typów ODMG 190 10.4 Kolekcje 191 10.5 Półmocna kontrola typów 193 10.6 Prosty czy wymyślny system typów? 193 10.7 Niezależność danych i schematy baz danych 194 10.8 Źródła zbędnej złożoności 196 10.9 Koncepcja systemu kontroli typów 197 10.10 Zewnętrzny system typów 199 10.10.1 Architektura trójwarstwowa 200 10.10.2 Deklaracja obiektu 202 10.10.3 Deklaracja podprogramu 203 10.10.4 Typy nazwane 203 10.10.5 Typy rozróżnione 205 10.10.6 Deklaracja klasy 205 10.10.7 Deklaracja interfejsu 208 10.10.8 Programista systemowy 210 10.10.9 Administrator 211 10.10.10 Programista administracyjny 213 10.10.11 Programista aplikacyjny 215 10.10.12 Przykładowa składnia zewnętrznego systemu typów 217 10.11 Schemat bazy danych i metabaza 218 10.11.1 Metabaza 219 10.11.2 Atrybuty wierzchołków metabazy 221 10.11.3 Korzenie, przynależność do klas i dziedziczenie 222 10.11.4 Metabaza jako słownik danych 223 10.11.5 Role dynamiczne 223 10.11.6 Hermetyzacja 223 10.11.7 Podprogramy i ich parametry referencyjne 224 10.11.8 Perspektywy 226 10.12 Sygnatury 227 10.12.1 Definicja sygnatur 227 10.12.2 Statyczna funkcja nested 233 10.13 Tablice decyzyjne wyprowadzania typów 234 10.13.1 Operatory arytmetyczne i napisowe 235 10.13.2 Operatory porównania 237 10.13.3 Operatory logiczne 238 10.13.4 Generyczne operatory algebraiczne 239 10.13.5 Generyczne operatory niealgebraiczne 243 10.13.6 Operator punktu stałego 247 10.13.7 Podsumowanie 248 10.14 Aparat statycznej kontroli typów 248 10.14.1 Architektura aparatu kontroli typów 249 10.14.2 Procedura statycznej kontroli typów 251 10.14.3 Modyfikacja drzewa składni zapytania 256 10.14.4 Wznowienie procesu kontroli typów po błędzie 261 10.14.5 Sygnatury wariantowe i rozwidlenie procesu 264 10.14.6 Przykładowa statyczna kontrola typów 265 10.14.7 Przykład dla schematu danych z dziedziczeniem 270 11 Strumieniony aparat wykonawczy JLoXiM 272 11.1 Motywacja 272 11.2 Założenia 274 11.3 Strumień 274 11.3.1 Rekord kontrolny 275 11.3.2 Resultset∗ 275 11.3.3 Dziedzina komunikacji 275 11.3.4 Relacja zgodności rekordów kontrolnych 276 11.3.5 Uporządkowanie strumienia 277 11.4 Komponenty 277 11.4.1 Store 278 11.4.2 Stamp 278 11.4.3 GetNested 279 11.4.4 RefMaterializer 279 11.4.5 Merge 280 11.4.6 HighestDefined 281 11.4.7 Komponenty dla operatorów algebraicznych 281 11.4.8 BreakBag 281 11.4.9 MakeBag 282 11.4.10 Select 282 11.5 Konstrukcja sieci wykonawczej dla zapytania 282 11.5.1 Statyczne wiązanie nazw i operatorów 283 11.5.2 Budowa planu sieci wykonawczej 284 11.6 Przykłady sieci 288 11.7 Optymalizacje sieci wykonawczej 290 11.8 Realizacja 290 11.8.1 Implementacja strumieni 291 11.8.2 Scalanie komponentów 291 11.8.3 Strumienie a pamięć współdzielona 291 11.8.4 Minimalizacja ilości danych odczytywanych ze składu 292 11.8.5 JLoXiM - platforma eksperymentalna 292 11.9 Podsumowanie 293 12 Uniwersalny model stanu obiektu 294 12.1 Relacyjna baza danych a obiekty C++ 295 12.1.1 Niezgodność modelu danych 295 12.1.2 Niezgodność czasu wiązania 296 12.1.3 Niezgodność czasu życia obiektów 297 12.2 Uniwersalny model stanu 297 12.3 Model relacyjny 299 12.4 Model M0/AS0 301 12.5 Model danych XML 303 12.6 Model obiektowy języka C++ 305 12.7 Model obiektowy języków Java, .NET oraz Python 306 12.8 Podsumowanie 308 13 Uniwersalny język zapytań 309 13.1 Operatory języka UQL 309 13.1.1 Zmiana nazwy 310 13.1.2 Spłaszczanie 310 13.1.3 Odwzorowanie 310 13.1.4 Ewaluacja 310 13.1.5 Pobieranie k-tego podobiektu 311 13.1.6 Filtrowanie 311 13.1.7 Zagnieżdżanie 311 13.1.8 Klonowanie 311 13.1.9 Produkt kartezjański 312 13.1.10 Grupowanie 312 13.1.11 Różnica 312 13.1.12 Transpozycja 313 13.1.13 Zwijanie 313 13.2 Przykłady odwzorowań zapytań 314 13.3 Dalsze prace 317 Literatura 318 Indeks 327