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 imparare ed esplorare le funzionalità di MongoDB. Atlas permette di focalizzare l’attenzione solo sullo sviluppo delle nostre applicazioni dal momento che si occupa di tutte le operazioni di configurazione ed amministrazione. Come vedremo, basteranno davvero pochi passaggi per avviare un Replica Set, ovvero un gruppo di server che mantengono la stessa copia dei dati in modo da garantire alta disponibilità e tolleranza contro possibili guasti.
Atlas fornisce una serie di strumenti attraverso i quali possiamo per esempio gestire gli utenti di un database e i permessi a loro associati.
Attraverso un’interfaccia grafica abbastanza intuitiva possiamo interrogare il database, creare o consultare eventuali indici e visualizzare varie fasi del processo di elaborazione dei documenti tramite Aggregation Framework (sarà uno degli argomenti delle prossime lezioni).
A seconda del piano scelto, vengono anche forniti strumenti di analisi dettagliata che permettono di risolvere eventuali problemi prestazionali del database. Infatti, Atlas analizzerà le query e suggerirà possibili soluzioni per ottimizzare i database.
Come creare un nuovo progetto su MongoDb Atlas
Possiamo creare un account collegandoci alla pagina iniziale del sito ufficiale e cliccando sul pulsante Try Free.
Per creare un nuovo account, riempiamo i campi necessari e seguiamo i passaggi richiesti. Come e-mail possiamo tranquillamente usare un indirizzo di posta personale.
Una volta effettuato l’accesso, sarà necessario fornire un nome per una nuova organizzazione. Come indicato sul sito, si tratta di un modo per organizzare e gestire meglio i vari progetti che creeremo.
Nella schermata successiva inseriamo l’identificativo dell’organizzazione e assicuriamoci di selezionare MongoDB Atlas come servizio. Infine premiamo il tasto ‘Next‘.
Possiamo anche aggiungere nuovi membri all’organizzazione, ma trascuriamo questa funzione e limitiamoci a cliccare sul pulsante ‘Create Organization‘.
Ci apparirà poi la pagina dei progetti in cui premiamo il pulsante ‘New Project‘ per creare un nuovo progetto.
Inseriamo un nome per il nostro progetto e premiamo ‘Next‘.
Trascuriamo anche i membri e i permessi per il nuovo progetto e limitiamoci a premere il pulsante ‘Create Project‘.
Abbiamo così completato la procedura per la realizzazione di un nuovo progetto, a questo punto possiamo selezionare server e specifiche per avviare un cluster di tre server configurati come Replica Set. Per questo motivo clicchiamo su ‘Build a Database‘.
Nella pagina successiva dovremo scegliere il piano gratuito che ha delle limitazioni ma è ideale per chi vuole apprendere ed esplorare le funzioni di MongoDB.
Assicuriamoci ancora una volta di aver scelto il piano gratuito.
Selezioniamo AWS come fornitore dei servizi e come server farm indichiamo quella a noi più vicina e gratuita che dovrebbe essere Francoforte.
Scorrendo la pagina possiamo visualizzare maggiori dettagli del piano gratuito che garantisce 512MB di spazio di archiviazione con VCPU (CPU virtuale) e RAM condivise.
Prima di procedere, possiamo scegliere un nome per il Cluster e dopo aver verificato ancora una volta che si tratta del piano gratuito, premiamo il pulsante ‘Create Cluster‘.
Configurazione per accedere al database remoto
Sarà necessario un po’ di tempo prima che venga completato l’avvio del cluster. Nel frattempo iniziamo a selezionare le opzioni di sicurezza che useremo per accedere a MongoDB Atlas via linea di comando o tramite MongoDB Compass.
Nella schermata generale di gestione del cluster selezioniamo Security > Quickstart.
Come metodo di autenticazione scegliamo Username and Password ed inseriamo i dettagli dell’utente e la relativa password. Infine clicchiamo su ‘Create User‘. Trascuriamo le altre opzioni che andremo poi a modificare nella sezione Network Access.
Dopo qualche istante (o qualche minuto) possiamo spostarci in ‘Database Access‘ e verificare che il nuovo utente sia stato correttamente creato. Come metodo di autenticazione viene indicato SCRAM (Salted Challenge Response Authentication Mechanism). Si tratta di un meccanismo di autenticazione tramite nome utente e passoword che non è fra i più sicuri, ma è più che accettabile per lo scopo di questa guida.
Spostiamoci poi nella sezione Network Access selezionabile nella colonna di sinistra fra le opzioni di sicurezza e stabiliamo quali indirizzi IP possono collegarsi al cluster. Clicchiamo su ‘Add IP Address‘.
Qui elencheremo quali sono i soli indirizzi IP da cui ci si può collegare al cluster appena creato. Se effettuiamo il collegamento da un IP statico, basterà inserirlo. Se il nostro provider internet assegna indirizzi dinamici, dovremo cambiare la configurazione di Atlas ogni volta che l’IP cambia. Per semplicità clicchiamo quindi su ‘ALLOW ACCESS FROM ANYWHERE ‘ che popola automaticamente la lista degli indirizzi IP con ‘0.0.0.0/0’ in modo da consentire l’accesso da qualsiasi indirizzo IP. Volendo si può chiedere ad Atlas di negare l’accesso dopo un certo periodo. Nell’immagine riportata sotto scegliamo di cancellare la voce dalla lista degli indirizzi dopo 6 ore.
Ricordate che è sempre possibile rimuovere o aggiungere un indirizzo IP in qualsiasi momento nella sezione ‘Network Access‘.
Importare degli esempi di database e collezioni
Dopo aver completato le procedure di configurazione per l’accesso, possiamo tornare alla schermata generale selezionando nella colonna di sinistra la voce ‘DEPLOYMENT > Database’. In questa pagina abbiamo diverse informazioni in merito al cluster avviato.
A fianco al nome del cluster sono presenti 4 pulsanti. Se clicchiamo su ‘•••’ e poi su ‘Load Sample Dataset‘ avremo la possibilità di caricare sui server 350MB di dati di esempio organizzati in database e collezioni. In questo modo possiamo vedere da vicino come sono organizzate delle collezioni in MongoDB e come sono strutturati dei documenti.
Nella finestra di dialogo che verrà aperta, clicchiamo su ‘Load Sample Dataset‘.
Sarà necessario un po’ di tempo per caricare tutti i dati.
Al termine di questa procedura dovremmo visualizzare un messaggio di conferma nella schermata principale. I grafici dovrebbero invece indicare che sono stati scritti dei dati. Inoltre possiamo notare che la dimensione dei dati è passata da 0.0B a circa 340MB.
Interfaccia di MongoDB Atlas
Dalla schermata iniziale (DEPLOYMENT > Database) possiamo visualizzare i database e le collezioni appena caricate cliccando sul pulsante ‘Browse Collections‘.
Nella pagina che si aprirà, troviamo in alto il numero di database e collezioni attualmente presenti sui server. A sinistra abbiamo un elenco di database. Se selezioniamo un database, visualizziamo le informazioni dettagliate in merito alle collezioni.
Cliccando sulla freccia a fianco al nome di un database, vengono elencate le collezioni in esso contenute. Se selezioniamo una collezione, otteniamo i dettagli della collezione, ovvero lo spazio occupato, il numero totale di documenti presenti e la dimensione degli indici. Visualizziamo poi l’elenco paginato dei documenti presenti nella collezione. Possiamo esplorare ciascun documento, accedendo anche ai documenti annidati.
Possiamo inoltre editare, copiare o cancellare i documenti con i pulsanti dedicati.
Sopra l’elenco dei documenti è presente un modulo in cui possiamo inserire delle istruzioni che Atlas userà per filtrare, ordinare i documenti e proiettare solo alcuni dei campi di ciascun di essi. Illustreremo nelle prossime lezioni la sintassi in dettaglio, ma come si può intuire dai suggerimenti, dovremo utilizzare la sintassi dei documenti JSON. In realtà MongoDB è abbastanza permissivo e possiamo omettere i doppi apici per i campi. Volendo semplificare, impiegheremo la stessa sintassi degli oggetti letterali di Javascript.
Nell’immagine riportata sopra, abbiamo un esempio di query. In particolare, abbiamo richiesto i soli documenti relativi ai ristoranti con nome uguale a ‘Kosher Island’ (otteniamo 1 solo documento in risposta). Chiediamo di visualizzare solo i campi ‘name
‘, ‘cuisine
‘ e ‘borough
‘ del documento. Per far ciò, abbiamo inserito {name: 1, cuisine: 1, borough: 1, _id: 0}
come valore della casella di input PROJECT. Per indicare quali campi devono essere selezionati, specifichiamo il nome del campo come chiave e associamo il valore 1 (es. {name: 1}). MongoDB restituirà sempre un documento in cui è presente comunque il campo ‘_id’ a meno che non chiediamo esplicitamente il contrario. Come possiamo vedere dall’esempio, usiamo ‘_id’ come chiave e associamo il valore 0 per indicare in modo esplicito che deve essere escluso dal documento finale.
Accedere al database remoto via linea di comando
Per collegarsi a MongoDB Atlas via linea di comando, torniamo alla schermata generale cliccando su DEPLOYMENT > DATABASE. Premiamo poi il pulsante CONNECT posto al centro dello schermo.
Si aprirà una finestra in cui dovremo scegliere come vogliamo collegarci a MongoDB Atlas.
Per collegarsi via shell, scegliamo la prima opzione disponibile ‘Connect with the MongoDB Shell’.
Se abbiamo già installato correttamente mongosh, selezioniamo ‘I have the MongoDB Shell installed’ e copiamo la stringa di connessione mostrata. La stringa presenta un prefisso mongo+srv
e termina con il nome del database a cui ci collegheremo. Se lasciamo la stringa invariata, una volta connessi ad Atlas, myFirstDatabase
sarà il database corrente. Sarà inizialmente vuoto, ma, se non selezioniamo un altro database, qualsiasi collezione che creiamo sarà inserita al suo interno. Per maggiori dettagli sul formato della stringa di connessione introdotto a partire dalla versione 3.6 di MongoDB, è possibile consultare la documentazione ufficiale.
A questo punto possiamo aprire la shell e incollare il testo copiato, premiamo il tasto INVIO e ci verrà richiesto di inserire la password dell’utente specificato tramite l’opzione --username
. Si tratta delle credenziali aggiunte su Atlas quando abbiamo creato un nuovo utente per l’accesso al database.
Se tutto procede correttamente, dovremmo completare la connessione al cluster e visualizzare le informazioni relative. Inoltre il prompt dei comandi dovrebbe aggiornarsi (es. ‘Atlas atlas-796201-shard-0 [primary] myFirstDatabase >
‘) per indicare che siamo collegati al server primario del cluster e che il database corrente è myFirstDatabase. Per conferma, possiamo lanciare il comando db
che mostra a video il nome del database corrente.
Possiamo invece impartire il comando show dbs
per mostrare tutti i database.
Atlas atlas-726407-shard-0 [primary] myFirstDatabase> show dbs
sample_airbnb 56.1 MB
sample_analytics 9.58 MB
sample_geospatial 1.48 MB
sample_mflix 50.8 MB
sample_restaurants 8.2 MB
sample_supplies 1.18 MB
sample_training 57 MB
sample_weatherdata 2.91 MB
admin 344 kB
local 644 MB
Per uscire e chiudere la connessione sarà sufficiente eseguire il comando exit
Atlas atlas-726407-shard-0 [primary] myFirstDatabase> exit
Come collegarsi a MongoDB Atlas con MongoDB Compass
Per collegarsi tramite MongoDB Compass, clicchiamo sempre sul pulsante CONNECT e selezioniamo ‘Connect using MongoDB Compass’, copiamo anche in questo caso la stringa di connessione facendo attenzione a sostituire <password>
con la password dell’utente (si tratta sempre delle credenziali dell’unico utente creato su Atlas, non delle proprie credenziali di accesso ai servizi di MongoDB).
Apriamo MongoDB Compass, incolliamo la stringa di connessione nell’apposito campo di input e clicchiamo su ‘Connect‘. Se dovesse comparire invece un modulo in cui inserire le singole informazioni di connessione, clicchiamo su ‘Paste connection string’.
Dovremo attendere qualche istante finché non viene completata la connessione. Nella schermata principale saranno quindi elencati tutti i database presenti su Atlas.
Conclusioni
Dopo aver creato un account su MongoDB Atlas, nella prossima lezione scopriremo alcuni degli strumenti installati nelle precedenti lezioni e vedremo quali comandi usare per importare o esportare i dati del database.