I took some training recently in how to use a popular NoSQL database program, MongoDB. So I was happy to read this book. It is NOT a how-to guide for learning to use NoSQL programs and build NoSQL databases. Instead, it is a meaty, well-structured overview aimed primarily at "technical managers, [software] architects, and developers." However, it also is written to appeal to other, not-so-technical readers who are curious about NoSQL databases and where NoSQL could fit into the Big Data picture for their business, institution, or organization. "Making Sense of NoSQL" lives up to its subtitle as: "A guide for managers and the rest of us."
Many executives, managers, consultants and others are dealing with very expensive questions related to Big Data and how it impacts their current databases, database management systems, and the personnel who maintain them. I won't try to summarize the various problems that can bedevil those who operate and update big relational (also known as SQL) databases and their huge arrays of servers assembled over years or decades. Authors Dan McCreary and Ann Kelly are strong proponents, of course, of the NoSQL approach. It offers, they note, "many ways to allow you to grow your database without ever having to shut down your servers." But they also realize that NoSQL likely will not be a good, nor affordable, choice in many cases. Indeed, a blending of SQL and NoSQL systems sometimes may be the best solution. Or, making changes from SQL to NoSQL may not be financially feasible. So they have structured their book into four parts that attempt to help readers "objectively evaluate SQL and NoSQL database systems to see which business problems they solve."
Part 1 of "Making Sense of NoSQL" offers an overview of NoSQL, its history, and its possible business benefits. Part 2 focuses on "database patterns," including "legacy database patterns (which most solution architects are familiar with), NoSQL patterns, and native XML databases." Part 3 examines "how NoSQL solutions solve the real-world business problems of big data, search, high availability, and agility." And Part 4 looks at "two advanced topics associated with NoSQL: functional programming and system security."
McCreary and Kelly point out that "[t]he transition to functional programming requires a paradigm shift away from software designed to control state and toward software that has a focus on independent data transformation." (Erlang, Scala, and F# are some of the functional languages they highlight.) And: "It's no longer sufficient to design a system that will scale to 2, 4, or 8 core processors. You need to ask if your architecture will scale to 100, 1,000, or even 10,000 processors." Meanwhile, various security challenges can come into play as a NoSQL database "becomes popular and is used by multiple projects" across "department trust boundaries."
Along with readers in the target audiences, I would recommend this book to computer science students and others who are trying to stay knowledgeable about Big Data technology and issues.