Bazy danych -- trendy rozwojowe Wyklad dla studentów matematyki

Transkrypt

Bazy danych -- trendy rozwojowe Wyklad dla studentów matematyki
Bazy danych – trendy rozwojowe
Wykład dla studentów matematyki
Zbigniew Jurkiewicz, Instytut Informatyki UW
6 czerwca 2015
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Modele danych
We współczesnych bazach danych sa˛ rozpowszechnione dwa
podstawowe modele danych:
Dominuje relacyjny model danych, w którym organizacja
danych opiera sie˛ na pojeciu
˛
zbioru.
W pewnym okresie duża˛ popularność zdobyły obiektowy
model danych, bed
˛ ace
˛ w pewnym sensie mocno
rozszerzona˛ wersja˛ dawnego sieciowego modelu danych.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Wady modelu relacyjnego
Zorientowany na płaskie rekordy (dziedzictwo
implementacyjne).
Konieczność wcześniejszego określenia „schematu” bazy
danych, dopiero potem można coś do bazy wstawiać.
Nie można wstawiać danych nie pasujacych
˛
do schematu,
oficjalnie nie wolno dodawać nowych atrybutów.
Za słaby do reprezentacji wiedzy: tylko jedna konstrukcja
(tabela), atomowe atrybuty.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Programowanie obiektowe
Obiekt jako kontener zawierajacy
˛ pewien zbiór wartości.
Z obiektem zwiazuje
˛
sie˛ zbiór operacji do obserwacji i
zmiany stanu obiektu (czyli wartości w nim zawartych).
Musi istnieć możliwość odwołania sie˛ do obiektu, aby
wykonać któraś
˛ jego operacje,
˛ dlatego obiekty sa˛ nazwane
(niekoniecznie bezpośrednio).
Obiekt może przestać istnieć, może sie˛ wiec
˛ zdarzyć
niepowodzenie podczas odwoływania sie˛ do niego.
Obiekty moga˛ sie˛ do siebie odwoływać.
obiekty elementarne: odwołuja˛ sie˛ tylko do swoich klas
obiekty złożone: odwołuja˛ sie˛ także do innych obiektów
(bezpośrednio zależa˛ od nich)
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Obiekty trwałe
Cz˛esto zachodzi potrzeba dłuższego przechowania
niektórych obiektów (np. miedzy
˛
sesjami)
Takie obiekty nazywamy trwałymi (ang. persistent)
Obiekty trwałe można zachować na dysku w repozytorium
obiektów
Program korzysta z repozytorium za pośrednictwem
pamieci
˛ buforowej (cache), obiekty ładuje sie˛ na żadanie.
˛
Jeśli dany obiekt ma być trwały, to wszystkie obiekty do
których sie˛ odwołuje też musza˛ być trwałe.
Jako nazwy takiego obiektu (niekoniecznie jedynej) używa
sie˛ PID (persistent object identifier)
Repozytoria obiektów trwałych nie sa˛ dzielone, jeśli
dodamy współbieżny dostep
˛ (cóż prostszego ;-)
otrzymamy prawdziwa˛ obiektowa˛ baz˛e danych.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Ładowanie obiektów
Gdy obiekt trwały jest załadowany do pamieci
˛ operacyjnej
musi wygladać
˛
jak obiekty lokalne.
Obiekty trwałe moga˛ jako fragment swojego stanu
zawierać wyłacznie
˛
odwołania do innych obiektów trwałych
w postaci PID.
Podczas ładowania sa˛ one transformowane na odwołania
lokalne do innych obiektów.
Słownik LoadedPIDs przechowuje powiazania
˛
miedzy
˛
PID
i lokalnymi adresami.
Zawartość obiektu nie jest ładowana do momentu
pierwszego odwołania.
Specjalna flaga wskazuje, czy zawartość obiektu została
już załadowana (filozofia proxy.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Dodatkowe wymagania
Automatyczne odśmiecanie obiektów trwałych (być może
off-line)
Transakcje atomowe.
Cache consistency przy współbieżnym dostepie.
˛
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Obiektowo-relacyjny model danych
Abstrakcyjne typy danych (ADT) definiowane przez
użytkownika
Na przykład baza danych dla obrazów (zdjecia
˛
satelitarne)
nie może używać klasycznych warunków w WHERE, musi
mieć specjalizowane, dopasowane do typu operacje.
Rozszerzy sie˛ też fraza SELECT, np. o takie możliwości,
jak wybranie określonego kawałka obrazka.
Typy strukturalne dla kolumn, np. ARRAY
Dziedziczenie
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Obiektowy model danych
Jedno podstawowe pojecie
˛
do modelowania świata —
obiekt.
Z obiektem zwiazany
˛
jest jego stan i zachowanie.
Stan definiuje sie˛ wartościami własności (atrybutów)
obiektu, moga˛ one być
wartościami elementarnymi (liczby, napisy) lub
obiektami, zawierajacymi
˛
z kolei inne własności.
Tak wiec
˛ obiekty można definiować rekurencyjnie.
Na rynku w pewnym momencie było ok. 25 produktów, np.
GemStone, ONTOS, ENCORE.
Wiekszośc
˛
z nich zanikła, pozostałe wciaż
˛ nie sa˛ jeszcze
pełnymi i uniwersalnymi bazami danych: ObjectStore,
Versant.
Dlatego wiele relacyjnych DBMS uzupełniono o możliwości
obiektowe, np. Oracle.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Własności obiektowego modelu danych
Zachowanie obiektu opisuje sie˛ zbiorem metod —
procedur operujacych
˛
na stanie obiektu.
Każdy obiekt jest jednoznacznie identyfikowany
systemowym identyfikatorem (OID).
Proste definiowanie obiektów złożonych.
Obiekty o takich samych własnościach i zachowaniu
grupuje sie˛ w klasy. Obiekt może być egzemplarzem tylko
jednej klasy lub wielu.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Własności obiektowego modelu danych
Klasy łaczy
˛
sie˛ w hierarchie dziedziczenia, w których
podklasa dziedziczy własności i metody nadklasy,
dokładajac
˛ swoje specyficzne.
Niektóre modele pozwalaja˛ na overriding — zmiane˛
odziedziczonej własności lub metody.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Różnice w stosunku do modelu relacyjnego
Atrybuty moga˛ być wielowartościowe.
Eliminuje to potrzebe˛ używania wiekszości
˛
złacze
˛ ń
równościowych.
Możliwość definiowania zwiazków
˛
odwrotnych.
Nie trzeba definiować kluczy, ich role˛ pełnia˛ OIDy.
Eliminuje to modyfikowanie wartości klucza.
Dwa rodzaje równości: identyczność i równość wartości.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Różnice w stosunku do modelu relacyjnego
Złaczenia
˛
używane gdy warunki w zapytaniu dotycza˛
porównywania wartości atrybutów. W przypadku „kluczy
obcych” bezpośrednia nawigacja z użyciem OID.
Przy ładowaniu powiazanych
˛
obiektów z bazy danych do
pamieci
˛ (buforowanie) OIDy zastepuje
˛
sie˛ wskaźnikami
(pointer swizzling), co wielokrotnie przyśpiesza nawigacje.
˛
Wersjonowanie (długie transakcje) — tylko w niektórych
OBD.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zapytania
Dwa tryby dostepu:
˛
Nawigacyjny: mamy OID obiektu i zaczynajac
˛ od niego
przechodzimy po kolejnych referencjach. Zwykle używany
w programach.
Jezyk
˛
zapytań (cz˛esto podobny do SQL): zapytanie
opisuje zbiór obiektów. Deklaratywność.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zapytania
Przykład: Znaleźć wszystkie projekty z budżetem ponad
100000 złp i majace
˛ sponsora z Warszawy
Relacyjnie
{p | (∃f)(∃a) Projekt(p) AND Firma(f) AND Adres(a)
AND p.budżet > 100000 AND p.sponsor = f
AND f.adres = a AND a.miasto = ’Warszawa’}
Z użyciem wyrażeń ścieżkowych (co pozwala unikać
zmiennych „roboczych”)
{p | Projekt(p) AND p.budżet > 100000
AND p.sponsor.adres.miasto = ’Warszawa’}
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Wersje obiektów
Potrzebne np. w systemach CAD do eksploracji wariantów.
Każda wersja ma własny OID, ale zachowujemy zwiazki
˛
wyprowadzenia miedzy
˛
wersjami, najcz˛eściej tworzace
˛
hierarchie.
˛
Hierarchia wersji zwykle trzymana w specjalnym obiekcie
generycznym.
Dwa rodzaje odwołań do wersji
specyficzna (albo statyczna): konkretna wersja
generyczna (albo dynamiczna): do domyślnej wersji
(zwykle ostatniej).
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Problemy z modelem obiektowym
Brak optymalizacji zapytań. Główny problem to wyrażenia
ścieżkowe, trudno dla nich budować indeksy.
Brak dobrej formalizacji, ale sa˛ już algebry podobne do
algebry relacji.
Pieć typowych operacji: suma (union, różnica (difference),
selekcja (select), generowanie (generate), odwzorowanie
(map).
Jednak brak powiazania
˛
tych operacji z niskopoziomowymi
operacjami fizycznymi (takiego jak w algebrze relacji RBD),
stad
˛ ich arbitralność.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Problemy — c.d.
Brak uniwersalnych jezyków
˛
zapytań. Zwykle brak
zagnieżdżonych podzapytań, funkcji agregujacych,
˛
grupowania. Brak automatycznego wsparcia dla obsługi
ekstensji klasy — zbioru jej egzemplarzy; użytkownik musi
sam zdefiniować kolekcje˛ (collection) i pilnować jej
aktualizacji przy dodawaniu i usuwaniu obiektów.
Kompozycyjność
W modelu relacyjnym wynik zapytania jest (anonimowa)
˛
relacja.
˛
Można go wiec
˛ obrobić kolejnym zapytaniem, co umożliwia
składanie zapytań.
W modelu obiektowym jest gorzej, obiekty ze zbioru
wynikowego moga˛ nie należeć do żadnej klasy.
Brak wsparcia dla redefiniowania klas (odpowiednik ALTER
z SQL), np. dodawania lub usuwania atrybutów.
Brak perspektyw (ale może sa˛ zbedne).
˛
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Problemy — c.d.
Brak sensownego mechanizmu definiowania uprawnień,
nie wiadomo jaka ziarnistość: obiekt, zbiór, klasa, fragment
hierarchii?
Bardzo ograniczone wiezy
˛ spójności, konieczność
realizacji metodami.
Kłopoty z współbieżnościa,
˛ reczne
˛
operowanie blokadami.
Problem długich transakcji (unika sie˛ ich w systemach
OLTP dla relacyjnych baz danych).
Propozycja: wspólna publiczna baza danych + prywatne
bazy danych użytkowników.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Przykład: O2
Definiowanie:
class Instytut
type tuple : (obszar-badań : string,
nazwa-instytutu : string,
adres : Adres,
grupa-badawcza : set(Zespół))
public read nazwa-instytutu, write obszar-badań
method init(string, string, Adres, set(Zespół)) :
Instytut is public;
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
O2 — c.d.
Zamiast tuple można użyć list lub set, a nawet
zagnieżdżać je w sobie.
Deklaracja metody podaje jej sygnature.
˛
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Kolekcje
Reczne
˛
tworzenie kolekcji, dwie możliwości:
jako klase˛
class Instytuty type set(Instytut);
jako nazwana wartość złożona
name instytuty: set(Instytut);
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Programy
execute co2 {
o2 Instytut tmp;
tmp = new(Instytut);
instytuty = set(tmp);
}
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zapytania
Jezyk
˛
zapytań OQL stanowi rozszerzenia SQL:
select x from x in instytuty
where x.obszar-badań = ’Bazy danych’;
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zapytania
Można używać wyrażeń ścieżkowych:
select x from x in instytuty
where x.obszar-badań = ’Bazy danych’
and x.adres.kraj = ’Włochy’;
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zagadnienia otwarte
Czy klasy sa˛ obiektami? Inaczej mówiac,
˛ czy schemat
trzymany jest osobno?
Jakie sa˛ dozwolone zwiazki
˛ miedzy
˛
klasami?
Czy i jak jest wspierana nawigacja?
Jakie sa˛ operacje na obiektach?
Jak identyfikuje sie˛ obiekty?
Jak wybiera sie˛ obiekty?
Jaka˛ role˛ pełni klasyfikacja?
Czy klasy obiektów moga˛ ewoluować?
Czy w rozproszonym systemie sieć powinna być
widoczna?
Czy jest specjalna obsługa obiektów aktywnych?
Czy „świat” obiektów jest zamkniety
˛ (closed) czy otwarty?
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Dane przestrzenne
Obiekt przestrzenny: zajmuje pewien obszar przestrzeni,
określony przez położenie i granice. Typy:
dane punktowe: zbiór punktów, obszary scharakteryzowane
całkowicie położeniem, np. dane rastrowe;
dane regionowe: zbiór regionów
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zapytanie przestrzenne
Rodzaje
zapytania o zakres przestrzenny: „znajdź wszystkie rzeki
na Ślasku”
˛
lub „znajdź wszystkie miasta w promieniu 50
km od Warszawy”
zapytania o najbliższych sasiadów:
˛
„znajdź miast leżace
˛
najbliżej Gdyni”
zapytania o złaczenia
˛
przestrzenne: „znajdź wszystkie
miasta nad jeziorami”.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zastosowania przestrzennych baz danych
systemy informacji geograficznej (Geographic Information
Systems — GIS), np. ArcInfo
systemy wspomagania projektowania (Computer-Aided
Design — CAD)
przestrzenne wiezy
˛ spójności, np. „musi być co najmniej pół
metra odstepu
˛
miedzy
˛
silnikiem a sterownikiem”
systemy zobrazowania medycznego (medical imaging
systems)
wyszukiwanie obrazów przez zawartość: np. znajdź obrazy
podobne do podanego
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Co dalej?
Obecnie rozwijane obiektowe bazy danych (stan z 2009)
Versant (kupili db4objects)
Objectivity
ObjectStore firmy Progress (wywodzi sie˛ ze Statice),
kupiony przez inna˛ firme˛
db4object: open source, obcnie nazywa sie˛ db4o
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Nowe wyzwania
Dzieki
˛ WWW i Internetowi łatwo umieszczać informacje w
sieci tak, żeby były powszechnie dostepne.
˛
Złożone środowiska budowy aplikacji powoduja˛ wzrost
zapotrzebowania na wieksz
˛
a˛ integracje˛ programów i
danych.
Szybki rozwój sprz˛etu spowodował, że niektóre założenia i
decyzje projektowe z nich wynikajace
˛ przestaja˛
obowiazywać.
˛
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
WWW zmienia wszystko
Dzieki
˛ WWW każdy może małym kosztem publikować w
sieci duża˛ ilość informacji
WWW stało sie˛ ważna˛ platforma˛ dostarczania aplikacji i
informacji.
WWW to wielka baza danych.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
WWW a bazy danych
Drugorz˛edna rola baza danych jako pomocniczej technologii:
W wielkich portalach do przechowywania miliona stron
używa sie˛ baz danych zamiast technologii opartej na
systemach plików.
Bazy danych sa˛ używane w sposób tradycyjny w
systemach E-commerce: do przechowywania informacji o
klientach, transakcjach, fakturowania, płatności i stanów
magazynowych.
Jednak najwieksze
˛
firmy indeksujace
˛ duże ilości informacji
unikaja˛ tradycyjnych baz danych.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zmiany sprz˛etowe
Terabajt pamieci
˛ głównej jako pula buforów dla bazy
danych zawierajacej
˛ setki terabajtów.
Prawie wszystkie tabele bed
˛ a˛ sie˛ mieścić w pamieci.
˛
Podważa to podstawowe dotychczasowe założenia
architektoniczne, np. traci sens indeksowanie w obecnym
kształcie.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zmiany sprz˛etowe
Coraz szybsze i tańsze przetwarzanie w stosunku do
czasu pracy człowieka.
Systemy samoinstalujace,
˛
samozarzadzaj
˛
ace
˛ i
samonaprawiajace
˛ sie.
˛
Automatyczne analiza i sumaryzacja danych.
Inteligentne odpowiedzi na zapytania użytkownika.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Zmiany sprz˛etowe
Dostep
˛ do baz danych ze sprz˛etu powszechnego użytku ⇒
gwałtowny wzrost liczby klientów i serwerów baz danych.
Miliardy gadżetów korzystajace
˛ z milionów serwerów.
Z uwagi na mobilność takich urzadze
˛
ń klasyczne
architektury (trójwarstwowa i klient-serwer) staja˛ sie˛ mniej
przydatne.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Plug and Play Database Management Systems
Brak administratorów baz danych.
Brak (zewnetrznych)
˛
parametrów regulacyjnych, zdolność
adaptacji.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Semantyka i realizacja zapytań
Rozważmy zapytanie
Podaj średnia˛ pensje˛ dla wszystkich pracowników.
Obliczenie odpowiedzi w sposób tradycyjny w sieci 1000
jednostek baz danych mogłoby trwać długo.
Można popatrzeć na to z perspektywy akumulowania
informacji: zgrubna˛ odpowiedź otrzymujemy bardzo
szybko.
W miare˛ dalszych obliczeń ta odpowiedź jest uściślana do
momentu, gdy jej dokładność zadowoli użytkownika.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Informacja niedokładna
Odpowiedzi na zapytania to nie jedyne miejsce
wystepowania
˛
informacji nieścisłej.
Pojawia sie˛ ona także w samych danych z uwagi na
subiektywność opisów, np. przy odpowiedzi na zapytanie:
Czy sa˛ jakieś dobre włoskie restauracje nie dalej niż 5 km
od mojego domu?
Możemy mieć możliwośc skonsultowania 10 baz danych z
informacjami o restaturacjach oraz dodatkowo kilku
ogólnych baz regionalnych.
Jednak otrzymane opinie bed
˛ a˛ sie˛ różnić.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Problemy unifikacji procesów i danych
Reguły biznesowe jako popularny sposób określania
działania aplikacji.
Można je kompilować na zbiór wyzwalaczy i alerterów w
bazie danych.
Jednak obecne implementacje wyzwalaczy nie sa˛
skalowalne na kilkadziesiat
˛ tysiecy
˛ wyzwalaczy.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
NoSQL
Terminem tym powszechnie określa sie˛ wszystkie SZBD, które
nie korzystaja˛ z relacyjnego modelu danych.
Dość trudne do zdefiniowania, ponieważ sa˛ to doraźnie
konstruowane narz˛edzia. Niektóre nawet używaja˛ SQL.
Wiekszość
˛
oparta na modelu zbiorów ISAM, tzn. ciagów
˛
par (klucz,rekord), używanym od wielu lat w rozmaitych
odmianach Berkeley-DB czy BTrieve. Cz˛eść wywodzi sie˛ z
(rozproszonych) zarzadców
˛
rekordów, używanych w
obiektowych bazach danych.
Najcz˛eściej brak klasycznego schematu danych, obiekty
(lub rekordy) moga˛ mieć dowolna˛ liczbe˛ atrybutów
dowolnego typu.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
NoSQL
Rzekoma lepsza skalowalność na wielkie zbiory danych,
podważona nieco przez eksperyment grupy z MIT, Yale i
Brown Univ. kierowanej przez Stonebrakera [CACM 53,1
2010]
Używane dane testowe sa˛ publicznie dostepna,
˛
jeśli ktoś
ma nieco maszyn z terabajtowymi dyskami, to może
zweryfikować ich wyniki.
Pełna obsługa transakcji i spójności gwarantowana
wyłacznie
˛
lokalnie, brak globalnej niesprzeczności danych.
Przydatne do aplikacji WWW, bo tam proste transakcje.
Mirroring bez gwarancji aktualności.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Rodzaje NoSQL
Pamieci
˛ klucz-wartość: bez interpretacji wartości:
memcached, Redis, Riak
Pamieci
˛ dokumentów: obiekty sa˛ ciagami
˛
par
(atrybut,wartość), ponadto moga˛ być grupowane w
kolekcje. Przykłady: CouchDB, MongoDB.
Rozszerzalne pamieci
˛ rekordów: zbliżone do relacyjnych
baz danych, ale ze zmiennymi atrybutami i bez semantyki
ACID. Wielkie rozmiary. Przykłady: BigTable, HBase.
Grafowe bazy danych. Wierzchołki i powiazania
˛
miedzy
˛
nimi, podobne do obiektowych. Przykłady: neo4j.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB
Do realizacji pewnych zadań nie zawsze potrzebna jest
cała maszyneria oferowana przez relacyjne SZBD (np.
transakcje).
MongoDB jest przeznaczony do zastosowań, w których
rezygnujac
˛ z modelu relacyjnego, można odnieść wiele
korzyści.
MongoDB jest systemem zarzadzania
˛
baza˛ danych
zorientowanym na dokumenty (ang. document-oriented
database).
Oficjalna strona MongoDB: http://www.mongodb.org/
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB
Baza danych MongoDB składa sie˛ z kolekcji, które można
utożsamiać z tabelami.
Każda kolekcja zawiera dokumenty, które można
utożsamiać z wierszami.
Dokument jest jednak o wiele bardziej elastyczny od
wiersza — nie musi posiadać ustalonej struktury oraz
pozwala na osadzanie w nim innych dokumentów lub
tablic, przez co pozwala na reprezentacje˛ hierarchicznych
struktur danych w jednym rekordzie.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Architektura MongoDB
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB
W MongoDB nie istnieje pojecie
˛
schematu bazy danych,
tabeli lub wiersza. Brak tych sztywnych ograniczeń
sprawia, że MongoDB jest bardziej elastyczne.
Brak transakcji ACID znanych z relacyjnych SZBD, co
przyspiesza wykonywanie operacji.
Operacje wykonywane w ramach pojedynczego
dokumentu sa˛ atomowe, co wystarcza w wiekszości
˛
zastosowań.
Role˛ procedur składowanych pełnia˛ składowane funkcje
JavaScript, które można wykonywać po stronie serwera.
Mechanizm do wykonywania agregacji, wewnetrznie
˛
realizowany za pomoca˛ paradygmatu MapReduce.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB
Podstawowa˛ jednostka˛ danych w MongoDB jest dokument
— uporzadkowany
˛
zbiór kluczy i powiazanych
˛
z nimi
wartości.
Klucze sa˛ zawsze łańcuchami znaków, natomiast wartości
moga˛ być różnych typów (np. string, boolean, liczby 32 i
64-bitowe, daty, wyrażenie regularne, id innego
dokumentu, dane binarne, tablice, kod JavaScript i wiele
innych).
Dokumenty zapisywane sa˛ zewnetrznie
˛
w postaci JSON,
natomiast wewnetrznie
˛
przechowywane sa˛ w formacie
BSON (binarna postad JSON). Przykładowe dokumenty na
nastepnych
˛
slajdach.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB: przykłady dokumentów
plyta = {
"Type": "CD",
"Artist": "Nirvana",
"Title": "Nevermind",
"Genre": "Grunge",
"Releasedate": "1991.09.24",
"Tracklist": [
{"Track" : "1",
"Title" : "Smells like teen spirit",
"Length" : "5:02"
},
{"Track" : "2",
"Title" : "In Bloom",
"Length" : "4:15"
}
]
}
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB: przykłady dokumentów
ksiazka = {
"type": "Book",
"Title": "Definite Guide to MongoDB: The NoSQL",
"ISBN": "987-1-4302-3051-9",
"Publisher": "Apress",
"Author": [
"Plugge, Eelco",
"Membrey, Peter",
"Hawkins, Tim"
]
}
osoba = {
"Imie" : "Monika",
"Nazwisko": "Killim",
"Wiek": 23
}
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB: przykłady dokumentów
Definiujac
˛ dokumenty przypisaliśmy je od razu na zmienne.
Dokumenty możemy wstawić do określonej bazy i kolekcji,
najpierw wybierajac
˛ aktywna˛ baz˛e (w naszym przykładzie
biblio), a nastepnie
˛
używajac
˛ polecenia insert:
use biblio
db.ksiazkiMuzyka.insert(plyta)
db.ksiazkiMuzyka.insert(ksiazka)
db.osoby.insert(osoba)
Nie trzeba jawnie tworzyć ani bazy danych ani
poszczególnych kolekcji — wszystko dzieje sie˛
automatycznie.
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
MongoDB: wyszukiwanie dokumentów
Proste wyszukiwanie dokumentów
SELECT * FROM osoby
Wyszukiwanie dokumentów o ustalonej wartości klucza:
SELECT * FROM osoby WHERE Nazwisko = "Mlodecki"
Wyszukiwanie dokumentów o ustalonych wartościach kilku
kluczy
SELECT * FROM osoby
WHERE Nazwisko = "Mlodecki" AND Wiek = 25
Ograniczenie sie˛ do ustalonego klucza wyszukanych
dokumentów
SELECT Imie FROM osoby WHERE Nazwisko = "Mlodecki"
Sortowanie dokumentów po ustalonym kluczu i
ograniczenie wyników do ustalonej liczby dokumentów
SELECT Top 3 * FROM osoby WHERE Nazwisko = "Mlodecki"
ORDER BY Imie
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy
Literatura
Sikha Bagui Achievements and Weaknesses of
Object-Oriented Databases, Journal of Object Technology,
vol. 2, no. 4, July-August 2003, str. 29–41, http:
//www.jot.fm/issues/issue_2003_07/column2.
SIGMOD Record 27(4): The Asilomar Report on Database
Research; Phil Bernstein, Michael Brodie, Stefano Ceri,
David DeWitt, Mike Franklin, Hector Garcia-Molina, Jim
Gray, Jerry Held, Joe Hellerstein, H. V. Jagadish, Michael
Lesk, Dave Maier, Jeff Naughton, Hamid Pirahesh, Mike
Stonebraker, and Jeff Ullman
Zbigniew Jurkiewicz, Instytut Informatyki UW
Bazy danych – trendy rozwojowe Wykład dla studentów matematy