NoSQL Distilled: A Brief Guide to the Emerging World of Polyglot Persistence (英語) ペーパーバック – 2012/8/17
Kindle 端末は必要ありません。無料 Kindle アプリのいずれかをダウンロードすると、スマートフォン、タブレットPCで Kindle 本をお読みいただけます。
The need to handle increasingly larger data volumes is one factor driving the adoption of a new class of nonrelational “NoSQL” databases. Advocates of NoSQL databases claim they can be used to build systems that are more performant, scale better, and are easier to program.
NoSQL Distilled is a concise but thorough introduction to this rapidly emerging technology. Pramod J. Sadalage and Martin Fowler explain how NoSQL databases work and the ways that they may be a superior alternative to a traditional RDBMS. The authors provide a fast-paced guide to the concepts you need to know in order to evaluate whether NoSQL databases are right for your needs and, if so, which technologies you should explore further.
The first part of the book concentrates on core concepts, including schemaless data models, aggregates, new distribution models, the CAP theorem, and map-reduce. In the second part, the authors explore architectural and design issues associated with implementing NoSQL. They also present realistic use cases that demonstrate NoSQL databases at work and feature representative examples using Riak, MongoDB, Cassandra, and Neo4j.
In addition, by drawing on Pramod Sadalage’s pioneering work, NoSQL Distilled shows how to implement evolutionary design with schema migration: an essential technique for applying NoSQL databases. The book concludes by describing how NoSQL is ushering in a new age of Polyglot Persistence, where multiple data-storage worlds coexist, and architects can choose the technology best optimized for each type of data access.
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 coauthored Refactoring 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-Specific Languages (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.
No more! The authors of this book present a wonderful, accessible, product-agnostic introduction to the world of NoSQL. The book first covers the four major kinds of NoSQL databases (key-value, document, column family and graph) via a highly practitioner-oriented comparative study. It then goes into various scalability issues and trade-offs, including distribution models, CAP theorem and its implications, an introduction to Map-reduce and so on. This book has demystified much of NoSQL for me and made it seem quite common-sensical.
If you are new to the Hadoop-NoSQL world, this is the book to start with before delving into any specific technology or jargon. I think that after this high-level introduction, a deep-dive using a book like 'Seven Databases in Seven Weeks' is a logical next step.
It seems to emphasize that distributed systems is the 'raison de etre' for No-SQL. While probably true im ost cases (and the author does make it clear it can be useful even in single servers), this emphasizes the large volume meaning of 'Big Data', also helping a lot in velocity, but, to me, less on variery or complexity (though he does discuss schema-less approaches like in most of No-SQL, he does recognize there is an inherent schema in the application, and does not deal other than in passing with complexity issues involving the complex relationships present in the data, or the discovering or use of those). As such one is left wondering how it is that No-SQL techniques may help in complex analytics, other than in forming averages or simple statistics.
The book's No-SQL concepts are based on Domain-Driven Design, and the concept of aggreagates. Those are a nice way to lump the different approaches, and then differentiate.
The book has some examples and code or pseudo-code snippets, relatively simple ones, somewhat explained. but to me it did not have enough of any of them to learn from. It just gives the reader a flavor. It covers the CAP theorem and its implications for cluster consistency and latency, again at the same level as the rest. It covers the basics of Map-Reduce, and references a couple of languages, but there's no code shown or attempt to teach the basics of implementation. It has some code using Riak, it is never clear whether or why one should use it, an dnot another.
For a 'principles or theoretical' book it has few graphics, and the graphics are relatively simple. [caveat: I have the Kindle version, have no idea if the hardcopy has more or different -- I hope not]. Again, not enough to learn it well.
In summary, it is a nice principles-centered way of introducing No-SQL approaches, with its (probably) semi-unique and integrative way of introducing the No-SQL approach based on aggregates, and it is not hard to follow, even for 'practical' readers. I enjoyed the integrative approach, it tied some concepts together for me. But it does not get into details enough so I can start doing anything, or even to have a basis for decisions on which technologies to pick. Enough to be mystified and want to learn more, not enough to know how.
Wireless Bob (who also does Databases)
[Caveat: this is purely an individual's opinion, and there is no warranty of truthfulness or accuracy or completness or consistency, or anything else]
I had zero knowledge of NoSQL until opening this book. Although I've had more than 10 years experience in building complex relational databases, there was no obvious bridge to transition from relational to non-relational databases. Books on MongoDB, etc, were of little help, because they assumed I'd already made the conceptual leap.
Enter this book ... and wow, all the mystery just melted away! The writing is so lucid, methodical and thoughtful that all those new ideas became immediately understandable!
Important points to note are as follows.
1. This is a conceptual book, not a coding book. It explains what NoSQL is all about, and clearly sets out how the various NoSQL databases differ from relational databases.
2. There is a big focus on explaining how the various types of NoSQL databases differ from one another (e.g. graph vs column databases). By the end of the book I had a clear understanding of which types of database would be best suited to each of the applications I'm currently developing.
3. The book has a very strong practical orientation. For instance, there are really solid discussions about matters such as:
a. when you'd use a NoSQL database even if you wanted to run the database on a single server,
b. the challenges of running across multiple servers (e.g. read/write conflicts and lags), and
c. the pros and cons of the different types of databases in practice - e.g. certain types of queries are easy with some NoSQL databases but hard with others.
The book also emphasizes the need for domain expertise (rather than just technical expertise) in making the right compromises when choosing a type of database.
4. You'll need to have a reasonably good understanding of databases to get value from this book. The perfect reader is probably someone like me, with lots of experience in relational databases but with little or no knowledge of the non-relational world.
5. The book is incredibly easy to understand - and enjoyable. I read the book almost as easily as a novel. In less than a week - with just a couple of hours of reading every night (admittedly, with a glass of red wine to aid learning!) - I'd reached the last page!
Above all, the authors' hands-on experience shines brightly throughout the whole book. Too many of the technical books I read are written by authors who have lots of theoretical knowledge but who have never built/run a big application with millions of actual users or where the penalty for messing up data can be a massive lawsuit. This book is very different: the authors clearly have considerable experience in implementation.
Bottom line: this is a thoughtful, lucid explanation of NoSQL ... enjoyable to read .... and definitely one of the most valuable tech books I've read in years!
- 洋書 > Computers & Technology > Databases > Data Mining
- 洋書 > Computers & Technology > Databases > SQL
- 洋書 > Computers & Technology > Networking > Network Administration
- 洋書 > Computers & Technology > Programming > Graphics & Multimedia
- 洋書 > Computers & Technology > Programming > Languages & Tools
- 洋書 > Education & Reference