2. 2
Stačí nám relační DB?
Co je NoSQL
SQL vs. NoSQL
MongoDB
Distribuovaná DB – MongoDB Replica Set
Provoz a monitoring (distribuované) MongoDB
databáze
OBSAH
3. 3
Vznik 2015 – Software, DB, Sítě, Cloud
Lukáš Korous
MFF, Numerická matematika
Data - reporting, analýza, integrace, BI - Citibank, Vodafone
HPC SW pro vědecké výpočty - Univ. of Nevada, FAU Erlangen, RICE
Plzeň
První kontakt s MongoDB: 2011
Stanislav Ulrych
MFF, Teoretická informatika
Cloud - OpenStack, Big Data, SDN - Ultimum Technologies
SW pro HFT - algoritmické obchodování - NASDAQ, NYSE, BATS
O NÁS
5. 5
V principu ANO, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis a čtení?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
6. 6
V principu ANO, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis a čtení?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
7. 7
V principu ANO, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis a čtení?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
8. 8
V principu ANO, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis a čtení?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
9. 9
V principu ANO, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis a čtení?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
10. 10
V principu ANO, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis a čtení?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
11. 11
V principu ANO, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis a čtení?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
12. 12
V principu ano, ale:
Výkon - potřebuji vysokou rychlost zpracování
požadavků na zápis?
Škálování – potřebuji umět rozšířit rozšiřovat a
zeštíhlovat DB?
Time-to-market aplikací – potřebuji rychle (agilně)
vyvíjet aplikace nad DB?
Flexibilita datového modelu – Mám nestrukturovaná
nebo proměnlivá data?
TCO - potřebuji snižovat náklady?
Failover – chci zajistit úroveň služeb pro uživatele (SLA)?
STAČÍ NÁM RELAČNÍ DB?
POKUD SI ODPOVÍME KLADNĚ, PAK JE
NOSQL PŘINEJMENŠÍM ZAJÍMAVÁ
ALTERNATIVA
13. 13
CO JE NOSQL DATABÁZE?
Data v jiných strukturách než v tabulkách propojených cizími klíči
14. 14
Data v jiných strukturách než v tabulkách propojených cizími klíči
Key-value pairs (Redis, …)
• Key: “o80273nrt2986t”
• Value: “Adam Smith”
Ale také
• Key: “o80273nrt2986t”
• Value: {
• “Name”: “NASA photo album”
• “Date”: “1st July 2015”
• “Pictures”: {
•
• …
}
}
Je na aplikaci, aby věděla co čekat jako value
CO JE NOSQL DATABÁZE?
15. 15
Data v jiných strukturách než v tabulkách propojených cizími klíči
Column family store (Cassandra, …)
PeopleBirthPlaceTable
• Row1
• “Key”: “o80273nrt2986t”
• “Name”: “Adam Smith”
• “Birthplace”: “London, UK”
• Row2
• “Key”: “vzs89q3090hnhg54”
• “Name”: “John Rumpart”
• “Birthplace”: “San Francisco, CA, USA”
PeopleFavoriteColorTable
• Row1
• “Key”: “mahw08euaytn81”
• “Name”: “Adam Smith”
• “FavoriteColor”: “Blue”
• Row2
• “Key”: “asg6a7dnoijs4g9dga”
• “Name”: “John Rumpart”
• “FavoriteColor”: “Red”
CO JE NOSQL DATABÁZE?
Denormalizace
Každý “use case” jiné
Tabulky
Klíče
16. 16
Data v jiných strukturách než v tabulkách propojených cizími klíči
Graph
Problematické pro často se měnící vztahy mezi entitami
CO JE NOSQL DATABÁZE?
17. 17
Data v jiných strukturách než v tabulkách propojených cizími klíči
Document database (MongoDB, CouchDB, …)
Aktuálně nejvšestrannější (a nejpoužívanější)
CO JE NOSQL DATABÁZE?
32. 32
DISTRIBUOVANÁ DB S MONGODB
PRIMARY server neodpovídá
SECONDARY servery volí PRIMARY mezi sebou
Driver se přepojí na zvolený PRIMARY
33. 33
DISTRIBUOVANÁ DB S MONGODB
Replica Set
2n+1 serverů => n-server fault tolerance
Velmi rychlý automatický failover
Nutné monitorovat přímo MongoDB procesy
Vnější monitoring nestačí pro výpadky
replicaSetu
Zabbix – šablony
Autentizace, autorizace přímo v DB
=> automatická replikace
Drivery pro aplikace odstiňují od interní podoby
Replica Setu
35. 35
Autentizace
LDAP
Autorizace (Role-based Access)
Podobně jako v RDBMS
SSL/TLS, Network filter
Audit
Host Security – Encryption, Permissions, FW
BEZPEČNOST V MONGODB
36. Školení MongoDB
Architektura
Datové typy
Nástroje pro správu
Instalace, Backup, Restore
User management
Replication management
Dotazování
základní (insert, find, update)
pokročilé (operátory, agregace)
indexy, map-reduce