nosql databáze, mongodb
TRANSCRIPT
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
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
4
STAČÍ NÁM RELAČNÍ DB?
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
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
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
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
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
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
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
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
CO JE NOSQL DATABÁZE?
Data v jiných strukturách než v tabulkách propojených cizími klíči
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
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?
DenormalizaceKaždý “use case” jiné
TabulkyKlíče
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
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?
18
SQL (ACID)
Atomicity: all-or-nothing
Consistency: all-the-time? yes
Isolation: discrete (vs. continuous)
Durability
NoSQL (BASE)
Basically Available: some response guaranteed
Soft State: continuous (vs. discrete)
Eventual Consistency: all-the-time? no
SQL VS. NOSQL
19
NoSQL SE NEHODÍ NA: Business Intelligence, Reporting, Analýza, DWH, DM
E-shop, Online banking, Stocks trading, … ($$$)
NoSQL (PODSTATNĚ) ZAOSTÁVÁ ZA SQL (RDBMS) v: Složité časté dotazování
• SQL: 20 let optimalizace JOINů
Méně pokročilé vyspělé funkcionality out-of-the-box• SQL: CURSOR, TRIGGER, OVER
(NA) CO NENÍ NOSQL?
20
MONGODB
21
MONGODB
Document database
Nejpopulárnější NoSQL databáze
Vlastní open-source formát BSON (Binary JSON)
22
SQL <-> MONGODB
TableRow
ColumnIndex
Join
CollectionDocumentFieldIndexEmbedded or LinkedDocument
~~~~~
MongoDBSQL
23
SQL <-> MONGODB : SELECT
SELECT * FROMusers
WHEREage > 25 ANDage <= 50
ORDER BYheight
db.users.find({
age:{ $gt: 25, $lte: 50 }}).sort({
height: 1})
SQL MongoDB
24
SQL <-> MONGODB : UPDATE #1
UPDATEusers
SETexperience = ‘master’
WHEREage > 40 ANDage <= 50
db.users.update ({ age:{ $gt: 40, $lte: 50 } },{ $set: { experience:‘master’} },{ multi: true }
)
SQL MongoDB
25
SQL <-> MONGODB : UPDATE #2
UPDATEusers
SETlevel = level + 1
WHEREage > 40 ANDage <= 50
db.users.update ({ age:{ $gt: 40, $lte: 50 } },{$inc: { level : 1} },{ multi: true }
)
SQL MongoDB
*$inc: operator(http://docs.mongodb.org/manual/reference/
operator)
26
DISTRIBUOVANÁ DB S MONGODB
Failover & (Read) Scaling
Replica Set
27
DISTRIBUOVANÁ DB S MONGODB
Failover & (Read) Scaling
28
DISTRIBUOVANÁ DB S MONGODB
SECONDARY server neodpovídá
29
DISTRIBUOVANÁ DB S MONGODB
SECONDARY server neodpovídá PRIMARY pouze zaznamená nedostupnost
30
DISTRIBUOVANÁ DB S MONGODB
Zpět (vše běží)
31
DISTRIBUOVANÁ DB S MONGODB
PRIMARY server neodpovídá
32
DISTRIBUOVANÁ DB S MONGODB
PRIMARY server neodpovídá SECONDARY servery volí PRIMARY mezi sebou Driver se přepojí na zvolený PRIMARY
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
34
Map-Reduce Nativní podpora map-reduce algoritmu
Capped Collections Superrychlá in-memory kolekce
Aggregation Pipeline Komplexnější dotazování
Sharded Cluster Cluster pro škálování Write operací
POKROČILÉ VLASTNOSTI MONGODB
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
Š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