sabato 22 marzo 2014

MogoID: l'alternativa di ActiveRecord per il mondo NoSQL



Qualche tempo fa avevo scritto alcune righe sul mondo NoSQL ed in particolare si Mongo , dopo la lettura di "Instant MongoDB" ( http://bit.ly/17RQbZ7 ), notando però la mancanza di 
riferimenti a driver e o gemme specifiche

Be, i signori di Packt mi hanno gentilmente segnalato un altro titolo,  "Learning MongoID" di Gutam Rege pubblicato da poco (per chi volesse lo trova qui: 14 euro spesi bene! http://bit.ly/1dfRK2c

Ad ogni modo, il libro ripercorre tutte le fasi e i passi necessari per l'utilizzo di Mongo tramite la gemma MongoID.

Per chi già conosce Rails e Rails 4 in particolare .... be i primi capitoli sembrerebbero da saltare, ma invece è importante leggerli, anche se velocemente: dal requisito fondamentale di "scollegare" le gemme di ActiveRecord alla definizioni delle classi che utilizzano Mongo al primo approccio con le istruzioni MOPED in sostituzione delle classiche chiamate SQL di ActiveRecord, ed anche la scelta di introdurre concetti come la serializzazione e l'utilizzo di Set o addirittura di classi complesse (serializzandola) rende la lettura ricca di spunti interessanti anche per programmatori più esperti

Il libro scorre velocemente, con un inglese tecnico semplice da comprendere e tradurre e pochi punti che richiedono l'ausilio dell'amato / odiato google traslate :)

Interessanti sono i riferimenti dovuti ad Origin (la gemma che fornisce il supporto alle query per Mongo con un suo DSL) , alle modalità di gestione del journaling , della gestione della cache e delle cancellazioni, così come alla gestione del lock ed al supporto per transazioni (ricordando comunque che , per definizione, un sistema NoSQL non è "transazionale" nell'accezione che se ne fa nel modo SQL)

Nei primi capitoli il testo copre tutti gli aspetti salienti per una modellazione: i differenti metodi di relazione, la differenza tra related document ed embedded document,  le differenti modalità di ricerca, creazione (date un'occhiata al metodo upsert) ed aggiornamento, anche atomico, dei dati.

Si parla anche della gestione degli attributi dinamici... caratteristica di per se semplice da immaginare per un ambiente NoSQL, ma decisamente interessante per chi proviene dal mondo relazionale... gli avrei dedicato qualche attenzione in più!

Tutto il quarto capitolo è sulla gestione delle relazioni. In effetti è un po lungo, e rischia di essere ripetitivo, ma di fatto così è anche un'ottima referenza per comprendere meglio le opzioni di default e gestire le variazioni.

Il Quinto capitolo affronta il mondo di Origin e delle modalità di interrogazione: un argomento fondamentale, per capire appieno le potenzialità di un sistema come Mongo anche per le sue caratteristiche geo-spaziali.

C'è invece da prestare attenzione al capitolo 6 - Performace Tuninig.
Francamente lo avrei diviso... premesso che le performance sono fondamentali per ogni progetto, questo capitolo va a toccare argomenti che vanno dagli indici e monitoring del Mongo , al sistema di aggregazione alle funzioni Map / Reduce: questi ultimi due a mio parere meritavano un capitolo ad-hoc.

Fondamentale, per poter iniziare un progetto con il piede giusto, l'ultimo capitolo, che illustra i vari moduli di MongoID e le gemme (principali) ad oggi utilizzabili e compatibili con questo sistema: aasm , audit , devise .
Magari qualche piccolo esempio sarebbe stato apprezzato.


Quindi che dire... se volete iniziare ad utilizzare Mongo... un ottimo testo per avere a portata di mano tutte le referenze che servono!

----------------------------------
Un ultimo aggiornamento... E' in corso una campagna di Pactk (http://bit.ly/1j26nPN . ) per i loro 2000mo ebook: uno ne compri e uno te ne regalano.... se vi serviva un buon motivo, eccolo!!