This is a good book technical managers and senior developers who are exploring NoSQL technologies in their environment. It provides a very good, broad foundation in NoSQL, starting with the benefits and different types of NoSQL systems (e.g. key/value stores, graph stores, column stores and document stores) with a few example products of each type.
It contains case studies of using relevant systems in use on sites like Amazon, Google, Apache and LiveJournal, and considerations when implementing NoSQL where there are varying degrees of risk, such as a sales orders system versus a read-mostly search platform.
Crucially, it explains how systems using NoSQL ("Not Only SQL") technologies can complement existing traditional RDBMS-powered systems, rather than replace them altogether. It discusses which NoSQL systems are suited for different kinds of optimization of legacy systems, depending on the technical benefits required. While less technical than later sections, these chapters may help in the practical implementation of NoSQL within business, for example by helping to achieve buy-in from stakeholders by positioning the adoption of NoSQL alongside existing relational databases, in order to increase the features available or to address an underlying weakness.
The second half of the book deals with how to scale NoSQL systems for big data, native XML databases, high availability, search, security and some functional programming. While this is not a book for detailed implementation of a specific solution, it provides a moderate level of technical detail in the course of discussing the different systems, such as native XML databases and Erlang code.
Each chapter contains the main text, charts & diagrams, and one or more case studies. This is followed by a short summary, and a section on further reading, with both web URLs and books for each of the topics covered in that chapter. Taken together this is a comprehensive introduction to the NoSQL world. While some of the material was a bit dense for me at times, it’s helped me to understand the overall NoSQL landscape and provided me with a base level of understanding of the different systems available. Well worth it.
This is a very enterprise-y look at NoSQL, with an emphasis on workflows and decision-making processes rather than how to actually get on with using NoSQL tools. Before buying it, take note of the subtitle: "A guide for managers and the rest of us". As a software developer, I found the lack of detail frustrating. There was relatively little content on using NoSQL, or quantitative data comparing different NoSQL systems, which is what I would want to have in order to make an informed decision about NoSQL technologies. It's also what I'd want any manager to have before making a decision about which technology to use.
The book first makes the case for NoSQL, by comparison with traditional SQL systems in the context of the CAP theorem (the idea that a database store can't guarantee to be consistent and always available and tolerant to a partition going down -- you can't have all three qualities). Case studies where NoSQL outperforms SQL are described, giving some context to the rest of the book: SQL is still best for some problems, but NoSQL is often stronger for huge datasets, search problems, high availability services and Agile development (though this is a moot point: many ORMs make SQL just as easy to use with Agile processes). There's also an introduction to functional languages, and why they work well with NoSQL databases, and the book covers security and auditing in NoSQL.
Overall, I was disappointed with the book. Early on, there is a taxonomy of the different types of NoSQL database, and I knew the book ended with a chapter on how to select the right NoSQL solution for a problem, which I was expecting to be very useful. In the end, this chapter turned out to be a description of a formal process for considering the interests of all stakeholders, making weighted, reportable decisions and managing people to a decision. This, in my opinion, is much less useful than what I was expecting: a way of deciding exactly which NoSQL system to use, rather than which *type* of system. In fact, the book is fairly light on information about different NoSQL implementations, and stays at a fairly high level of abstraction, discussing the different types of system. This may be because NoSQL solutions are still in flux and developing quickly but this was one of the things I was most excitedly anticipating in the book and it wasn't there.
This is a book for manager and developers who wants the broad understanding of what NoSQL is and isn't. As a developer that knows nothing about NoSQL, you will not be able to read this book and begin implementing a NoSQL solution. For the details of how to program against these databases you will have to look elsewhere (and the book never promises that you will be able to). You will however know and understand the different kinds of NoSQL databases and when to use which type. This is explained really good - Both with technical details and examplified with case studies.
The book is split into four parts: The first part is an introduction to NoSQL concepts and the benefits of NoSQL. This part is a bit annoying, because it is repeatetly said that NoSQL is better and scales bettder than relational databases, but I don't feel the author gives an explanation as to why this is true - it feels a little like the author is preaching NoSQL, and at least there is no doubt he is a fan. This is rectified plenty in the later sections, so if you are like me, just push through, and you will get to the good stuff. The Second part is a walkthrough of the different kind of databases, bot the relational and NoSQL databases. This gives a good understanding of what each type does well and not so well. The third part is about NoSQL solutions with discussions about scaling, search and performance of different systems with references to real world solutions. The fourht and last part is about the use of functional programming and utilizing the parallelism of NoSQL systems, which typically have many thousand CPUs.
This is a great book to get an overview of what NoSQL is and when to apply it.