MongoDB è un database NoSQL open source. In quanto database non relazionale, è in grado di elaborare dati strutturati, semi-strutturati e non strutturati. Utilizza un modello di dati non relazionale e orientato ai documenti e un linguaggio di query non strutturato.
MongoDB è altamente flessibile e consente di combinare e memorizzare più tipi di dati. Inoltre, memorizza e gestisce quantità di dati maggiori rispetto ai database relazionali tradizionali. MongoDB utilizza un formato di storage dei documenti definito BSON, che è una forma binaria di JSON (JavaScript Object Notation) in grado di ospitare più tipi di dati.
Come funziona MongoDB?
MongoDB memorizza gli oggetti di dati in raccolte e documenti, invece che nelle tabelle e righe utilizzate nei database relazionali tradizionali. Le raccolte comprendono insiemi di documenti, che sono l'equivalente delle tabelle di un database relazionale. I documenti sono costituiti da coppie chiave-valore, che sono l'unità di base dei dati in MongoDB.
La struttura di un documento può essere modificata semplicemente aggiungendo nuovi campi o eliminando quelli esistenti. I documenti possono definire una chiave primaria come identificatore univoco e i valori possono includere vari tipi di dati, compresi altri documenti, array e array di documenti.
Come funziona la ricerca testuale in MongoDB?
Una funzionalità chiave di MongoDB è la ricerca di testo, che consente di eseguire query in campi stringa per trovare testo o parole specifiche. Una ricerca di testo può essere eseguita utilizzando un indice di testo o l'operatore $text.
Un indice di testo può essere una stringa o un array di elementi di stringa. Per eseguire una ricerca di testo, la raccolta deve contenere un indice di testo. Una raccolta può avere un solo indice di testo e un singolo indice di testo può essere applicato a più campi.
È possibile eseguire una ricerca su una raccolta con un indice di testo utilizzando l'operatore $text. L'operatore $text tokenizza ogni stringa di ricerca con spazi vuoti e tratta tutti i segni di punteggiatura, tranne "–" e "\", come delimitatori. Dopo che la stringa di ricerca è stata tokenizzata, l'operatore esegue l'operazione di OR logico sui token.
Tre esempi di query MongoDB
MongoDB utilizza MongoDB Query Language (MQL) per recuperare i dati dal database. È facile da usare e funziona in modo simile a SQL con operazioni CRUD per creare, leggere, aggiornare ed eliminare documenti. I nomi delle funzioni seguono la sintassi:
<database>.<collection_name>. <operation>.
Di seguito sono riportati tre esempi che lo dimostrano nella pratica:
INSERT: crea o inserisce un nuovo documento in una raccolta. Se la raccolta non esiste, ne viene creata una nuova.
db.collection.insertOne() inserisce un documento in una raccolta.
db.collection.insertMany() inserisce più documenti contemporaneamente in una raccolta.
Ecco come appare l'inserimento di un documento nella raccolta dei clienti:
db.customer.insertOne (
{
firstname: “Jane”,
lastname: “Mason”
Address: “232 Petunia Drive, Atlanta, GA, 30311”
}
FIND: esegue una query su una raccolta di documenti. È possibile applicare filtri e criteri di query per trovare documenti specifici.
db.collection.find()
Il codice seguente trova tutti i documenti nella raccolta del cliente:
db.customer.find()
UPDATE: modifica i documenti esistenti in una raccolta.
db.collection.updateOne()
db.collection.updateMany()
db.collection.replaceOne()
Ecco come aggiornare un documento nella raccolta del cliente:
db.customer.updateOne(
{ firstname: “Jane” },
{
$set: { “address”, “5 Lavender Ave, Atlanta, GA, 30311”}
}
)
I tre principali vantaggi di MongoDB
Flessibilità
MongoDB ha un'architettura a schema dinamico che funziona con dati e storage non strutturati. Poiché i dati sono memorizzati in documenti flessibili simili a JSON, lo schema del database non deve essere predefinito e gli schemi possono essere modificati in modo dinamico senza causare downtime.
Con il formato di dati BSON di MongoDB, gli oggetti di una raccolta possono avere diversi insiemi di campi e quasi ogni tipo di struttura di dati può essere modellata e manipolata. Per questo motivo, il modello di database flessibile di MongoDB è particolarmente vantaggioso quando i requisiti di business e di dati cambiano.
Partizionamento
MongoDB offre scalabilità orizzontale tramite un processo denominato partizionamento. Il partizionamento divide i dati da un set di dati di grandi dimensioni e li distribuisce su più server. Se un server non è in grado di gestire un carico elevato, i dati possono essere divisi e distribuiti automaticamente senza che la loro elaborazione venga interrotta.
Performance più elevate
MongoDB memorizza i dati nella RAM per accelerarne l'accesso e ottimizzare le performance durante l'esecuzione delle query. Raccoglie i dati direttamente dalla RAM anziché dal disco rigido, rendendo più veloci le letture e le scritture dei dati. La struttura non relazionale dei dati di MongoDB richiede inoltre una minore potenza di elaborazione per la ricerca e il recupero dei dati rispetto a un database relazionale.
Quando è consigliabile utilizzare MongoDB?
Analytics in tempo reale
In quanto database NoSQL, MongoDB è una scelta indicata per l'integrazione e l'elaborazione dei Big Data (che sono enormi quantità di dati eterogenei, che per le loro dimensioni non possono essere elaborate dai database relazionali tradizionali).
Poiché MongoDB è senza schema, è possibile effettuare l'accesso e la memorizzazione di vari tipi di dati all'istante. Il supporto integrato di MongoDB per il partizionamento consente inoltre di scalare i dati orizzontalmente su più server. Inoltre, offre la flessibilità necessaria per unire centinaia di origini di dati in un'unica vista per gli analytics in tempo reale e l'integrazione dei dati.
Gestione dei contenuti
In virtù del suo modello documentale non strutturato, MongoDB è un'opzione eccellente per la gestione dei contenuti e la distribuzione di siti web di e-commerce, pubblicazioni online e sistemi di gestione dei contenuti web. Il suo modello di dati flessibile consente di memorizzare facilmente diversi tipi di contenuti, tra cui immagini, testi e video, oltre ai metadati.
Tutti i contenuti correlati sono memorizzati in un unico documento, il che facilita l'aggiunta di nuove funzionalità e attributi. MongoDB può anche essere utilizzato per archiviare contenuti generati dagli utenti, come i commenti, che possono essere analizzati e utilizzati per orientare lo sviluppo di contenuti futuri.
Quattro domande e risposte su MongoDB
Quali sono le differenze tra MongoDB e MySQL?
MySQL è un sistema di gestione di database relazionali (RDBMS) gestito da Oracle. Utilizza Structured Query Language (SQL), che rappresenta i dati in tabelle e righe predefinite. MySQL richiede l'operatore JOIN per recuperare i dati da tabelle correlate. MySQL non supporta la replica o il partizionamento efficace.
MongoDB è un database open source multipiattaforma gestito da MongoDB, Inc. È un database basato su documenti che mira a gestire le richieste di dati delle moderne applicazioni software. MongoDB utilizza JavaScript come linguaggio di query e rappresenta i dati come documenti JSON. Non richiede uno schema predefinito, pertanto i documenti di una stessa raccolta possono avere strutture diverse.
MongoDB è più veloce di MySQL?
MySQL utilizza le operazioni JOIN per effettuare l'accesso ed eseguire query su dati correlati in più tabelle. Questo riduce al minimo la duplicazione dei dati, ma comporta milioni di letture e scritture che possono influire sulle performance.
Il modello documentale di MongoDB archivia i dati correlati insieme, consentendo di recuperare i documenti più velocemente rispetto a MySQL. Utilizzando la replica slave e master, MongoDB può elaborare elevate quantità di dati non strutturati molto più velocemente rispetto a MySQL.
Quando è consigliabile utilizzare MongoDB invece di MySQL?
La scelta di MongoDB o MySQL dipende dai casi d'uso specifici e dalle esigenze aziendali, ma MongoDB offre alcuni vantaggi rispetto a MySQL, tra cui:
- Progettazione orientata ai documenti: poiché MongoDB è un database NoSQL, memorizza i dati come documenti invece che in un formato relazionale. Questo lo rende più flessibile e adattabile agli scenari aziendali reali. Lo schema di dati relazionali di MySQL, invece, è predefinito e lo rende rigido e poco flessibile.
- Bilanciamento del carico: MongoDB supporta il bilanciamento del carico attraverso il partizionamento, che consente la scalabilità orizzontale dei dati. Il partizionamento può suddividere i dati tra più istanze di MongoDB e più server per bilanciare il carico in caso di guasto hardware o per migliorare le performance.
- Query ad hoc: MongoDB supporta query ad hoc con ricerche per campo, query per intervallo ed espressioni regolari. Le query possono restituire campi specifici all'interno di un documento.
È migliore il database MySQL o MongoDB?
MongoDB e MySQL sono sistemi di gestione di database intrinsecamente diversi, ma entrambi sono eccellenti in scenari specifici.
MongoDB consente alle organizzazioni di accelerare la creazione di applicazioni ed è adatto a gestire vari tipi ed elevate quantità di dati. MongoDB è consigliabile quando i requisiti sono l'elevata disponibilità di dati, la flessibilità dello schema, la possibilità di effettuare lo scale-out rapidamente o di supportare i Big Data e gli analytics.
MySQL è una scelta migliore se lo schema di dati è stabile e non è necessario archiviare dati non strutturati. MySQL è consigliabile quando i requisiti sono un elevata velocità di transazione, la sicurezza offerta dall'integrità referenziale o se è presente una struttura di dati statica.
Accelera i workload dei database open source con Pure
Dotato di failover automatico e scalabilità orizzontale, MongoDB è un database open source creato per le applicazioni moderne. Il suo modello di dati documentale supporta JSON ed esegue naturalmente il mapping ai linguaggi orientati agli oggetti, semplificando lo sviluppo. Il suo linguaggio di query è di facile apprendimento e utilizzo da parte degli sviluppatori.
Modernizza lo storage con Pure Storage® FlashBlade®, la soluzione di storage all-flash più avanzata del settore per il consolidamento di fast file e object data. FlashBlade offre:
- Architettura scale-out agile: FlashBlade gestisce decine di miliardi di file e oggetti con massime performance e data services avanzati.
- Consolidamento semplificato dei workload: implementa, aggiorna e gestisci FlashBlade con Pure1®.
- Performance all-flash: velocità di trasmissione e parallelismo elevati con performance multidimensionali costanti grazie alla velocità del file storage e dell'object storage di FlashBlade.