RavenDB Introduction and Resources

RavenDB is a document-oriented NoSQL database system which stores each document in JSON format.

It developed out of the lack of available document databases that would work on a Windows system without causing significant issues. While there are applications out there that deal with document databases, nothing was developed specifically for the .NET framework.

Getting Started: What Are Databases?

Databases are used to store and organize large amounts of data. There are many different types of databases but when it comes to software development, the most commonly used type is a relational database. Most relational databases use the SQL query language to access the data which is stored in predefined tables. The complexity of SQL databases led developers to find a simpler approach which gave rise to NoSQL databases.

What is a NoSQL Database?

NoSQL databases provide a simpler and faster way to organize an extremely high-volume of disparate data types. Instead of using predefined structures to store the data, which require taking the database offline to make changes, NoSQL databases allow programmers to add new data on the fly. There are different types of NoSQL databases, depending on which model they use to store data. One model of storing data is a document-oriented database such as XML or RavenDB. Others include key-value stores such as BerkelyDB, wide-column stores such as Cassandra, graph databases such as Neo4J, and more.

What Is a Document-Oriented Database?

A document-oriented database stores all data relating to a single object in a single document, typically in JSON or XML format. This makes mapping objects into the database a lot easier.

RavenDB History

The man behind this database system is Oren Eini, an independent consultant who strives to promote quality software and reduce pain points in software development. Like many programmers and software developers who seek to expand their skills, Oren wanted to push his Erlang abilities further so he set out to read the CouchDB source code.

This piqued his interest in NoSQL. As a result, he began to implement his own document database. This was the first version of what became RavenDB, and things progressed naturally from there.

Once Oren realized that document databases could have a wider application and that .NET developers could benefit from it, he refined his initial idea and RavenDB was born. It's still a young project but brings a lot of benefits to the table for the .NET ecosystem.

Features

RavenDB is open source and has a commercial license available. It comes with the following features:

  • It includes a fully functional .NET and Java client APIs.
  • Developers can take advantage of JavaScript to access the libraries because it is REST based.
  • It has trigger support that allows developers to do things like document merges, auditing, versioning, and authorization.
  • It is scalable and secure.
  • It runs natively on Windows.
  • And it is built with performance in mind — the storage can handle up to 16 TB on a single machine.

Resources

Even though it is relatively young (the initial concept was developed around 2009), there are various resources available to help you get started with RavenDB. They include online resources, books, and a couple of online communities where you can ask questions and share your problems and solutions with others.

Official Resources

The following resources provide the list of official websites, documentation, and beginning steps.

  • Official Website: the online home of RavenDB where you can learn more about it and download it.
  • RavenDB Documentation: this is where all the official documentation is stored.
  • Hibernating Rhinos: the company that was born out of work on RavenDB has a great blog with a nice collection of tutorials and articles.
  • Ayende.com: the official blog of Oren Eini who writes under the pseudonym Ayende Rahien and regularly publishes blog posts that showcase examples of the system in use.

Online Tutorials

The tutorials in this section range from beginning to more advanced and cover everything from general concepts to specific applications.

Books

If you prefer a thorough reading material, the following books will provide you with plenty of information and useful advice.

  • RavenDB 2.x Beginner's Guide (2013) by Khaled Tannir: introduces the key concepts and teaches you everything, from the installation to creating documents, and querying indexes. This book will give you a solid foundation on which you can create your .NET applications.
  • RavenDB High Performance (2013) by Brian Ritchie: this book moves beyond the basics and guides you through building scalable applications using the system's rich features and extensibility.
  • RavenDB in Action (2013) by Itamar Syn-Hershko: a complete guide that goes from covering the basics to diving into core features and techniques.

Online Communities

Should you need any help along the way or simply want to talk with others following in the same steps as you, then consider joining the following groups.

  • Google Group: a very active Google group used for general support and discussion.
  • StackExchange: the go-to place for all questions related to programming, StackExchange has a decent number of topics discussing Raven.

Go Forth and Master Raven

The resources on this list are just the tip of the iceberg but should provide a nice starting point for anyone looking to transition into document-oriented databases. Once you get the hang of it, we're sure you'll come up with a few ideas of your own. So now's the time to start mastering RavenDB.


Further Reading and Resources

We have more guides, tutorials, and infographics related to coding and development:

  • ASP Resources: find out about scripting for the .NET framework.
  • SQL Resources: our general SQL resource that is critical for all relational database developers.
  • Introduction to ADO.NET: learn all about this system for using any database at all inside the .NET framework.

Ultimate Guide to Web Hosting

If you are going to be creating database driven applications, you are going to need to host them somewhere. Check out our Ultimate Guide to Web Hosting. It will explain everything you need to know in order to make an informed choice.