Quando usare MongoDB: vantaggi e casi d’uso
È facile farsi prendere dalle ultime parole d’ordine e usare tecnologie innovative, ma questo può portare a mal di testa se si usa lo strumento sbagliato per il proprio compito. MongoDB è arrivato a caldo e ha stabilito il dominio nel mondo dei database NoSQL quando hanno fatto l’IPO nel 2018. In questo articolo, discuteremo cosa sono i database NoSQL e come differiscono dai database SQL. In seguito, toccheremo ciò che distingue MongoDB nel panorama NoSQL. Termineremo con alcuni casi d’uso per MongoDB e discuteremo le insidie comuni quando si utilizza questa tecnologia di database.
Per ulteriori informazioni sul connettore nativo MongoDB di Xplenty, visita la nostra pagina di integrazione.
Tabella dei contenuti
- NoSQL vs SQL Databases
- MongoDB: Un grande pesce in un piccolo stagno
- Casi d’uso di MongoDB
SCOPRITE SE POSSIAMO INTEGRARE I VOSTRI DATI
AFFIDATI DA AZIENDE DI TUTTO IL MONDO
Godetevi questo articolo?
Ricevi settimanalmente grandi contenuti con la Newsletter di Xplenty!
NoSQL vs. SQL Databases
MongoDB è un database NoSQL. Questo significa che non si usa SQL per interagire con i dati nel database. Invece, si usa NoSQL.
La prima differenza da discutere è il vocabolario. In SQL, usiamo le tabelle. In NoSQL, usiamo le collezioni. In SQL, le tabelle sono costituite da record/row, in NoSQL, le collezioni sono documenti.
Per interrogare MongoDB, è necessario utilizzare la sintassi NoSQL. Ecco un esempio di una query SQL e la corrispondente query NoSQL:
SQL:
SELECT * FROM users WHERE age > 65;
NoSQL:
users.find({age: {$gt: 65} });
Si noterà che il linguaggio di interrogazione tratta la collezione come un oggetto sul quale si applicano azioni. Questo perché MongoDB è un database senza schemi, e presume che non ci sarà bisogno di interagire con altre collezioni. La sintassi SQL si aspetta che gli utenti facciano JOIN su altre relazioni nel database, e quindi la sintassi lo permette. C’è uno schema simile nel tentativo di INSERT:
SQL:
INSERT INTO users (id, age) VALUES (1, 70);
NoSQL:
users.insert({id: 1, age: 70});
L’importanza di uno schema definito è chiara nell’INSERT SQL perché le colonne scelte devono esistere nella tabella utenti. Con l’istruzione NoSQL, le colonne id e age non devono esistere prima nella collezione. Infatti, si può fare un’altra INSERT in quella collezione con campi diversi. Per esempio, possiamo eseguire il seguente comando sulla stessa collezione di utenti che abbiamo usato sopra:
users.insert({first_name: "Annie", zip_code: "10005"})
MongoDB, e altri database NoSQL, sono database senza schema. Questo significa che gli utenti possono memorizzare dati non strutturati. Questa funzionalità è sia una benedizione che una maledizione – la flessibilità rende più facile memorizzare i dati, ma rende anche più difficile organizzare i dati.
Per un’analisi approfondita delle differenze critiche tra SQL e NoSQL, controlla questo post sul blog.
SCOPRI SE POSSIAMO INTEGRARE I TUOI DATI
AFFIDATI DA AZIENDE DI TUTTO IL MONDO
Godetevi questo articolo?
Ricevi settimanalmente grandi contenuti con la Newsletter Xplenty!
Chi dovrebbe usare MongoDB
Per alcuni anni, MongoDB è stato sinonimo di NoSQL in molti ambienti. Tra le loro campagne di marketing aggressive e la capacità di fare breccia con diversi influenti della tecnologia, potevano catturare una larga fetta di questo “nuovo” mercato. Man mano che si diffondeva, la gente ha trovato delle falle nella sua fattibilità per certe applicazioni. Divenne uno strumento utile per le persone che “volevano solo ottenere la loro applicazione attiva e funzionante” e preoccuparsi di analizzare i dati in seguito.
Questo era un approccio accettabile e aveva senso per molti sviluppatori di software. Alla fine, i polli sono tornati al pollaio, e si è scoperto che MongoDB non era l’opzione migliore per tutti. Alcuni ingegneri che hanno adottato MongoDB all’inizio hanno potuto appoggiarsi alla tecnologia e adattarsi ai suoi miglioramenti, mentre molti altri hanno subito sforzi enormi per migrare da essa. Come con ogni pezzo di software, Your Mileage May Vary (YMMV), quindi è imperativo pensare criticamente ai servizi che usate.
Altre opzioni sono emerse nel mondo dei database di documenti. Postgres, per esempio, ha presentato un tipo di colonna JSON. Questo ha permesso agli utenti di Postgres di memorizzare dati non strutturati all’interno di un database relazionale. Anche Redis è emerso come un’utile alternativa per gli utenti che avevano bisogno di un negozio key-value. Potete imparare di più sulle differenze tra MongoDB e Redis qui. E, come accade con la maggior parte dei progetti software di successo, AWS ha rilasciato il proprio database di documenti chiamato DocumentDB, che è utile per le persone che vogliono attenersi alle applicazioni native di AWS.
Nonostante la crescente concorrenza, MongoDB regna ancora sovrano nel mondo NoSQL/Document-database e continua a migliorare i suoi servizi, come renderlo ACID compliant. Inoltre, nel supportare le applicazioni cloud, MongoDB ha fatto sforzi per supportare database distribuiti e laghi di dati.
Casi d’uso di MongoDB
MongoDB è un grande database per applicazioni web, soprattutto se l’applicazione serve molti utenti che non interagiscono tra loro. Pensate alle applicazioni di servizi finanziari, dove gli utenti hanno bisogno di accedere solo ai propri dati. O un’applicazione di blogging, dove gli utenti vogliono accedere e creare/modificare i propri blog. Gli utenti che non interagiscono tra di loro è il punto chiave. Con un database relazionale, si dovrebbero memorizzare le informazioni su un utente in diverse tabelle. Quando quell’utente si collega, l’applicazione dovrebbe fare diverse query, o complesse query JOIN, per accedere a tutte le informazioni per quell’utente. Con il database di documenti senza schemi di MongoDB, è possibile memorizzare tutte le informazioni di un utente insieme. Questo permetterebbe una singola query a una singola collezione, e il front-end può occuparsi della visualizzazione/modifica dei dati.
Un altro caso d’uso eccellente per MongoDB è cercare di incorporare molti set di dati. Il suo design senza schemi permette flessibilità nel modo in cui si memorizzano i dati. Così, è possibile memorizzare i dati da diverse fonti di dati (siti web, database, feed RSS, ecc) in un unico luogo, e quindi creare servizi sulla cima del vostro nuovo database per analizzare il tutto. Per esempio, Xplenty offre questa integrazione per MongoDB.
MongoDB è un ottimo database per integrare i dati geospaziali con altri tipi di dati. Per esempio, se la “posizione” è un pezzo di metadati con cui state lavorando, MongoDB supporta i tipi GeoJSON, in modo da poter memorizzare in modo efficiente latitudine e longitudine. Inoltre, MongoDB supporta gli indici 2DSphere, che ottimizzano i calcoli geometrici sulla sfera.
Conclusione
MongoDB è un potente database con molte capacità. Come azienda, ha aperto la strada alla divulgazione dei database NoSQL e Document. Come database, ha ampliato la nostra comprensione delle migliori pratiche di archiviazione dei dati e si è fatto strada in molte applicazioni in tutto il mondo.
MongoDB offre anche una versione gratuita, open-source, che è un’opzione eccellente per i team con un budget che possono mettere in piedi un server di database on-premises o nel cloud. Se volete supporto con questo, Xplenty può aiutarvi. Conosciamo le sfide associate all’archiviazione, all’integrazione e all’analisi dei dati. Se avete bisogno di una guida per scegliere gli strumenti giusti per l’archiviazione dei dati o l’assistenza per la migrazione dei vostri dati alla vostra nuova soluzione, programmate una chiamata con Xplenty e scoprite come la nostra soluzione ETL user-friendly può lavorare per voi.