Built for query speed and flexibility, RavenDB is designed as a document store into which “you can just dump all your objects.” The driving forces behind RavenDB are Oren Eini (aka Ayende Rahien) and the company Hibernating Rhinos. A key design goal was to “make it a joy to develop applications because (RavenDB) gets out of your way.” RavenDB is schema-less, scalable and has built-in support for replication, sharding and multi-tenancy. At the same time, RavenDB also supports ACID (Atomicity, Consistency, Isolation, and Durability) transactions, both on one node and between different nodes.
Any Platform You Like – As Long As It’s .NET
RavenDB is written in .NET. Querying can be done using LINQ (Language Integrated Query) in .NET applications. In addition, the document data store also offers a client API specifically designed for .NET and Silverlight interactions. More generally and because data is stored in JSON format, clients that communicate via HTTP (REST over HTTP) and JSON will also be able to access RavenDB stored data. The data store is available for use as open-source software under the AGPL license. That means that while it is freely available, users must buy a commercial license if they want to use the technology with proprietary software. An ISV (Independent Software Vendor) license allows royalty-free distribution of RavenDB. This may be either embedded in the ISV’s software or in server mode together with the ISV’s own software.
RavenDB is also available as a hosted solution, the official version being RavenHQ. This fully managed solution handles installation, updates, security, backups and licensing. While Hibernating Rhinos collaborated in setting up the hosted solution, RavenHQ is a separate company. Some users have also installed RavenDB in the Microsoft Azure environment.
Do This – Don’t Do This
RavenDB appeals to users and organizations looking for efficiency in developing web applications. While offering the flexibility of schema-less operation, RavenDB works well with many CRUD (Create, Retrieve, Update, Delete) type operations. It is suited to OLTP (online transaction processing) in particular. The data store works well for fast query processing (numbers of transactions per second) while maintaining data integrity. On the other hand, RavenDB is less well-suited to reporting database or OLAP (online analytical processing) type operations. However, reporting databases are lower transaction volume, multi-dimensional schema entities that are often built separately to their OLTP counterparts. Oren Eini suggests using a separate star schema or cube database and doing the reporting directly from there.
Who Uses RavenDB Today?
The biggest reference for RavenDB is the US cable and satellite channel MSNBC (msnbc.com.) Software development teams for this company confirm rapid development cycles thanks to schema-less nature of the data store. Insurance Marketing Technology, also in the US (Harrisburg, PA), uses RavenDB as a base for its services too. Elsewhere, Visa Global Logistics in Australia uses RavenDB in a real time shipment tracking and tracing application. Getmusic.com.au uses it to offer almost two million different products and hundreds of thousands of MP3 streams. In Japan, Nomura uses RavenDB as part of its infrastructure for providing investment and financial services.