Back in August, I wrote an article for the Developer Tips Newsletter titled "Domino Was NoSQL Before NoSQL Was Cool". In it, I talked a little about how Domino's "NoSQL" database is both a blessing and a curse when it comes to trying to explain exactly where Domino fits in your environment. To get deeper into the whole topic of NoSQL (and to see how Domino fits in that world), I read "NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence" by Pramodkumar J Sadalage and Martin Fowler. Not only do I now have a better understanding of the entire NoSQL topic, but I also better understand some of the unique ways that Domino has dealt with the pros and cons of this style of data storage.
Sadalage and Fowler do an excellent job in making NoSQL Distilled an "easy" read in terms of interest and flow. Their goal is not to give you an encyclopedic knowledge of every type of NoSQL implementation and product offering. Instead, they aim to give you a solid grasp of the basics, with references back to actual database implementations that use the various structures. Even after reading just the first two chapters, you should have a much clearer understanding of what makes up a NoSQL database and the various data models used to implement it. I could have stopped right there and still have been happy with the value. But it continues to deliver throughout each remaining chapter.
Part 2 of the book is where many of the "I get it" moments happened for me. As a Domino developer, I naturally read chapter 9, Document Databases, with interest. That's the structure that Domino uses (and is in fact mentioned by name in the chapter), as well as CouchDB. If you're unfamiliar with CouchDB, it was created by Damien Katz, who was also one of the chief developers at IBM working on the Domino product before leaving to start his own project. It's one of the reasons there are so many similar architectural concepts for data when you compare the two. The authors dive into what is meant by a "document database" when it comes to NoSQL, and how it plays out in terms of how data is stored. As with the rest of the chapters, they give some examples as to how document databases differ from the traditional relational model, suitable use cases for that type of database, and most importantly, when *not* to use that type of model. Although it doesn't mention Domino specifically throughout the chapter, it's easy to take their recommendations and understand why Domino is great for some projects and absolutely the wrong choice for others.
"NoSQL Distilled" is a book that is well worth the time you'll spend reading it. Not only will you have a few "ah-ha" moments when it comes to working with and using Domino, but you'll also come away with a greater appreciation of the whole NoSQL topic and how you can use that for your own projects going forward.
Table of Contents Part 1: Understand Chapter 1: Why NoSQL? Chapter 2: Aggregate Data Models Chapter 3: More Details on Data Models Chapter 4: Distribution Models Chapter 5: Consistency Chapter 6: Version Stamps Chapter 7: Map-Reduce Part 2: Implement Chapter 8: Key-Value Databases Chapter 9: Document Databases Chapter 10: Column-Family Stores Chapter 11: Graph Databases Chapter 12: Schema Migrations Chapter 13: Polyglot Persistence Chapter 14: Beyond NoSQL Chapter 15: Choosing Your Database Bibliography Index
What did you think of this review?
Fun to Read
About the reviewer
Thomas Duff (duffbert)
Thomas Duff, aka "Duffbert", is a long-time member of the Lotus community. He's primarily focused on the development side of the Notes/Domino environment, currently working for a large insurance … more
Pramod J. Sadalage, Principal Consultant at ThoughtWorks, enjoys the rare role of bridging the divide between database professionals and application developers. He regularly consults with clients who have particularly challenging data needs requiring new technologies and techniques. He developed pioneering techniques that allowed relational databases to be designed in an evolutionary manner based on version-controlled schema migrations. With Scott Ambler, he coauthoredRefactoring Databases(Addison-Wesley, 2006).
Martin Fowler, Chief Scientist at ThoughtWorks, focuses on better ways to design software systems and improve developer productivity. His books include Patterns of Enterprise Application Architecture; UML Distilled, Third Edition; Domain-SpecificLanguages (with Rebecca Parsons); and Refactoring: Improving the Design of Existing Code (with Kent Beck, John Brant, and William Opdyke). All are published by Addison-Wesley.