SlideShare una empresa de Scribd logo
1 de 37
NoSQL databáze, MongoDB
Lukáš Korous Morning Talk, 1.10.2015
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
4
STAČÍ NÁM RELAČNÍ DB?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
13
CO JE NOSQL DATABÁZE?
Data v jiných strukturách než v tabulkách propojených cizími klíči
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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?
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
20
MONGODB
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
21
MONGODB
 Document database
 Nejpopulárnější NoSQL databáze
 Vlastní open-source formát BSON (Binary JSON)
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
2
SQL <-> MONGODB
Table
Row
Column
Index
Join
Collection
Document
Field
Index
Embedded or Linked
Document
~
~
~
~
~
MongoDBSQL
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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)
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
26
DISTRIBUOVANÁ DB S MONGODB
 Failover & (Read) Scaling
Replica Set
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
27
DISTRIBUOVANÁ DB S MONGODB
 Failover & (Read) Scaling
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
28
DISTRIBUOVANÁ DB S MONGODB
 SECONDARY server neodpovídá
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
29
DISTRIBUOVANÁ DB S MONGODB
 SECONDARY server neodpovídá
 PRIMARY pouze zaznamená nedostupnost
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
30
DISTRIBUOVANÁ DB S MONGODB
 Zpět (vše běží)
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
31
DISTRIBUOVANÁ DB S MONGODB
 PRIMARY server neodpovídá
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
32
DISTRIBUOVANÁ DB S MONGODB
 PRIMARY server neodpovídá
 SECONDARY servery volí PRIMARY mezi sebou
 Driver se přepojí na zvolený PRIMARY
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
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
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu
Š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
Děkuji za pozornost
Lukáš Korous Morning Talk, 1.10.2015
Brno - Holandská 878/2
Praha – Krakovská 9
www.softica.cz
info@softica.eu

Más contenido relacionado

Similar a 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
 
Závěrečný úkol KPI
Závěrečný  úkol KPIZávěrečný  úkol KPI
Závěrečný úkol KPIJan Lysý
 
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
 
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
 
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
 
Rockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off MeetingRockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off MeetingRockawayCapital
 
Javascript na steroidech
Javascript na steroidechJavascript na steroidech
Javascript na steroidechseznamVyvojari
 
Pru zkum konkurence za pomoci powerbi gopay on-line di-lna 02_2018
Pru zkum konkurence za pomoci powerbi   gopay on-line di-lna 02_2018Pru zkum konkurence za pomoci powerbi   gopay on-line di-lna 02_2018
Pru zkum konkurence za pomoci powerbi gopay on-line di-lna 02_2018Ludmila Procházková
 
PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)
PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)
PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)Tomas Moser
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Pavel Růžička
 
2015 01 12 - vkp - ka_i
2015 01 12 - vkp - ka_i2015 01 12 - vkp - ka_i
2015 01 12 - vkp - ka_iRadek Maca
 
API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)Michal Taborsky
 
Revoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěRevoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěMarketingArrowECS_CZ
 
Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018
Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018
Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018Collabim
 
Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)
Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)
Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)Jakub Fiala
 
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
 
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
 

Similar a 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
 
Závěrečný úkol KPI
Závěrečný  úkol KPIZávěrečný  úkol KPI
Závěrečný úkol KPI
 
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
 
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)
 
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
 
Rockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off MeetingRockaway AWS Hackaton – Kick-off Meeting
Rockaway AWS Hackaton – Kick-off Meeting
 
Javascript na steroidech
Javascript na steroidechJavascript na steroidech
Javascript na steroidech
 
Pru zkum konkurence za pomoci powerbi gopay on-line di-lna 02_2018
Pru zkum konkurence za pomoci powerbi   gopay on-line di-lna 02_2018Pru zkum konkurence za pomoci powerbi   gopay on-line di-lna 02_2018
Pru zkum konkurence za pomoci powerbi gopay on-line di-lna 02_2018
 
PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)
PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)
PSUG 2 - 2024-04-15: Proactive IT Monitoring & Dynamic Asset Management (Czech)
 
Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)Rich Internet Applications 2009 (Czech)
Rich Internet Applications 2009 (Czech)
 
TNPW2-2011-10
TNPW2-2011-10TNPW2-2011-10
TNPW2-2011-10
 
Úvod do Oracle cloudu
Úvod do Oracle clouduÚvod do Oracle cloudu
Úvod do Oracle cloudu
 
2015 01 12 - vkp - ka_i
2015 01 12 - vkp - ka_i2015 01 12 - vkp - ka_i
2015 01 12 - vkp - ka_i
 
API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)
 
Revoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světěRevoluce v cloudu: první autonomně řízená databáze na světě
Revoluce v cloudu: první autonomně řízená databáze na světě
 
Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018
Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018
Průzkum konkurence za pomoci POWERBI - GOPAY on-line dílna 02/2018
 
Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)
Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)
Knihovny 2020: Praktické využití principů sémantického webu (projekt Dáme práci)
 
TNPW2-2012-01
TNPW2-2012-01TNPW2-2012-01
TNPW2-2012-01
 
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
 
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í
 

NoSQL databáze, MongoDB

  • 1. NoSQL databáze, MongoDB Lukáš Korous Morning Talk, 1.10.2015 Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu
  • 2. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 4 STAČÍ NÁM RELAČNÍ DB?
  • 5. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 13 CO JE NOSQL DATABÁZE? Data v jiných strukturách než v tabulkách propojených cizími klíči
  • 14. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 20 MONGODB
  • 21. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 21 MONGODB  Document database  Nejpopulárnější NoSQL databáze  Vlastní open-source formát BSON (Binary JSON)
  • 22. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 2 SQL <-> MONGODB Table Row Column Index Join Collection Document Field Index Embedded or Linked Document ~ ~ ~ ~ ~ MongoDBSQL
  • 23. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 26 DISTRIBUOVANÁ DB S MONGODB  Failover & (Read) Scaling Replica Set
  • 27. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 27 DISTRIBUOVANÁ DB S MONGODB  Failover & (Read) Scaling
  • 28. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 28 DISTRIBUOVANÁ DB S MONGODB  SECONDARY server neodpovídá
  • 29. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 29 DISTRIBUOVANÁ DB S MONGODB  SECONDARY server neodpovídá  PRIMARY pouze zaznamená nedostupnost
  • 30. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 30 DISTRIBUOVANÁ DB S MONGODB  Zpět (vše běží)
  • 31. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 31 DISTRIBUOVANÁ DB S MONGODB  PRIMARY server neodpovídá
  • 32. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 32 DISTRIBUOVANÁ DB S MONGODB  PRIMARY server neodpovídá  SECONDARY servery volí PRIMARY mezi sebou  Driver se přepojí na zvolený PRIMARY
  • 33. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu 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. Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu Š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
  • 37. Děkuji za pozornost Lukáš Korous Morning Talk, 1.10.2015 Brno - Holandská 878/2 Praha – Krakovská 9 www.softica.cz info@softica.eu