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.
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.
Di sicuro la scelta piu completa, per chi arriva da phpmyadmin è la scelta ideale. Se volete una guida esaustiva su come installarlo eccola a questo indirizzo.
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!