Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
Cassandra: The Definitive Guide
Recensito da Ciro Fiorillo il 30-03-2011 ore 10:22
Copertina ISBN: 9781449390419
Autori: Eben Hewitt
Editore: O'Reilly
Lingua: Inglese
Anno: 2011
Pagine: 336
Allegati: Nessuno
Intel Cluster Studio XE
Apache Cassandra è uno dei progetti NoSQL free e open source presenti sul Web; nato come incubation project nel gennaio 2009, è stato adottato da diversi sistemi, da Facebook e Twitter a Cisco e Digg, nonostante non sia ancora disponibile una versione 1.0 del prodotto. A proposito di versioni, il testo oggetto di questa recensione è relativo alla release 0.7 di Cassandra.

L'autore del libro oggetto di recensione è Eben Hewitt, direttore dell'architettura delle applicazioni per una global corporation; ha contribuito alla stesura della documentazione di Cassandra ed è autore e technical reviewer di diversi libri tecnici.

Il libro è suddiviso in 12 capitoli ed è arricchito da un'interessante appendice e da un utile glossario; è scritto in un piacevole inglese, molto scorrevole e comprensibile, con la classica impaginazione tipica dei testi O'Reilly.

Il primo capitolo introduce Cassandra e il mondo dei database NoSQL; per chi è nuovo dell'argomento, utilissima si rivela l'appendice, che presenta un'ampia ed esauriente disamina delle diverse tipologie di sistemi non relazionali, evidenziandone le caratteristiche salienti.

Il secondo capitolo illustra il processo di installazione di Cassandra, considerando sia l'utilizzo dei sorgenti che dei binari precompilati, in ambiente Linux e Windows. Nel terzo capitolo viene esaminata l'architettura di Cassandra, con una particolare attenzione da parte dell'autore nell'evitare accostamenti infelici dei concetti propri di questo database con quelli che sono i fondamenti dei database relazionali, soprattutto quando sono presentate le Column e le Column Families; seppure alcuni passaggi richiedano un'attenta lettura, il tutto risulta abbastanza chiaro ed evita pericolosi fraintendimenti in chi inizia ad apprendere per la prima volta l'architettura di un database NoSQL. Al termine del capitolo sono illustrati anche alcuni i pattern di utilizzo comune fra gli utenti di Cassandra.

Il quarto capitolo presenta un'applicazione di esempio, costituita da un sistema di prenotazione alberghiero, mostrando come cambi l'approccio alla progettazione delle applicazioni quando si utilizza un database NoSQL rispetto al classico approccio relazionale. Nel capitolo sono presenti i sorgenti completi dell'applicazione, anche se la stessa non è ovviamente completa di tutte le funzionalità per ovvi motivi di spazio. Le intere pagine di codice sorgente, introdotte da poche righe di commento, potevano probabilmente essere meglio organizzate, intervallando all'interno del codice alcune sezioni di testo esplicativo, evidenziando le parti salienti (anche graficamente) per consentire al lettore di concentrare l'attenzione su tali porzioni di codice in maniera più veloce e mirata. Poiché nella pratica si userà raramente il tipo di approccio presentato, utilizzando tipicamente uno dei client disponibili e descritti nel capitolo ottavo e non direttamente le API Thrift e Avro, si sarebbe potuto dedicare anche meno spazio ai sorgenti, comunque disponibili online.

Nel quinto capitolo vengono esaminati gli aspetti architetturali di Cassandra, fornendo utili indicazioni anche sulle modalità con le quali vengono eseguite le operazioni internamente. Nel corso del capitolo il lettore familiarizza con concetti quali il Keyspace System, il protocollo Gossip per le comunicazioni fra nodi e il rilevamento di malfunzionamenti, con la controparte del sistema Anti-Entropy (come in Amazon Dynamo) e i meccanismi per effettuare il Read Repair. L'utilizzo di Memtables, SSTables e Commit Logs, i Tombstones, i filtri Bloom, l'operazione di Compaction per il merge dei dati nelle SSTables, sono tutti argomenti affrontati con estrema chiarezza e semplicità.

Nel sesto capitolo viene dettagliata la configurazione di Cassandra, con la descrizione dei diversi parametri disponibili; sono passati in rassegna anche i punti di estensione presenti nel sistema per l'implementazione di diverse funzionalità con strategie personalizzabili, come il partizionamento dei dati e le politiche di autenticazione/autorizzazione. Il capitolo settimo è dedicato alle operazioni di lettura, scrittura e cancellazione dei dati in Cassandra, presentando l'utilizzo dei predicati slice per limitare le colonne interessate dall'estrazione dei dati o dei range di chiavi.

Come anticipato in precedenza, nel capitolo ottavo sono presentati i client che possono essere sfruttati per utilizzare Cassandra nelle proprie applicazioni. Vengono presentate dapprima le interfacce Thrift e Avro, per poi passare ai client più evoluti per Java (Hector e Pelops), .NET (HectorSharp), Python (Chiton).

Il nono capitolo è dedicato alla supervisione di un cluster basato su Cassandra, dal logging alla gestione remota mediante Java Management Extensions (JMX), agli strumenti per la verifica di eventuali problemi relativi alla memoria o al threading. Nel capitolo decimo vengono mostrati i comandi necessari alla manutenzione del nostro Ring grazie all'utilizzo di nodetool, per operazioni che vanno dalla raccolta di informazioni di utilizzo e statistiche, alla riparazione dei nodi e al bilanciamento del carico nel cluster.

Per completare la panoramica sulla gestione di Cassandra, nel capitolo undicesimo vengono presentate le operazioni che consentono un miglioramento delle prestazioni; nel capitolo trova spazio anche l'introduzione di uno strumento in Python per lo stress test. Il dodicesimo e ultimo capitolo è scritto da Jeremy Hanna, e descrive l'integrazione di Cassandra con Hadoop, ossia come applicare l'algoritmo MapReduce ai dati di Cassandra, presentando un esempio per il conteggio delle parole.

Chiude il libro, dopo la già citata appendice sui database NoSQL, il glossario dei termini, di utile consultazione soprattutto durante la lettura dei capitoli che descrivono l'architettura di Cassandra.
proLibro esauriente, presenta il prodotto in maniera completa, con un approccio che soddisfa sia lo sviluppatore che il sistemista, senza tralasciare alcun aspetto. Per la semplicità del linguaggio utilizzato e la presenza di molti esempi di codice, il testo può essere utilizzato con profitto anche da chi si avvicina per la prima volta a Cassandra, con un'ottima introduzione ai database NoSQL. I contenuti sono aggiornati all'ultima major release disponibile.
controNiente da segnalare.
Precedente: Utilizzare PHP per interagire con le Plurk API
Successiva: Le prime 48 ore di Firefox 4
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.404 secondi.