Guida mongodb in italiano per principianti

Una mini-guida introduttiva al mondo dei nosql!

Vuoi iniziare a usare mongodb ma non sai da cosa partire? Ecco una guida utile per te!

Cos’è Mongo e perchè dovremmo usarlo per i nostri nuovi progetti

I database nosql sono -concettualmente- estremamente differenti dallo standard relazionale come mysql et simila. Di fatto andiamo a creare le nostre relazioni secondo il principio molto semplice di “chiave-valore” direttamente in un file fisico (documento). Il fatto di avere un file fisico ha un primo vantaggio: sempre più server hanno dischi ssd che permettono velocità di accesso ai documenti davvero immediati. Oltre a questo usando un reverse proxy cache (ad esempio Varnish) che va a cachare al meglio i file statici potrete raggiungere livelli di performance davvero incredibili impossibili da raggiungere su mysql.

Essenzialmente vi starete chiedendo: ma quando è da usare mongo rispetto al classico mysql?

La risposta non è mai univoca, secondo me dipende come sempre dal tipo di progetto che dovete realizzare. Mongodb (ma in generale tutti i nosql) ha il grosso vantaggio di avere una scalabilità orizzontale che in ambito futuro è da preferire rispetto a quella verticale intrinseca di mysql. Pensiamo di avere ad esempio un server mysql che per le troppe richieste si satura. Le strade low-profile (senza far intervenire cluster hardware stratosferici)  sono ben poche: dobbiamo incrementare le risorse hardware e ottimizzare il più possibile. Con un nosql invece andremo semplicemente ad affiancare db paralleli (volendo anche virtualizzati).

Oltre alla scalabilità un altro fattore determinante è sicuramente la velocità e la semplicità d’espansione e accesso ai dati. Qui di seguito alcune caratteristiche più avanzate molto interessanti di mongodb:

Indici: MongoDB supporta gli indici secondari che consentono di effettuare le query molto più velocemente
Aggregazione:  grazie all’ “aggregation pipeline”  permette di costruire complesse aggregazioni da elementi più semplici con conseguente ottimizzazione del database
Collection speciali:  supporta il time-to-live (TTL) collection estremamente utile per lo storage solo dei dati recenti
File storage: protocollo semplificato per lo storage di file di grandi dimensioni e file metadata.

Esistono altri db nosql similari? Certo che sì. Se stai cercando una valida alternativa di consiglio Cassandra, ideale se ti occupi – ad esempio – di Big Data.

Primi passi con Mongo

Installazione

npm install -g mongodb

a questo punto avviamo il demone mongo sul server:

sudo mongod

A questo punto per “usare” il server appena creato – ad esempio con Nodejs – sarà accessibile a questo indirizzo:

mongoose.connect('mongodb://localhost/tuodb'); // in questo esempio uso mongoose http://mongoosejs.com/

NOTA: in questo caso abbiamo installato anche mongoose che è un’estensione di node per gestire e usare db mongo su nodejs (compresi express e altri framework).

Creazione di un database

Per creare un nuovo database ci basterà digitare:

use dbtest

Nel caso non sia presente mongo provvederà a crearlo, altrimenti farà la switch al suo interno.

Lista database

sudo mongo
show dbs

Cancellazione DATABASE

sudo mongo
show dbs // visualizzo lista db presenti nel server mongo
use dbtest // uso il database test
db.dropDatabase() // comando di drop db

Creare una collezione

Per prima cosa decidiamo quale db usare:

> use dbtest
switched to db dbtest

Ora che siamo sul giusto db procediamo a creare una collezione di test (l’equivalente delle tabelle mysql per i nosql).

> db.createCollection("testCiao")
{ "ok" : 1 }

Elenco di tutte le collezioni presenti e interventi sui dati

> db.getCollectionNames()
[ "testCiao", "system.indexes" ]

Inseriamo qualche dato all’interno della collection

> db.testCiao.insert({'a':'b'})
WriteResult({ "nInserted" : 1 })

Visualizzo dati nella collection e verifico inserimento dei dati

> db.testCiao.find()
{ "_id" : ObjectId("55849b22317df91febf39fa9"), "a" : "b" }

Eliminare una collection

> db.testCiao.drop()

Programma/estensione con GUI visuale simile a phpmyadmin per Mongo

Se il terminale non fa per voi (ma dovrete inziare a usarlo se vi approcciate a mongo, node o similari), vi consiglio alcune interfacce visuali per gestire i vostri db e collection.

MongoUI

Semplice da usare e installare, permette una visione d’insieme delle collections e dbs. Non permette di fare proprio tutto come phpmyadmin ma è un buon punto di partenza. Attualmente in beta.

RoboMongo

Di sicuro la scelta piu completa, per chi arriva da phpmyadmin è la scelta ideale.

Mongo Express

Trattasi di mini-cms scritto in Node per la gestione e amministrazione di mongo. Non male ma lo trovo più “disordinato” rispetto alle controparti.

Conclusioni e sviluppi

Questa guida era ovviamente solo una breve (ma credo chiara) introduzione al mondo dei Nosql in particolare di Mongodb. Credo che ormai sia giunto il momento per tutti i developer di guardare al futuro e non rimanere sempre ancorati al classico mysql. In tal senso i nosql sono la soluzione – a mio avviso – ideale.

Se volete approfondire meglio vi rimando come sempre al sito ufficiale in attesa di ulteriori articoli più avanzati e guide su mongodb sempre qui su targetweb!

Lascia la tua opinione

×