Book Image

RavenDB High Performance

By : Brian Ritchie
Book Image

RavenDB High Performance

By: Brian Ritchie

Overview of this book

<p>RavenDB is an exciting technology that challenges developers to reconsider their old ways of thinking about databases. In this day and age, Internet-scale applications require this fresh perspective. RavenDB High Performance moves beyond the basics and guides you through building scalable applications using the rich features and extensibility of RavenDB.</p> <p>RavenDB High Performance cuts through the noise and focuses on the key information you need to build scalable applications on the RavenDB document database. The book discusses every aspect of building a high performance system, from modeling your data to deploying it in a clustered environment. Examples are provided to make this information easy to apply to your specific application scenario.</p> <p>Beginning with the NoSQL movement, RavenDB High Performance delves into the forces pushing developers beyond the traditional relational database solutions. From there, the book focuses on the design and development of web-based applications on RavenDB. It gives clear advice and examples to guide the reader through this new and exciting technology. Data modeling through documents is discussed in detail. This understanding is critical for building clean code and scalable applications. Once this foundation is established, the author focuses on key APIs that optimize data access and give end users great experiences. Scaling out and high availability techniques are also discussed in detail.</p> <p>RavenDB High Performance brings together the resources you need for building scalable applications on RavenDB in an easy to understand and use format. Advice, diagrams, and code will help you quickly understand the concepts that you will apply to your next application.</p>
Table of Contents (17 chapters)
RavenDB High Performance
Credits
Foreword
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Foreword

About five years ago, I was working as a consultant dealing with a lot of "Strategic projects" for customers. Strategic project, I have learned, was a code name for something that costs a lot of money, and was usually in trouble.

At that time, I was dealing mostly with NHibernate (open source object relational mapper library), so I had a chance to see the type of issues people run into with their databases. In essence, those issues came in two different flavors. The first flavor was "let us try to shove a square through a round hole" in which the project was trying to do things that the poor RDBMS was just never meant to do. And the second flavor was "we are in a hurry, just get it over with" style.

A memorable occasion of running into that was the 15K project. I named it that way because every single page view would generate 15,000 database queries. And just to make sure that it is no mistake, yes, I am talking about fifteen thousand queries per page.

That is how RavenDB was born. I decided that I wanted to create a database that would make sense. A database you wouldn't have to fight with all day just to get where you want. RavenDB was designed to be a second generation database. That isn't just a slogan; it means that we have taken a lot of time to look at what else was around, to see what worked and where things didn't quite work.

Few of the things that we really tried were to go with: it just works, safe by default, and falling into the pit of success. That means, by default, RavenDB is going to try to do the right thing. But we also know that we can't figure one out on our own for all scenarios, so we also added a lot of knobs that you can tweak to make sure that RavenDB is doing exactly what you want it to do.

You can think about it like a game. You can come in and start playing, and everything is going to be really fun. But, there is also an entire extra layer that you can explore; this includes cheat codes, secret levels, and god mode.

That is what this book is meant to be. It is the cheat sheet that you can refer to get the absolute most from your RavenDB application. This is a book that is meant to take you from the merely good to the absolutely awesome. It explores a lot of the nooks and crannies in RavenDB; all the things that you need to know beyond the basics.

Brian has done a great job in not only explaining how things work, but also in selecting what are the sort of things that you need to know. The book covers issues such as scaling out (both sharding and replication), deploying to the cloud, multiple ways to extend RavenDB and customize it to your needs, monitoring in production, and a whole host of other things.

I would especially pay attention to the chapters about optimizing your data model and API, although I expect most people would go directly to the scale out sections. I have found that by making relatively small changes in the way I am modeling my data, I can get quite a bit more from my systems, without making the jump for a distributed system.

And after I actually move to a multi-node system, whether it is a highly available cluster or a set of sharded node (or indeed, the common mode of sharded and replicated cluster), the actual data model is probably the most important aspect for performance, scalability, and maintainability.

To summarize, go ahead and do the cool stuff first. But pay attention to the whole book. I think that Brian has done an excellent job in getting the crucial information you need to really get the most from RavenDB. And this book is one of the best ways to go from being merely proficient to being absolutely awesome.

Enjoy reading!

Oren Eini aka Ayende Rahien

Hibernating Rhinos