SlideShare a Scribd company logo
1 of 37
Download to read offline
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

More Related Content

Similar to NoSQL databáze, MongoDB

Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2MarketingArrowECS_CZ
 
EXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaci
EXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaciEXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaci
EXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaciTECHNODAT, CAE - systémy, s.r.o.
 
Relační databáze efektivně z pohledu vývojáře
Relační databáze efektivně z pohledu vývojářeRelační databáze efektivně z pohledu vývojáře
Relační databáze efektivně z pohledu vývojářeJan Smitka
 
Profinit: Prezentace snídaně integrace aplikací 2016
Profinit: Prezentace snídaně integrace aplikací 2016Profinit: Prezentace snídaně integrace aplikací 2016
Profinit: Prezentace snídaně integrace aplikací 2016Profinit
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)almadcz
 
Glami - jak řešíme performance, aneb jak neshodit web TV reklamou
Glami - jak řešíme performance, aneb jak neshodit web TV reklamouGlami - jak řešíme performance, aneb jak neshodit web TV reklamou
Glami - jak řešíme performance, aneb jak neshodit web TV reklamouPetr Bechyně
 
Prague data management meetup 2018-04-17
Prague data management meetup 2018-04-17Prague data management meetup 2018-04-17
Prague data management meetup 2018-04-17Martin Bém
 
Big data v infrastruktuře
Big data v infrastruktuřeBig data v infrastruktuře
Big data v infrastruktuřeKamil Brzak
 
Pracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutáchPracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutáchProfinit
 
Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24Martin Bém
 
Hostujeme v cloudu
Hostujeme v clouduHostujeme v cloudu
Hostujeme v cloudutwobits
 
2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-fullProfinit
 
Bezpečnost pro vaše data s minimem úsilí
Bezpečnost pro vaše data s minimem úsilíBezpečnost pro vaše data s minimem úsilí
Bezpečnost pro vaše data s minimem úsilíMarketingArrowECS_CZ
 
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změnySpusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změnyMarketingArrowECS_CZ
 
Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)
Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)
Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)Tomas Solar
 
BIInfrastructure
BIInfrastructureBIInfrastructure
BIInfrastructureJan Bízik
 

Similar to NoSQL databáze, MongoDB (20)

Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2Co přináší Oracle Database 12c Release 2
Co přináší Oracle Database 12c Release 2
 
SAS - Integrace dat
SAS - Integrace datSAS - Integrace dat
SAS - Integrace dat
 
EXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaci
EXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaciEXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaci
EXALEAD OnePart pro rychlé vyhledávání v CAD datech a technické dokumentaci
 
Relační databáze efektivně z pohledu vývojáře
Relační databáze efektivně z pohledu vývojářeRelační databáze efektivně z pohledu vývojáře
Relační databáze efektivně z pohledu vývojáře
 
Apex day 1.0 speedy case study_kamil schvarcz
Apex day 1.0 speedy case study_kamil schvarczApex day 1.0 speedy case study_kamil schvarcz
Apex day 1.0 speedy case study_kamil schvarcz
 
CSAS_v06
CSAS_v06CSAS_v06
CSAS_v06
 
Profinit: Prezentace snídaně integrace aplikací 2016
Profinit: Prezentace snídaně integrace aplikací 2016Profinit: Prezentace snídaně integrace aplikací 2016
Profinit: Prezentace snídaně integrace aplikací 2016
 
node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)node.js: zápisky z fronty (Battle guide to node.js)
node.js: zápisky z fronty (Battle guide to node.js)
 
Glami - jak řešíme performance, aneb jak neshodit web TV reklamou
Glami - jak řešíme performance, aneb jak neshodit web TV reklamouGlami - jak řešíme performance, aneb jak neshodit web TV reklamou
Glami - jak řešíme performance, aneb jak neshodit web TV reklamou
 
TNPW2-2011-10
TNPW2-2011-10TNPW2-2011-10
TNPW2-2011-10
 
Prague data management meetup 2018-04-17
Prague data management meetup 2018-04-17Prague data management meetup 2018-04-17
Prague data management meetup 2018-04-17
 
Big data v infrastruktuře
Big data v infrastruktuřeBig data v infrastruktuře
Big data v infrastruktuře
 
Pracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutáchPracovní snídaně: Zavádíme integrační platformu v 75 minutách
Pracovní snídaně: Zavádíme integrační platformu v 75 minutách
 
Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24Prague data management meetup 2017-10-24
Prague data management meetup 2017-10-24
 
Hostujeme v cloudu
Hostujeme v clouduHostujeme v cloudu
Hostujeme v cloudu
 
2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full
 
Bezpečnost pro vaše data s minimem úsilí
Bezpečnost pro vaše data s minimem úsilíBezpečnost pro vaše data s minimem úsilí
Bezpečnost pro vaše data s minimem úsilí
 
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změnySpusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
 
Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)
Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)
Instalace databáze Oracle 12.1.0.2.0 na Oracle Enterprise linux 7.0 (OEL70)
 
BIInfrastructure
BIInfrastructureBIInfrastructure
BIInfrastructure
 

NoSQL databáze, MongoDB

  • 1.
  • 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?
  • 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?
  • 21. 21 MONGODB  Document database  Nejpopulárnější NoSQL databáze  Vlastní open-source formát BSON (Binary JSON)
  • 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 S MONGODB  Failover & (Read) Scaling Replica Set
  • 27. 27 DISTRIBUOVANÁ DB S MONGODB  Failover & (Read) Scaling
  • 28. 28 DISTRIBUOVANÁ DB S MONGODB  SECONDARY server neodpovídá
  • 29. 29 DISTRIBUOVANÁ DB S MONGODB  SECONDARY server neodpovídá  PRIMARY pouze zaznamená nedostupnost
  • 30. 30 DISTRIBUOVANÁ DB S MONGODB  Zpět (vše běží)
  • 31. 31 DISTRIBUOVANÁ DB S MONGODB  PRIMARY server neodpovídá
  • 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
  • 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á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