MongoDB e la quintessenza del document store

MongoDB è attualmente il NoSQL document-store più diffuso. Ha rimpiazzato come popolarità CouchDB, ed è attualmente parte integrante di importanti implementazioni applicative, come ad esempio Foursquare, Sourceforge, eBay e il CERN di Ginevra, oltre che la base del sistema di autenticazione di OpenShift.

MongoDB fa parte del filone dei vari NoSQL. Ciò significa che supera il principio tipico dei database relazionali (come MySQL): i dati non vengono salvati in tabelle strutturate e collegate. In MongoDB non esistono concetti di tabelle, join, chiavi esterne. MongoDB rimpiazza il concetto di riga con il concetto di documento, e il concetto di tabella con il concetto di collezione. Ogni documento può contenere campi e dati custom diversi dagli altri documenti e un insieme di questi documenti costituisce una collezione. Un insieme di più collezioni con i permessi associati costituisce invece un database. Insomma, in MongoDB si inseriscono i dati senza preoccuparsi di dividerli per adeguarsi alla struttura: si inseriscono e basta. È con le funzionalità messe a disposizione da MongoDB che sarà poi possibile effettuare query, inserire, eliminare o aggiornare questi dati. Ma niente SQL.

Pensare ai documenti non deve creare confusione. I documenti di MongoDB sono dataset “strutturati” con un modello chiave-valore, tipo JSON (JavaScript Object Notation), non documenti di testo o fogli elettronici (benché in MongoDB sia possibile salvare anche questo genere di dato). Per esempio ecco un documento con i miei due numeri di telefono:

{ "nome" : "Fabrizio", "telefono" : [ "3912345678", "3987654321" ] }

Lavorare con MongoDB risulta semplice per i programmatori, che si interfacciano a un’API senza vincoli di schemi software o progettuali prestabiliti, e per gli amministratori, che possono scalarlo verso esigenze superiori con più trasparenza.

Le caratteristiche che contraddistinguono da sempre MongoDB (leggerezza e scalabilità) lo rendono molto adatto per progetti web anche di grande dimensione, agili e scattanti, ma poco adatto ad ambienti dove siano richieste caratteristiche di affidabilità tipiche dei database relazionali più potenti (come PostgreSQL), tipo le transazioni. Detto chiaramente: nessuno farebbe una piattaforma di home banking con MongoDB.

Per installare MongoDB su RHEL o CentOS si procede come al solito, dopo aver abilitato il repository EPEL:

1
# yum install mongodb mongodb-server

Una volta aperta su iptables la porta tcp/27017 e avviato il servizio con

1
# service mongod start

oppure (da RHEL 7, con systemd)

1
# systemctl start mongod

è possibile connettersi al server usando la semplice ma potente shell Javascript (mongo si collega automaticamente al database test):

1
2
3
4
$ mongo
MongoDB shell version: 2.4.6
connecting to: test
>

L’uso tipico di MongoDB consiste nell’inserire, cercare, modificare dati nei database. Sebbene sembra che si usi JSON, internamente MongoDB salva i dati in un cosiddetto JSON binario figlio del progetto MongoDB stesso, denominato BSON:

1
2
3
4
5
6
7
> articolo = { "titolo" : "MongoDB", "contenuto" : "In questo articolo esploreremo MongoDB", "data" : new Date() }
{
"titolo" : "MongoDB",
"contenuto" : "In questo articolo esploreremo MongoDB",
"data" : ISODate("2014-03-12T22:25:56.091Z")
}
> db.articoli.insert(articolo)

MongoDB è un progetto di successo e, anche se di primo acchito il suo approccio così minimale può ammutolire, sposando la filosofia dello strumento-giusto-nel-posto-giusto, può rivelarsi una scelta vincente. Il team di MongoDB non vuole sparare alla mosca con il famoso cannone perciò, anche se sempre più ricco di feature, MongoDB rimarrà fedele alla sua vocazione di document store snello e scattante.

Vedremo in alcuni post successivi come gestire le autorizzazioni su MongoDB, più qualche concetto più avanzato, come i log, i backup e la replica.

Ti piacerebbe diventare anche tu uno di noi e pubblicare i tuoi articoli nel blog degli RHCE italiani?

Panoramica privacy
EXTRAORDY | Your Red Hat Trusted Mentor

Questo sito utilizza i cookie in modo da offrirti la migliore esperienza utente possibile. Le informazioni sui cookie sono memorizzate nel tuo browser e svolgono funzioni come riconoscerti quando ritorni sul nostro sito e aiutare il nostro team a capire quali sezioni del sito ritieni più interessanti e utili.

Pertanto per una completa fruizione del presente sito, si consiglia di configurare il browser in modo che accetti la ricezione dei cookie.

Cookie strettamente necessari

I cookie strettamente necessari dovrebbero essere abilitati in ogni momento in modo che possiamo salvare le tue preferenze per offrirti la miglior esperienza possibile sul nostro sito.

 

Se disabiliti questo cookie, non saremo in grado di salvare le tue preferenze. Ciò significa che ogni volta che visiti questo sito web dovrai abilitare o disabilitare nuovamente i cookie.

Cookie di terze parti

Questo sito utilizza Google Analytics per raccogliere informazioni anonime quali il numero di visitatori del sito e le pagine più popolari.

Mantenere abilitato questo cookie ci aiuta a migliorare il nostro sito.