You are on page 1of 59

Bazy Danych

dr inż. Roman Ptak


Katedra Informatyki Technicznej
roman.ptak@pwr.edu.pl
Bazy danych nierelacyjne –
zastosowanie i architektura

Wykład 6
Plan wykładu 6.

⚫ Bazy NoSQL
⚫ Redis
⚫ Cassandra
⚫ JSON
⚫ MongoDB
⚫ Zastosowania

3
Bazy NoSQL
Rodzaje/Modele baz danych:

⚫ hierarchiczne,
⚫ sieciowe (grafowe),
⚫ relacyjne,
⚫ obiektowe,
⚫ obiektowo-relacyjne (SQL3),
⚫ sieci semantyczne,
⚫ temporalny model danych,
⚫ NoSQL.
5
DB-Engines Ranking
Nov 2019 Nov 2018 Change Programming Language Ratings Change

1 1 Oracle 1336.07 +34.96


2 2 MySQL 1266.28 +106.39
3 3 Microsoft SQL Server 1081.91 +30.36
4 5 PostgreSQL 491.07 +50.83
5 4 MongoDB 413.18 +43.70
6 6 DB2 172.60 -7.27
7 8  Elasticsearch 148.40 +4.94
8 7  Redis 145.24 +1.06
9 9 Microsoft Access 130.07 -8.36
10 11  Cassandra 123.23 +1.48

6 źródło: http://db-engines.com/en/ranking
DB-Engines Ranking (2)
Oct 2018 Oct 2017 Change Programming Language Ratings Change

1 1 Oracle 1319.27 -29.54


2 2 MySQL 1178.12 -120.71
3 3 Microsoft SQL Server 1058.33 -151.99
4 5 PostgreSQL 419.39 +46.12
5 4 MongoDB 363.19 +33.79
6 6 DB2 179.69 -14.90
7 8  Redis 145.29 +23.24
8 7  Elasticsearch 142.33 +22.09
9 9  Microsoft Access 136.80 +7.35
10 11  Cassandra 123.39 -1.40

7 źródło: http://db-engines.com/en/ranking
Czym są bazy danych NoSQL?

⚫ No SQL lub Not Only SQL


⚫ Nierelacyjny model danych
⚫ Brak języka SQL (np. JOIN)

8
Założenia technologii NoSQL

1. Odejście od założenia ACID bowiem uznano, że


są one zbyt restrykcyjne.
2. Rezygnacja z wielu składników (elementów) baz
relacyjnych, gdyż ścisły schemat bazy często bywa
wadą.
3. Zmniejszenie znaczenia schematów danych, gdyż
największą uwagę powinno się zwrócić na dane.

9
ACID
⚫ ang. Atomicity, Consistency, Isolation, Durability
⚫ Atomowość transakcji oznacza, że albo wykonujemy ją w
całości albo wcale. Nie może dojść do sytuacji, w której wykona
się część zapytań.
⚫ Spójność oznacza, że po wykonaniu transakcji system będzie
spójny, czyli nie zostaną naruszone żadne zasady integralności.
⚫ Izolacja transakcji oznacza, iż jeżeli dwie transakcje wykonują
się współbieżnie, to zazwyczaj (zależnie od poziomu izolacji)
nie widzą zmian przez siebie wprowadzanych.
⚫ Trwałość danych oznacza, że system potrafi uruchomić się i
udostępnić spójne, nienaruszone i aktualne dane zapisane w
ramach zatwierdzonych transakcji, na przykład po nagłej awarii
zasilania

10
Cechy baz NoSQL
⚫ Sposób przechowywania danych można
dobrać w zależności od ich specyfiki.
⚫ Przechowują bogatą strukturę bardzo blisko
spokrewnionych danych, które zostały
potraktowane jako jednostki (agregacja).
⚫ Łatwo się skalują, gdyż mogą działać na
rozproszonej architekturze (nie posiadają
złączeń), którą daje się łatwo poszerzyć o
kolejne jednostki (ang. node).

11
Cechy baz NoSQL (2)
⚫ Są przystosowane do pracy na klastrach
(efektywna praca w klastrach w
przeciwieństwie do baz relacyjnych), nie
wszystkie jednak z nich korzystają.
⚫ Istnieją również bazy grafowe, w którym
model dystrybucji jest podobny do baz
relacyjnych, lecz model danych jest inny,
dzięki czemu można w nich przechowywać
dane zawierające skomplikowane relacje.
⚫ Ich budowa jest przystosowana do potrzeb
12 aplikacji webowych powstałych po 2000 r.
Paradygmaty NoSQL
⚫ Teoria CAP: Consistency, Avalibility,
Partition-tolerance
⚫ BASE: Basically Avalible, Soft-state,

Eventualy-consistenct
⚫ Basically available – bazy cechują się dość

dużą dostępnością
⚫ Eventual consistency/Soft state – po pewnym
czasie dane zostaną zsynchronizowane.

13
Rodzaje baz NoSQL:
⚫ klucz-wartość (ang. key-value)
⚫ kolumnowe (ang. column oriented stores)
⚫ dokumentowe (document stores, documen-
oriented)
⚫ bazy oparte na grafach (ang. graph stores)
⚫ obiektowe (ang. object databases)
⚫ inne bazy danych - zazwyczaj rozwiązania
hybrydowe

14
Przykłady baz NoSQL:

⚫ Klucz-wartość: np. Redis,


⚫ Dokumentowe: np. MongoDB,
⚫ Kolumnowe: np. Cassandra,
⚫ Grafowe: np. Neo4J,
⚫ Obiektowe: np. ObjectStore.

15
Bazy klucz-wartość
Klucz-wartość

⚫ Para klucz-wartość
⚫ Najprostsza postać bazy danych

Klucz Wartość
K1 AAA
K2 AAA,BBB,CCC
K3 1924
K4 AAA,2,2019-11-19
K5 3,DDD,4567

17
Baza klucz-wartość

⚫ ang. Key-value database


⚫ Baza bez schematu
⚫ Zelety: szybkie przetwarzanie (zapis, odczyt)
prostych danych
⚫ Wady: stosunkowo mała możliwość segregacji
danych
⚫ Np. Redis, Amazon DynamoDB, Memcached,
Hazelcast, Project Voldemor,

18
Redis
⚫ Nierelacyjny SZBD – baza klucz-wartość
(ang. key-value databese)
⚫ Platforma sprzętowa: wieloplatformowa
⚫ Pierwsze wydanie: 2009 r.
⚫ Aktualna wersja: 4.2.0
⚫ Licencja: otwarta (BSD)
⚫ Strona WWW: redis.io
⚫ Repozytorium: github.com/antirez/redis

19
Redis
⚫ Dane w pamięci RAM (ang. in memory
database)
Redis obsługuje typy danych:
⚫ Ciągi (strings) – tekst lub dane binarne
⚫ Listy (lists) – zbiory ciągów w kolejności dodania
⚫ Zestawy (sets) – nieuporządkowane zestawy ciągów
⚫ Uporządkowane zestawy (sorted sets) – zestawy
uporządkowane według wartości
⚫ Hashe (hashes) – struktury przechowywania pól i
wartości
⚫ Bitmapy (bitmaps) – typ danych dla operacji na poziomie
bitowym
⚫ Hyperlogi (HyperLogLogs) – struktury do szacowania
unikalnych elementów
21
Bazy dokumentowe
Bazy dokumentowe
⚫ Baza zorientowana na przechowywanie
dokumentów
⚫ Zalety: duża elastyczność, co pozwala na
wierne odtwarzanie danych rzeczywistych w
systemach informatycznych.
⚫ Sposób prezentacji i zapisu danych jest bardziej
czytelny niż w innych typach baz.
⚫ Np. MongoDB, CouchDB, MarkLogic, Lotus
Notes
Dokument
⚫ Dokumenty zawierają i kodują dane w
niektórych standardowych formatach lub
kodowaniach tj.:
⚫ XML,
⚫ JSON,
⚫ YAML,
⚫ formaty binarne tj. BSON
Bazy kolumnowe
Bazy kolumnowe
⚫ Kolumnowa reprezentacja danych
⚫ CODB (ang. column-oriented DBMS)
⚫ Zalety: zbieranie i przetwarzanie dużej ilości
prostych danych
⚫ Np. Apache Cassandra, Google BigTable,
HBase, Microsoft Azure Cosmos DB

26
Bazy „wierszowe” a kolumnowe
Imię Nazwisko Wiek Wzost Id Imię Id Nazwisko

Jan Nowak 23 180 1 Jan 1 Nowak


2 Piotr 2 Kowalski
Piotr Kowalski 32 175
3 Janina 3 Kowal
Janina Kowal 27 170
4 Anna 4 Szybka
Anna Szybka 50 167 5 Adam 5 Wolny
Adam Wolny 44 182 Id Wiek Id Wzrost
1 23 1 180
2 32 2 175
3 27 3 170
4 50 4 167
27 5 44 5 182
Bazy kolumnowe
⚫ Zastosowania w hurtowniach danych
⚫ Big Data
⚫ W Big Data, brak spójności nie jest problemem,
ponieważ zwykle dane się tylko odczytuje,
dodaje a nie modyfikuje już istniejące.

28
Cassandra
⚫ Nierelacyjny SZBD – kolumnowa
⚫ Platforma sprzętowa: wieloplatformowa
⚫ Pierwsze wydanie: 2008 r.
⚫ Aktualna wersja: 3.11.5
⚫ Stworzone i wykorzystywana w Facebook
⚫ Licencja: Apache 2.0
⚫ Strona WWW: cassandra.apache.org

29
JSON
JSON
⚫ JavaScript Object Notation
⚫ Lekki format wymiany danych komputerowych.
⚫ JSON jest formatem tekstowym, bazującym na
podzbiorze języka JavaScript.
⚫ Częściowo zastąpił XML, …
⚫ Format został opisany w dokumencie RFC 4627.

31
Składnia JSON
Bazy danych
JSON powstał w oparciu o dwie struktury:

⚫ Zbiór par nazwa/wartość


⚫ W różnych językach jest to implementowane jako obiekt,
rekord, struktura, słownik, tabela hash, lista z kluczem,
albo tabela asocjacyjna.

Przykład:

”Imie” : "Adam”

⚫ Uporządkowana lista wartości


⚫ W większości języków implementuje się to za pomocą
tabeli, wektora, listy, lub sekwencji.

33
Składnia JSON

{ "Imie" : "Adam" , "Nazwisko" : "Nowak"}

{
"Tablica" : [
{"Imie" : "Adam" , "Nazwisko" : "Nowak"},
{"Imie" : "Piotr" , "Nazwisko" : "Kowal"},
{"Imie" : "Anna" , "Nazwisko" : "Radwan"},
34 ]
Przykład JSON

35
MongoDB
MongoDB

⚫ Nierelacyjny SZBD – baza dokumentowa


⚫ Platforma sprzętowa: wieloplatformowa
⚫ Pierwsze wydanie: 2009 r.
⚫ Aktualna wersja: 4.2.0
⚫ Licencja: różne
⚫ Strona WWW: www.mongodb.com
⚫ Repozytorium: github.com/mongodb/mongo

37
Struktura danych

dokument → kolekcja → baza danych

⚫ Dokument – BSON, 16 MB, zawsze zawiera pole _id


⚫ Kolekcja – brak struktury dokumentów
⚫ Baza danych – zawiera pliki

38
MongoDB - komunikacja

⚫ Sterowniki: C, C++, C#, Java, JavaScript, Perl, PHP,


Python, Ruby, Erlang, Scala
⚫ Język komunikacji realizuje CRUD

39
MongoDB - uruchamianie

⚫ Uruchamiamy konsolę
cmd
⚫ Przechodzimy do katalogu bin
cd c:\Program Files\MongoDB\Server\3.2\bin
⚫ Uruchamiamy demona mongo
mongod.exe
⚫ Analogicznie w drugiej konsoli cmd uruchamiamy
powłokę (shell) mongo
mongo.exe

40
Uruchamianie „demona”

41
Uruchamianie „klienta”

42
MongoDB - polecenia

⚫ db – aktualnie używana baza danych


⚫ use przykladowa_baza – przełączanie,
tworzenie bazy danych
⚫ show dbs – wyświetlenie baz danych
⚫ show collections – wyświetlenie kolekcji
⚫ help
⚫ exit

43
MongoDB – polecenia CRUD

⚫ db.kolekcja.insert(<JSON>)
⚫ db.kolekcja.find()
⚫ db.kolekcja.update()
⚫ db.kolekcja.remove()

44
Przykład
use pojazdy
db.auta.insert({marka: "BMW"})
db.auta.insert({marka: "Fiat"})
show collections
db.auta.find()
db.auta.find({marka: "Fiat"})

45
MongoDB Compass
⚫ GUI dla MongoDB

46
Przykładowe narzędzie on-line

https://www.jdoodle.com/online-mongodb-terminal

47
JDOODLE (on-line)

48
Zastosowania
Zastosowania baz dokumentowych
• Zarządzanie dokumentami
• Aplikacje WWW (WEB)

50
WWW - przekazywanie danych
• Aplikacje WEBowe
• HTTP (ang. HyperText Transfer Protocol)
• HTTPS

➔ REST - doświadczenia przy specyfikacji protokołu


HTTP → styl architektury oprogramowania dla
systemów rozproszonych

51
Metody HTTP/1.1
1. GET – pobranie zasobu
2. HEAD – pobranie informacji o zasobie
3. POST – przesłanie danych do serwera
4. PUT – przesłanie danych w celu aktualizacji
5. DELETE – żądanie usunięcia zasobu
6. OPTIONS – informacje o opcjach w kanale
komunikacyjnym
7. TRACE – diagnostyka kanału komunikacyjnego
8. PATCH – aktualizacja części danych
9. CONNECT – żądanie do serwerów pośredniczących
52
Metody HTTP
• Metoda GET
• parametr=wartość
• np.:
sklep.php?kategoria=samochod&strona=2
• dane przesłane tą metodą trafiają do tablicy $_GET
• Metoda POST
• dane metodą POST przesyłane są w obszarze danych
pakietu i umieszczane w superglobalnej tablicy
$_POST
• możliwość przekazywania wielu parametrów

53
GET – cechy:
• URL przechowuje pewien stały stan aplikacji,
zawsze można do niego wrócić (np. przez
zapisaną zakładkę w przeglądarce),
• zapytania z GET mogą być cache'owane,
pozostają też w historii przeglądarki,
• zapytania z GET mogą być łatwo
rozpowszechniane.

54
GET a POST
• GET stosujemy dla akcji bezpiecznych
• POST stosujemy dla akcji niebezpiecznych

55
HTTP a stany procesów
• HTTP protokołem bezstanowym
• Rozwiązanie:
• wprowadzenie mechanizmu ciasteczek,
• sesje po stronie serwera,
• ukryte parametry (gdy aktualna strona zawiera
formularz),
• parametry umieszczone w URL-u (jak np.
/index.php?userid=3).

56
REST (ang. REpresentational State Transfer)

• pol. zmiana stanu poprzez reprezentacje


• RESTful web services
• pomysł Roya Fieldinga z 2000 r.
• Każda z usług opisania jest osobnym adresem
URL
• Używa metod HTTP(S) do mapowania operacji
CRUD (create, retrieve, update, delete)
• Wymiana danych w formacie JSON

57
Podsumowanie

• Wiele rodzajów baz danych


• Dominują bazy ralacyjne
• Popularność baz NoSQL
• Kiedy stosować? - W sytuacjach, gdy jest
potrzebny wysoce skalowalny silnik BD.

58
Pytania?

DZIĘKUJĘ ZA UWAGĘ

You might also like