Professional Documents
Culture Documents
CBE BD Wyklad nr6 Ver1
CBE BD Wyklad nr6 Ver1
CBE BD Wyklad nr6 Ver1
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
6 źródło: http://db-engines.com/en/ranking
DB-Engines Ranking (2)
Oct 2018 Oct 2017 Change Programming Language Ratings Change
7 źródło: http://db-engines.com/en/ranking
Czym są bazy danych NoSQL?
8
Założenia technologii NoSQL
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:
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ść
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
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:
Przykład:
”Imie” : "Adam”
33
Składnia JSON
{
"Tablica" : [
{"Imie" : "Adam" , "Nazwisko" : "Nowak"},
{"Imie" : "Piotr" , "Nazwisko" : "Kowal"},
{"Imie" : "Anna" , "Nazwisko" : "Radwan"},
34 ]
Przykład JSON
35
MongoDB
MongoDB
37
Struktura danych
38
MongoDB - komunikacja
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
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
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)
57
Podsumowanie
58
Pytania?
DZIĘKUJĘ ZA UWAGĘ