MongoDB è di gran lunga la scelta più popolare nel mondo NoSQL poiché la sua architettura distribuita consente una maggiore scalabilità e il suo modello di dati del documento offre una buona flessibilità agli sviluppatori. Quasi ogni anno viene rilasciata la versione principale di MongoDB e il 2018 non fa eccezione. MongoDB 4.0 è stato rilasciato a luglio 2018, seguito anche da altre versioni minori. Con MongoDB versione 4.0, le transazioni multi-documento e le conversioni di tipo sono ora supportate. MongoDB ha introdotto un nuovo strumento chiamato MongoDB charts (beta) e ha aggiunto il supporto del generatore di pipeline di aggregazione anche in MongoDB Compass nel 2018. In questo articolo, analizzeremo alcune interessanti funzionalità di MongoDB che sono state rilasciate nel 2018.
Transazioni ACID multi-documento
Questa era la caratteristica più attesa in MongoDB. A partire dalla versione 4.0, le transazioni acid multi-documento rispetto ai set di repliche sono pronte per la produzione e supportate da MongoDB. Tutte le transazioni MongoDB ora estendono le proprietà ACID che garantiscono l'integrità dei dati. È davvero facile aggiungere transazioni acide in qualsiasi applicazione che ne abbia bisogno e non influiscono su altre operazioni che non le richiedono. Con il supporto delle transazioni acido multi-documento, qualsiasi operazione di scrittura eseguita all'interno della transazione non sarà visibile al di fuori della transazione. Ecco alcuni comandi utili per aggiungere transazioni acid multi-documento all'interno della tua applicazione.
Funzione | Descrizione |
---|---|
Session.startTransaction() | Inizia una nuova transazione |
Session.commitTransaction() | Commette la transazione |
Session.abortTransaction() | Annulla la transazione |
Ecco un piccolo esempio di aggiunta di operazioni di transazione utilizzando Mongo shell:
akashk:PRIMARY> use mydb
akashk:PRIMARY> db.createCollection(“newColl”)
akashk:PRIMARY> session = db.getMongo().startSession()
akashk:PRIMARY> session { "id" : UUID("62525323-1cd1-4ee8-853f-b78e593b46ba") }
akashk:PRIMARY> session.startTransaction()
akashk:PRIMARY> session.getDatabase("mydb").newColl.insert({name : 'hello'})
akashk:PRIMARY> WriteResult({ "nInserted" : 1 })
akashk:PRIMARY> session.commitTransaction()
Tutte le transazioni forniscono una visualizzazione coerente dei dati in una o più raccolte nel database utilizzando l'isolamento degli snapshot. MongoDB non invierà modifiche non vincolate a nodi/repliche secondarie. Dopo aver eseguito il commit di una transazione, tutte le modifiche verranno applicate ai nodi secondari.
Ci sono molti esempi in cui possiamo usare le transazioni acido multi-documento MongoDB come,
- Trasferimento di fondi tra conti bancari
- Sistema di pagamento
- Sistema di trading
- Sistema di filiera
- Sistema di fatturazione
Cose da considerare durante l'aggiunta di transazioni
- MongoDB interromperà qualsiasi transazione eseguita per più di 60 secondi.
- Non devono essere modificati più di 1000 documenti in una singola transazione. Nessun limite per le operazioni di lettura.
- Qualsiasi transazione dovrebbe avere dimensioni inferiori a 16 MB poiché MongoDb memorizza qualsiasi transazione come una singola voce in oplog.
- Quando annulli una transazione, tutte le modifiche verranno annullate.
Nuovi operatori di conversione del tipo nella pipeline di aggregazione
Per ottenere informazioni in tempo reale sui dati e scrivere query complesse, gli sviluppatori MongoDB generalmente preferiscono creare una pipeline di aggregazione. Nella versione MongoDB 4.0, sono stati aggiunti alcuni nuovi operatori di conversione del tipo di aggregazione per eseguire query sui dati senza pulire i singoli campi.
Operatore di aggregazione | Descrizione |
---|---|
$convert | Converte il valore in un tipo specificato |
$fino alla data | Converte il valore in Data |
$toDecimale | Converte il valore in Decimale |
$da Raddoppiare | Converte il valore in Double |
$toLong | Converte il valore in Long |
$toInt | Converte il valore in intero |
$toObjectId | Converte il valore in ObjectId |
$toString | Converte il valore in String |
$ltrim | Rimuovi i caratteri non necessari dall'inizio della stringa |
$rtrim | Rimuovi i caratteri non necessari dalla fine della stringa |
$rifila | Rimuovi i caratteri non necessari da entrambi i lati della stringa |
Funzionalità estesa dei flussi di cambiamento
La funzionalità dei flussi di modifiche che fornisce aggiornamenti delle modifiche ai dati in tempo reale senza impostazioni complesse è stata introdotta nella versione 3.6. Con la versione 4.0, i flussi di modifiche possono tenere traccia delle modifiche dell'intero database o del cluster anziché di una singola raccolta ora. Oltre a questo, ora i flussi di modifica restituiscono anche il timestamp del cluster associato a un evento che può essere utile per le applicazioni server.
Migrazioni dati più rapide
Quando il database è suddiviso in partizioni del cluster, l'aggiunta e la rimozione di nodi in modo elastico da un cluster partizionato può richiedere molto tempo a volte. Il servizio di bilanciamento del cluster shard, responsabile della distribuzione dei dati su tutti gli shard, ha ottenuto un importante aggiornamento nella versione 4.0. Ora può completare la migrazione dei dati a una velocità del 40% più veloce.
Letture secondarie non bloccanti
In precedenza, MongoDB bloccava tutte le letture secondarie quando le voci di oplog venivano applicate ai nodi secondari. Ciò causava una latenza variabile delle letture secondarie. Da MongoDB 4.0, le letture secondarie sono diventate non bloccanti a causa dell'aumento del throughput del set di repliche e delle latenze di lettura migliorate.
Generatore di pipeline di aggregazione in Compass
MongoDB compass è lo strumento GUI per MongoDB per visualizzare e interrogare i dati. Quest'anno, la bussola MongoDB ha ottenuto una nuova funzionalità della pipeline di aggregazione. Fornisce un editor di query visivo per la creazione di pipeline di aggregazione multifase. Eccone l'istantanea:
Generatore di query di aggregazione in CompassOltre a questa funzione, Compass ha anche la possibilità di esportare le tue query in qualsiasi linguaggio di codice nativo di tua scelta.
Grafici MongoDB
MongoDB Charts è il nuovo strumento che consente all'utente di creare rapidamente visualizzazioni in tempo reale dei dati MongoDB. Questo strumento è creato per il modello di dati dei documenti con supporto per la gestione dei tipi, riduzioni di array e documenti nidificati. Questo strumento consente all'utente di creare dashboard grafici e condividerlo con altri utenti. I grafici MongoDB sono ora completamente integrati con MongoDB Atlas.
Altre nuove funzionalità di MongoDB
- MongoDB Stitch:piattaforma serverless per lo sviluppo di applicazioni client in grado di accedere ai servizi Mongo in modo sicuro.
- MongoDB Kubernetes:per la distribuzione di MongoDB all'interno del cluster Kubernetes.
- MongoDB Mobile:fornisce flessibilità e potenza di MongoDB in un formato compatto in modo che possa essere utilizzato nei dispositivi IOT.
- MongoDB Monitoring Cloud Service:per inviare gratuitamente i metadati di monitoraggio al monitoraggio cloud di MongoDB.
Il futuro di MongoDB
MongoDB prevede inoltre di lanciare alcune nuove funzionalità con la sua versione 4.2 che include,
- Motore WiredTiger più completo
- Gestore delle transazioni
- Transazioni in un'implementazione partizionata
- Letture temporali globali