Bazy Danych i Systemy informacyjne Wykład 14 Piotr Syga 18.01.2019
Motywacja Ograniczenia relacyjnych baz danych proste typu i struktury klucze (w tym sztuczne) relacje między tabelami uwzględniane w triggerach problem z modelowaniem dziedziczenia przenoszenie funkcjonalności poza bazę danych
Motywacja Dlaczego obiektowość? rozwój obiektowych języków programowania hierarchiczna struktura danych rozszerzalność modelu zarządzanie widocznością danych przejście z modelu abstrakcyjnego do fizycznej implementacji
OODB Historia Object Database Management Group Java Data Objects obiektowo relacyjny SQL3 (99/03/06/08/11/16)
OODB Przykład obiektu CREATE TYP Student as OBJECT( imie String, nazwisko String, indeks Integer, member procedure zapisz(przedmiot String), member procedure ocen(przedmiot String, ocena Integer), member function konczsemestr return Integer ); CREATE TABLE Grupa OF Student; INSERT INTO Grupa VALUES (new Student( Jan, Kowalski, 1 )); CREATE TABLE Kurs OF Grupa;
OODB Przykład obiektu CREATE TYP Student as OBJECT( imie String, nazwisko String, indeks Integer, member procedure zapisz(przedmiot String), member procedure ocen(przedmiot String, ocena Integer), member function konczsemestr return Integer ); CREATE TABLE Grupa OF Student; INSERT INTO Grupa VALUES (new Student( Jan, Kowalski, 1 )); CREATE TABLE Kurs OF Grupa; Możliwe użycie utworzonego typu jako pole w nowym typie odwołania kropkowe.
OODB OODB vs OOPL obiekty tworzone autonomicznie obiekty nie są usuwane wraz z czyszczeniem zmiennych związki między obiektami definiowane w klasie obiekty tej samej klasy tymczasowe i trwałe, ich typ można zmieniać (persistance manager)
OODB OODB v RDB struktura zdefiniowana przez metody klas rozdzielenie opisu struktury od zbioru danych (rozszerzenia) typy abstrakcyjne typy użytkownika są równoprawne z systemowymi polimorfizm możliwość odwołania przez adres lub OID
OODB Wady brak uniwersalnego modelu danych brak teoretycznych podstaw pod modele danych brak powszechnie akceptowalnego standardu (także języka zapytań) problem z grantami enkapsulacja vs optymalizacja problematyczne locki (np. do backupu) brak widoków
OODB Zalety rozbudowane typy danych brak konwersji danych hierarchia typów obsługa dużych obiektów i długich transakcji ponowne użycie kodu ułatwione modelowanie
Obiektowość w RDB Cechy wykraczające poza relacyjność Podstawowe funkcjonalności: kursory set obsługa JSON/XML/.. funkcje specyficzne dla dialektów Funkcjonalności implementowane przez niektóre dialekty (głównie Oracle): obiekty wierszy (row type) ADT domeny
Obiektowość w RDB Rowtype, ADT, Domains Typ wierszowy Typ służący do pobierania wybranych atrybutów z wiersza tworząc typy złożone, czy do pobierania wiersza z kursora. CREATE ROW TYPE nazwa( kol1 typ1,... ); Typy abstrakcyjne Mają strukturę krotek oraz dodatkowe metody. Zawsze występują trzy domyślne metody: Constructor domyślny inicjalizuje wszystkie kolumny nullem, Observer pozwala na dostęp do kolumn x.k1 (lub k1(x)), Mutator pozwala na modyfikację wartości kolumny. Często używane do zarządzania plikami. Domeny Pozwalają tworzyć podtypy (pod względem długości i ograniczeń) istniejących typów.
Struktura kolokwium Test wielokrotnego wyboru: 3 5 pytań Zadania otwarte, zależnie od czasochłonności: 3 lub 4 zadania, np.: krótkie polecenie SQL (trigger, użytkownik, tabela,... ), MongoDB lub opis (np. projektowanie, 2PC, NoSQL lub SQL injection) zapytanie SQL+AR normalizacja znajomość notacji w modelowaniu wyliczenie czasu odpowiedzi
Zakres materiału SQL zapytania (cf. niżej punktowane zadanie z ćwiczeń), również algebra relacji tworzenie baz danych, użytkowników, tabel, widoków, triggerów i procedur transakcje prepared statements znajomość cursorów, indexów (w tym ich typów i cech)
Zakres materiału Bezpieczeństwo SQL injection (idea, środki ochrony, przykładowy atak) znajomość pojęcia prywatności różnicowej (idea, jak się ją zapewnia, dlaczego zaburzanie danych się sprawdza, znajomość pojęcia mechanizmu Laplace a)
Zakres materiału Schematy relacji i normalizacja pojęcia klucza, domknięcia (atrybutu i zbioru), definicje postaci normalnych (1NF, 2NF, 3NF, BCNF) znajomość konsekwencji definicji: np. wszystkie atrybuty są kluczowe, wszystkie klucze min. są jednoatrybutowe,... podział relacji identyfikacja postaci normalnej na podstawie schematu lub ustalonej notacji tabeli
Zakres materiału Projektowanie baz etapy projektowania znajomość notacji (w szczególności zależności między encjami, krotności) czytanie schematu na podstawie notacji (później opis, normalizacja, tworzenie,... ) podstawy łączenia baz z frontendem
Zakres materiału Organizacja pamięci i optymalizacja pojęcia: plik uporządkowany, nieuporządkowany, haszowy (cechy, zalety, wady), overflow file wyliczenie czasu odpowiedzi idea i etapy optymalizacji, idea ACG i heurystyki przy tworzeniu drzewa
Zakres materiału Rozproszone bazy danych relacyjne bazy w środowisku rozproszonym (w szczególności replikacja i duplikacja, podział wertykalny i horyzontalny) idea za regułami Date a zapytania w rozproszonych RBD, transakcje (w szczególności 2PC) nierelacyjne bazy danych (zalety, wady, idea CAP i BASE), przykłady działania na podstawie MongoDB
Przykład szacowania czasu SELECT Parametry: 7200 RPM, 80MB/s, rozm. bloku 4KB Schemat bazy: 9x int, varchar(29), date, varchar(30); rozmiar w B: 36 + 30 + 3 + 31 = 100 Liczba rekordów: 150 000 BF = 4000 100 = 40 rekordów w bloku, zatem 150000 40 = 3750 zajętych bloków Oczekiwanie: 7200 RPM = 120 RPS 8.(3)ms/r, zatem oczekiwanie około 4ms 4000B Czas odczytu bloku: 80000000B/s = 0.05ms Czas odczytu wszystkich bloków: 3750 0.05 187.5ms