MongoDB è un database non relazionale, orientato ai documenti. Classificato come un database di tipo NoSQL, MongoDB si allontana dalla struttura tradizionale basata su tabelle dei database relazionali in favore di documenti in stile JSON con schema dinamico (MongoDB chiama il formato BSON), rendendo l'integrazione di dati di alcuni tipi di applicazioni più facile e veloce.
Lo scopo del MongoDB User Group Padova è quello di condividere esperienze sulla tecnologia MongoDB.
Questa presentazione, usata durante il primo evento dello User Group, è stata usata per introdurre i partecipanti sulle procedure di installazione ed i concetti di base su MongoDB.
7. Agilità & Flessibilità!
• Evoluzione semplice del modello di dati
• Adattamento e cambi rapidi sulla struttura dati
Rappresentazione dati intuitiva e naturale!
• Sviluppatori sono più produttivi
• Le applicazioni risultano più semplici da gestire
Riduzione di operazioni di join e disk seek!
• La programmazione è più semplice
• Maggiori performance
Benefici del modello a documenti
13. Terminologia
Mongod:
Mongos:
Mongo:
E’ il processo server che esegue il database e che rende disponibile tutte i servizi
per la creazione di database, collections, l’inserimento di documenti e le relative
funzioni di interrogazione
E’ il servizio di routing per processare le query provenienti dallo strato applicativo e che
determina la locazione dei dati richiesti in una configurazione Sharding.
Rappresenta l’eseguibile per avviare la shell Javascript per interagire con database,
collezioni e documenti che possono essere interrogati e manipolati da riga di comando.
14. Avvia MongoDB
1
2
3
4
Import della public key usata dal gestore di pacchetti
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
Creare il “List File” per MongoDB
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist
10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
Aggiornare il gestore di pacchetti di Ubuntu
sudo apt-get update
Installare il pacchetto di MongoDB
sudo apt-get install mongodb-org
sudo apt-get install mongodb-org=2.4.3
15. Semplici comandi per gestire MongoDB
sudo service mongod start
sudo chkconfig mongod on
sudo service mongod stop
1
2
3
dopo l’avvio del server mongoDB verificare lo stato di avvio consultando il log
!
!
/var/log/mongodb/mongod.log
16. MongoDB progettato per il Cloud
AWS Marketplace fornisce delle AMI con MongoDB già configurato
19. Principali Comandi:
use <nome db>
show collections
db.<nomeCollection>.insert({…})
db.<nomeCollection>.findOne()
db.<nomeCollection>.update(<criterio>, {…})
db.<nomeCollection>.remove(<criterio>, {…})
28. • Quanto punti di failure vuoi avere?
• Quanti sonni tranquilli vuoi dormire?
• Mai avuto problemi di connettività?
• Più nodi facilitano l’uso dei dati in modo diverso
Perchè replica dei dati
38. Come funziona la replica ?
oplog: contiene la lista di tutte le operazioni di scrittura e aggiornamenti fatti nel nodo primario
6 7 8 9 10 11 12 13
6 7 8 9 10
6 7
Primary
Secondary #1
Secondary #2
query per oplogs {$gt: 10}
query per oplogs {$gt: 7}
42. • Network acknowledgement
• Wait for error
• Wait for journal sync
• Wait for replication
Write Concern
Write concern è una configurazione del client usata per definire quanto sicuro deve essere
la scrittura prima che l’applicazione possa continuare le proprie attività.
Write Concern
acknowledged unacknowledged
Non funziona tramite shell
Possibile tramite librerie programm
47. Tagging
• Controllare dove i dati vengono scritti e/o letti
• Ogni membro del RS può avere uno o più TAG
• tags: {dc: “ny”}
• tags: {dc: “ny”, rack: “zero12rack”}
• Permette di definire le regole di Write Concerns
• E’ possibile cambiare le politiche senza modificare il codice
51. • Solamente il Primary ( conf. di default )
• Preferenza per il primario
• Solamente i secondari
• Preferenza ai secondari
• Il più vicino
Modalità di lettura da ReplicaSet
53. Distribuzione dei dati
( Sharding )
Shard
Primary
Secondary
Secondary
Shard
orMongod
• E’ un nodo di un cluster
!
• Può essere un singolo mongod oppure un Replica Set
55. Scalabilità
• Aumento della capacità nel momento di necessità
!
• Distribuzione delle soluzioni su cloud, on-premises o miste
!
• Aumento delle performance semplice
64. 1. Creare un account su mms.mongodb.com
2. Installare agent sui singoli nodi del database
3. Aggiungere gli hosts
4. Opzionale: aggiungere il monitoraggio risorse
hardware in ogni singolo nodo
5. Opzionale: abilitare funzioni di jogging e profilazione
!
Info: mms.mongodb.com/help/monitoring/install/
Setup
67. Cosa significa fare Tuning ?
• Identificare il problema e stabilire il comportamento accettabile
• Misurare le performance di componenti concorrenti
• Trovare il collo di bottiglia
• Rimuovere il collo di bottiglia
• Testare nuovamente e confermare le performance
68. - Uso della memoria
- Opcounters
- Lock %
- Queues
- Background flush average
- Replication stats
Metriche consigliate da controllare
69. Esempio utilità monitorare opscount
~1500 ops per minuto (opcounters)
0.1 MB per oggetto ( dimensione media )
!
~1500 ops/min / 60 secondi * 0.1 MB/op * 8b/B
=~ 20 mbps banda richiesta