CBE BD Wyklad nr6 Ver1

You might also like

Download as pdf or txt
Download as pdf or txt
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