Site icon Tosolini.info

Come installare MongoDB e Robo 3T

Con l’espansione dei prodotti Javascript oriented come Node.js l’utilizzo di un database nativo di questo specifico linguaggio semplifica in modo enorme il lavoro. Tuttavia non sono esclusi gli altri database, anche quelli di tipo relazionale classico come mySQL o Postreesql, ma richiedono dei passaggi in più che per molti progetti sono tempo sprecato.

Vediamo quindi come si installa MongoDB, un database appunto Javascript nativo e un front-end che si chiama Robomongo (ora rinominato in Robo 3T) più o meno il correlato di phpMyAdmin (per mySQL).

MongoDB nel tempo si è evoluto anche come soluzione commerciale pronta per il cloud, ma ha mantenuto il suo incipt iniziale che vede nella “community server” quello che stiamo cercando. Andiamo quindi nella pagina di Download e scarichiamo il pacchetto per il sistema operativo (Windows, macOS e Linux) su cui dovrà girare.

A questo punto va fatta una puntualizzazione, Windows e macOS sono funzionali allo sviluppo, mentre per Linux server di fatto è il suo ambiente operativo di produzione. Quindi vedremo le tre versioni, ma per le componenti desktop farò riferimento a situazioni di sviluppo o test.

Nel caso di Windows sarà un installer, il classico a wizard, tra le opzioni si consiglia di spuntare l’opzione per l’installazione completa.

Per Linux sono presenti varie distribuzioni per il download. Tuttavia su Ubuntu 18.04 è presente nei repository ufficiali sia mongodb che mongo-tools.


sudo apt install mongodb mongo-tools

Sarà creato automaticamente un utente mongodb con gli accessi necessari a far muovere il database server.

Per macOS è presente il file DMG, oppure si può optare per l’installazione (e gli aggiornamenti) attraverso Homebrew.


brew install mongodb

A questo punto abbiamo gli eseguibili per avviare il nostro database server.

Per Windows sarà necessaria la path dove è installato, mentre per Linux e macOS questa dovrebbe essere già nota al sistema e quindi si può dare il comando di avvio:

#windows
%ProgramFiles%\mongdb-xx-standard\bin\mongod.exe
#macos
mongod
#inux ubuntu
sudo service mongod start

Dovrebbe partire il server di MongoDB con i parametri base, in particolare la posizione dei file che saranno standard a seconda del sistema operativo utilizzato. Se non volgiamo questa situazione (tipica nel caso dello sviluppo) possiamo forzare ad utilizzare una cartella specifica (che va creata prima di lanciare l’eseguibile) ponendo l’opzione –dbpath /path/cartella, vediamo un esempio concreto:

su windows utilizzando la cartella mongodbdata sul disco C:


%ProgramFiles%\mongdb-xx-standard\bin\mongod.exe --dbpath C:\mongodbdata

su Linux/macOS utilizzando la cartella mongodbdata sulla home directory dell’utente in uso ( di solito /user/nomeutente)


mongod --dbpath $HOME/mongodbdata

Molti parametri di default sono modificabili, come ad esempio la porta, dove vengono memorizzati i log, eccetera. In questo caso si tratta di una conoscenza più funzionale ad un ambiente di produzione,  il file in questione lo troviamo in /etc/mongodb.conf utilizzando Ubuntu. E’ comunque possibile optare per l’utilizzo non standard specificando un altro file di configurazione, utilizzando il parametro -f


mongod -f $HOME/miomongodb.conf

Generalmente la porta di default è la 27017 su ip 127.0.0.1, quindi con un netstat -vantp dovreste vedere nei risultati il server che occupa lo stack di rete.

Lanciando invece l’eseguibile mongo (mongo.exe per windows) avremo accesso alla shell ma vedremo anche le interrogazioni ricevute ed eseguite dal server in tempo reale. Uno strumento utile per non imbastire inutili ganci con il classico “console log” di javascript, ma avere un “ritorno” più approfondito a seguito di una specifica azione.

Con il comando mongotop saremo in grado di “misurare” le chiamate in lettura o scrittura di singole azioni. Se vogliamo una vista più elevata, cioè dell’intero database server possiamo avvalerci del comando mongostat.

Una vista dei dati.

Per vedere come sono strutturati i dati ci può essere utile Robomongo che va precisato, essere un client desktop, quindi la soluzione proposta di seguito richiede un ambiente grafico. Di recente l’app è stata acquistata da una società che l’ha rinominata in Robo 3T, resta comunque scaricabile per i tre maggiori sistemi operativi da questa pagina. L’applicativo una volta avviato va configurato per accedere al database, generalmente è utilizzato per lo sviluppo locale quindi la questione risulta semplificata. Basta fornire i dati di accesso sul socket di rete locale.

Nel caso invece si voglia accedere a server remoti si può utilizzare il tunnel SSH già predisposto nella GUI di Robo 3T. Basterà quindi compilare i dati di accesso tipici di SSH, anche con chiave privata, per poter creare un tunnel che ci permetterà la connessione al MongoDB di produzione, sopratutto nel caso tipico dove questo sia accessibile solo attraverso l’interfaccia di rete locale (il tipico indirizzo 127.0.0.1).

Backup e restore.

Un argomento sempre disatteso specie dai programmatori è il backup. Già con Robo 3T è possibile salvare il database. Però per qualcosa di più strutturato a livello server, attraverso gli script bash di Linux, Mongodb arriva già predisposto con un set specifico di comandi come il mongodump e mongorestore. E’ interessante il fatto che si possa opzionare un restore o un dump su un server remoto.

Vediamo un esempio in locale:


mongodump --archive=test.gz --gzip --db test

in questo caso abbiamo esportato un archivio in formato compresso del database test. Il restore sarà pressoché identico:


mongorestore --gzip --archive=test.gz --db test

Non secondario anche il fatto di poter esportare dei dati in formato JSON o CSV e poterli esportare o iniettare dentro un database esistente. In questo caso si fa riferimento ai comandi mongoimport e mongoexport

Conclusioni.

Si tratta di un database atipico se visto con gli occhi di chi ha utilizzato i classici mySQL / PostgreeSQL, tuttavia risulta molto duttile e funzionale nel contesto dei framework Javascript. Faccio menzione che è inoltre possibile avvalersi di sistemi nativi per replica e shared. Nel complesso l’installazione e la manutenzione risultano piuttosto semplici anche perché ben rodate per i vari sistemi operativi.

Exit mobile version