2
Stačí námrelač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
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 NOSQLDATABÁZE?
Data v jiných strukturách než v tabulkách propojených cizími klíči
14.
14
Data v jinýchstrukturá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ýchstrukturá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ýchstrukturá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ýchstrukturá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?
2
SQL <-> MONGODB: SELECT
SELECT * FROM
users
WHERE
age > 25 AND
age <= 50
ORDER BY
height
db.users
.find({
age:{ $gt: 25, $lte: 50 }
})
.sort({
height: 1
})
SQL MongoDB
24.
2
SQL <-> MONGODB: UPDATE #1
UPDATE
users
SET
experience = ‘master’
WHERE
age > 40 AND
age <= 50
db.users
.update (
{ age:{ $gt: 40, $lte: 50 } },
{ $set: { experience:‘master’} },
{ multi: true }
)
SQL MongoDB
25.
2
SQL <-> MONGODB: UPDATE #2
UPDATE
users
SET
level = level + 1
WHERE
age > 40 AND
age <= 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)
32
DISTRIBUOVANÁ DB SMONGODB
PRIMARY server neodpovídá
SECONDARY servery volí PRIMARY mezi sebou
Driver se přepojí na zvolený PRIMARY
33.
33
DISTRIBUOVANÁ DB SMONGODB
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