lunedì 9 luglio 2012

MongoDb, ovvero che bello loggare

Sono mesi che rigiro un'idea in testa, che cerco di capire che funzione possano avere i NoSQL database.
Mi dico che, più o meno, un dato che viene salvato sia sempre strutturato, tutt'al più si può ovviare con un bel campo text o blob se si vogliono inserire informazioni non strutturate.
Poi un giorno arriva una necessità: monitorare gli accessi ad un particolare servizio, sapere chi ti sta chiamando, con quale frequenza. Poter insomma fare un po' di statistiche.
Facile, dico io, basta loggare. Eh si, e dove, su files di testo? E poi come aggregare i dati disaggregati?
Allora in una tabella: nooo, troppo rigida la struttura, in questo caso ci vuol roba duttile, si devono poter mescolare le pere con le mele.
E la scelta finisce sui NoSQL Database, dopo aver scoperto che anche Amazon li usa per il logging.
In particolare io ho usato MongoDb, per il fatto che mi sembra abbastanza maturo come prodotto, semplice da installare e gestire e con un livello accettabile di documentazione.
Devo dire che ha reso veramente semplice avere statistiche, anche perché c'è la possibilità di aggregare dati in tempo reale (funzioni di map/reduce), in modo sia full che incrementale.