Guida MongoDB
In questa guida illustreremo i concetti fondamentali di MongoDB e, nel corso delle prossime 15 lezioni, affronteremo gli argomenti principali per avere una chiara comprensione di uno dei sistemi di gestione di database più interessanti e diffusi.
MongoDb è un popolare sistema di gestione di database (DBMS - Database Management System) orientato ai documenti (spiegheremo a breve cosa vuol dire). Fa parte di una più ampia categoria di database a cui ci si riferisce con il termine database NoSQL.
Ciò che accomuna i sistemi NoSQL è la scelta di impiegare dei metodi alternativi al classico modello relazionale per strutturare i database. E da qui nasce la scelta del nome NoSQL per evidenziare che si tratta di una categoria di DBMS che non impiega il liguaggio SQL per l'interrogazione di una base di dati come avviene comunemente nei database relazionali.
Il termine NoSQL viene genericamente usato per identificare tutti quei DBMS che non fanno uso di tabelle per organizzare i dati come i database relazionali. E' bene precisare che ciascun sistema NoSQL può utilizzare una tecnica diversa per strutturare i database non essendoci regole universali in tal senso.
Nella prima lezione della nostra guida a MongoDB ne scopriremo le caratteristiche principali per poi approfondirle, una a d uno, nel proseguo della trattazione.
Caratteristiche di MongoDB
Come accennato, NoSQL è un termine generico che racchiude un'ampia categoria di DBMS i quali propongono dei metodi alternativi al modello relazionale per strutturare e organizzare i dati all'interno di un database.
MongoDB in particolare è un DBMS NoSQL orientato ai documenti. Al contrario di ciò che avviene nei RDBMS come MySQL, in MongoDB non esiste il concetto di riga...
Installare MongoDB su Windows, macOS e Linux
MongoDB è disponibile in due versioni: Community Edition e Enterprise Edition.
In questa lezione vedremo come installare MongoDB Community Edition (la versione gratuita di MongoDB) in Windows 10, macOS Monterey.
MongoDB Community Edition non ha nessuna limitazione per i fini di questa guida e presenta tutte le funzionalità base necessarie compresi gli strumenti per implementare Replica Set e Sharding.
Come è facile...
MongoDB Atlas: database remoto e gestito
Nella precedente lezione abbiamo visto come installare MongoDB in locale, in questa lezione illustreremo come creare un account, configurare MongoDB Atlas e realizzare il nostro primo semplice progetto sfruttando le risorse messe a disposizione da MongoDB.
Cos'è MongoDB Atlas
Atlas è un servizio di database completamente gestito realizzato dallo stesso team che sviluppa MongoDB. È disponibile un piano gratuito, ideale per...
Strumenti per importare ed esportare dati in MongoDB
In questa breve lezione vedremo alcuni degli strumenti per esportare ed importare dei dati di un database. Sono quattro i comandi a cui facciamo riferimento che, in base al loro modo di operare e al formato dei file, possiamo classificare in due categorie:
mongoimport e mongoexport per lavorare con file JSON.
mongodump e mongorestore per i file in formato binario (BSON).
Prima...
Mongosh: la nuova shell di MongoDB
mongosh è la nuova shell di MongoDB che sostituisce mongo. Al contrario di quest'ultima, non viene distribuita insieme a mongod, ma deve essere installata separatamente. Nelle precedenti lezioni, abbiamo già visto che su Windows basta eseguire il download e l'installazione del corrispondente pacchetto .msi, mentre su macOS viene automaticamente installata se si usa Homebrew.
mongosh è un ambiente di programmazione...
MongoDB: Creare, aggiornare e rimuovere documenti da una collezione
In questa lezione vedremo come creare, aggiornare e rimuovere dei documenti da una collezione.
Prima di iniziare questa lezione, è bene evidenziare che per semplicità, per facilitare la lettura degli esempi e visto che la shell di MongoDB lo consente, i campi delle condizioni di filtro e dei documenti delle collezioni non sono racchiusi fra doppi apici. A voler essere...
MongoDB: interrogare i database e recuperare dati specifici
In questa lezione vedremo come usare i metodi db.collection.findOne() e db.collection.find() per estrarre dei documenti in base a criteri di selezione più o meno complessi.
Il metodo db.collection.findOne()
Il metodo db.collection.findOne(query, projection) restituisce un solo documento della collezione che soddisfa i criteri del documento passato come primo argomento. Possiamo specificare una o più condizioni aggiungendo più coppie campo/valore al documento. Nel...
MongoDB: migliorare le prestazioni delle query grazie agli indici
Questa lezione sarà una breve introduzione agli indici. Dal momento che si tratta di un argomento abbastanza complesso ed importante, in questa guida ci limiteremo ad illustrare solo i concetti fondamentali. Per maggiori dettagli è consigliato consultare la documentazione ufficiale.
Cos'è un indice
Un indice in MongoDB è una struttura in cui vengono conservate porzioni di dati di una collezione. Per...
MongoDB: indici e query geospaziali
Vediamo cosa sono e come si utilizzano i dati geospaziali in MongoDB.
Dati di tipo geospaziali
MongoDB offre la possibilità di salvare all'interno di un documento dei dati di tipo geospaziale. In particolare sono due i formati supportati:
il formato GeoJSON consente di rappresentare oggetti geometrici come punti, linee spezzate e poligoni. È il formato consigliato per salvare le coordinate geografiche in...
Cos’è il MongoDB “Aggregation Framework”?
Nelle precedenti lezioni abbiamo visto come usare MQL (MongoDB Query Language) per interrogare i database. L'argomento di questa lezione sarà invece l'Aggregation Framework. Faremo spesso riferimento alle collezioni del database di esempio che abbiamo importato in MongoDB Atlas. Se non l'aveste ancora fatto, è consigliato leggere la terza lezione di questa guida in cui spieghiamo come creare un account...
Concetti base per strutturare un database in MongoDB
Nel definire la struttura e le relazioni fra le collezioni che costituiscono un database, è opportuno tenere in considerazione vari fattori.
Nei database tradizionali in fase di progettazione di un database e modellazione dei dati si punta a ridurre al minimo le ridondanze attraverso un processo di normalizzazione il quale consiste nello scomporre le tabelle e nel definire dei vincoli...
Autenticazione in MongoDB: gestire utenti, permessi e ruoli
Nelle precedenti lezioni abbiamo visto come eseguire un'istanza di mongod e come collegarci al server locale tramite mongosh. Non abbiamo però dovuto indicare nessun username o password. Il motivo è che MongoDB non presenta alcun utente predefinito e se non si indica esplicitamente non è necessario alcun meccanismo di autenticazione per accedere al server.
Per ragioni di sicurezza è però...
Come creare un "Replica Set" in MongoDB
In questa lezione andremo alla scoperta dei "Replica Set" di MongoDB.
Cos'è un "Replica Set"?
Con il termine "Replica Set" si intende un insieme di istanze di mongod configurate per mantenere lo stessa copia di dati. Tali processi si occupano quindi di replicare le informazioni contenute in un database per garantire un certo livello di resistenza in caso di guasti.
Non bisogna...
Sharding: un metodo per partizionare i dati su più macchine
In questa lezione vedremo cos'è e come funziona lo " Sharding".
Cos'è lo "Sharding" in MongoDB
Col termine "Sharding" ci si riferisce al meccanismo di partizionamento dei dati di una collezione su diverse macchine. Non è un termine esclusivo di MongoDB, ma si tratta di una funzionalità utilizzabile anche in altri sistemi di gestione di database. Ciò che differenzia però MongoDB...