Tuesday, April 23, 2013
Book Review: Instant Apache Cassandra for Developers Starter from PACKT
My good friend Vivek Mishra asked me to review his new book, Instant Apache Cassandra for Developers Starter. (http://www.packtpub.com/apache-cassandra-for-developers/book)
Vivek is a rockstar, leading Kundera, where he cranks out code that allows people to access Cassandra via JPA. (See: https://github.com/impetus-opensource/Kundera)
His book is an excellent primer on Cassandra. The initial sections are clear and concise, describing the necessary fundamentals required to get started. IMHO, to be successful with Cassandra, you need to undersand the distributed storage model. Vivek does a great job of describing this, and the write path, another critical element.
About half way through, the book transitions, focusing much more on example code. Vivek's bias creeps in a bit here, focusing heavily on Kundera. I have mixed emotions about accessing Cassandra from JPA. But I think its absolutely critical if you are attempting to consolidate storage into a single database. If you are, Kundera is perfect. It allows you to use Cassandra like any other relational store.
If instead, you are taking a polyglot approach, or you are using Cassandra specifically for its "NoSQL-ness", then JPA access might obfuscate the power of the simple/scalable data model at the heart of C*. That however may be changing, given the increased use of CQL, where C* has found a way to expose all the "NoSQL-ness" via a SQL-like interface... provided you understand how to translate the two!
Regardless, Vivek did a great job with the book. You will easily save the cost of the book in time getting started with C* and JPA.
Be sure to read it through (don't stop at the JPA example!). Vivek saved the best for last. I'd say the best nuggets in the book are in the aptly named section: "Top features you'll want to know about" (pg. 29)
Cassandra's blessing, and its curse, is the wide variety of methods that you can use to access it. (Hector & Astyanax (for Thrift), Virgil (for REST), CQL (for SQL), and Kundera (for JPA)) But you can't fault C* for that, its a thriving inventive community applying C* to all sorts of problems. And given its growth, it may only get worse... but in a good way. (I still hope to revive Spring Data for C* =)