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?
Denormalizace
Každý “use case” jiné
Tabulky
Klíč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)
2
SQL <-> MONGODB
Table
Row
Column
Index
Join
Collection
Document
Field
Index
Embedded or Linked
Document
~
~
~
~
~
MongoDBSQL
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
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
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)
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
NoSQL databáze, MongoDB

NoSQL databáze, MongoDB

  • 2.
    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
  • 4.
  • 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 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?
  • 18.
    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.
    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.
  • 21.
    21 MONGODB  Document database Nejpopulárnější NoSQL databáze  Vlastní open-source formát BSON (Binary JSON)
  • 22.
  • 23.
    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)
  • 26.
    26 DISTRIBUOVANÁ DB SMONGODB  Failover & (Read) Scaling Replica Set
  • 27.
    27 DISTRIBUOVANÁ DB SMONGODB  Failover & (Read) Scaling
  • 28.
    28 DISTRIBUOVANÁ DB SMONGODB  SECONDARY server neodpovídá
  • 29.
    29 DISTRIBUOVANÁ DB SMONGODB  SECONDARY server neodpovídá  PRIMARY pouze zaznamená nedostupnost
  • 30.
    30 DISTRIBUOVANÁ DB SMONGODB  Zpět (vše běží)
  • 31.
    31 DISTRIBUOVANÁ DB SMONGODB  PRIMARY server neodpovídá
  • 32.
    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
  • 34.
    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.
    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ástrojepro správu Instalace, Backup, Restore User management Replication management Dotazování  základní (insert, find, update)  pokročilé (operátory, agregace)  indexy, map-reduce