MongoDB, introduzione al più famoso dei DB noSQL

Abbiamo già avuto occasione di parlare dei database noSQL in un precedente articolo. Oggi parliamo di MongoDB, il database non relazionale che sta riscuotendo maggiore successo e che si trova già alla base di un numero davvero elevato di progetti in rete, da Facebook a Twitter, i colossi utilizzano da tempo MongoDB per la gestione dei loro dati, in maniera distribuita, ovvero andando a posizionare il database su più server nel mondo, senza la complessità che solitamente è tipica di strumenti come MySQL o DBMS simili.

In questo articolo vediamo le caratteristiche base di MongoDB, mentre negli articoli successivi inizieremo ad utilizzare questo DB noSQL insieme a PHP per capire come funziona in produzione.

Prima cosa, MongoDB è un database document-oriented storage, il che significa che i dati vengono archiviati nella forma di document, il document rappresenta la singola informazione, e sono le collections che racchiudono più documents al loro interno. Una delle caratteristiche più apprezzate di questo database noSQL è la possibilità di attribuire un indice a qualsiasi attribuito, questo insieme al fatto che il database possa essere facilmente distribuito su più server fa si che MongoDB venga spesso utilizzato in ambienti in cui vengono salvati milioni di informazioni, rendendole poi disponibili online tramite diversi tools, spesso anche per sistemi di logging avanzati, dove è necessario gestire un numero elevato di informazioni in un tempo molto ristretto. Tra le caratteristiche di cui sentiremo parlare spesso in riferimento a MongoDB è l’auto-sharding, ovvero la possibilità di distribuire i suoi dati su più server in maniera automatizzata, lasciando che sia il motore di MongoDB a gestire l’interrogazione e la scrittura dei dati su più macchine. Sistema che tra le altre cose permette di aumentare notevolmente le performance.

Torniamo a parlare infine della struttura dati utilizzata da MongoDB:

Le collections contengono BSON documents, e ogni document ha al suo interno dei campi. In MongoDB non si devono definire a priori i campi come faremmo ad esempio all’interno di MySQL nella creazione di un nuovo datavase. Non c’è uno schema per i campi (per questo si parla di, ovvero non deve essere definito il campo con il relativo datatype, perchè quest’ultimo può variare dinamicamente.

 Di seguito vediamo brevemente la struttura di una infrastruttura MongoDB distribuita con più server e shard.

 

MongoDB dispone di una ottima integrazione con i più comuni linguaggi di programmazione per il web, da PHP a Python a Ruby. Questo consente di utilizzare molto semplicemente questo ambiente per la conversione di sistemi che utilizzano database relazionali e per nuove applicazioni web.