RavenDB
Developer(s)Hibernating Rhinos
Initial releaseNovember 2010
Stable release
Written inC#
Operating systemWindows
TypeDocument-oriented database
License
Websiteravendb.net

RavenDB is a document-oriented database for the .NET platform. It is written in C# and has API support in C#, VB.NET and Java. RavenDB is classified as a NoSQL database as it stores its data in JSON format without any fixed schema. RavenDB is transactional with full ACID[1] compliance. RavenDB is published by Hibernating Rhinos[2] for any free, open source software under the GNU AGPL license and for commercial purposes under different proprietary licenses.

History and motivation

edit

The initial version of RavenDB was released in November 2010[3]. The developer claims that the main reason behind developing RavenDB was to have a NoSQL database for .NET that performed the tasks without "any friction"[4]. It is also the first NoSQL database to support LINQ. LINQ is a object-relational mapping for .NET languages.

Features

edit

Some of the important features of RavenDB are:

Document-oriented

edit

RavenDB is a document database which uses JSON to store documents. The documents does not have a fixed schema. These are used to store semi-structured data. Each document has an id associated with it. A set of documents is called a collection.

ACID

edit

RavenDB's database-writes and some of the simple queries are ACID compliant. However, complex queries are not ACID compliant and supports only eventual consistency.[1]

  • Dynamic indexing RavenDB executes all of the queries against an index. It automatically creates one if it does not find any usable index for a query.[5] Dynamic indexes are automatically removed if it remain unused for specific period of time. The index is created asynchronously with respect to write operations and hence could be stale.
  • Static Indexing Indexes can also be built statically ahead of time using commands and implementing a custom class. [6]

Replication and sharding

edit

RavenDB ensures high availability by supporting replication of documents. After every commit, the replication module will query for the list of replication-instances. For each of those instances, it gets the last document that was replicated onto that instance and sends the updated versions of the document[7].

RavenDB comes with in-built sharding support. A user is entasked with specifying the shard function, ie, how the data is divided between different servers. Rest of the sharding-related tasks are handled inherently.[8]

edit

RavenDB indexes all the content using Apache Lucene to provide full-text search capabilities[9]. As a result, all the queries are in Lucene style syntax. It also supports LINQ based query along with type support[5].

RavenFS

edit

RavenDB supports very large binary files using a distributed and virtual file system called RavenFS.[10] It also replicates content for high-availability and indexes the meta-data of the files to allows search on the meta data of the file. The files can be managed using the management studio web interface.

RavenHQ

edit

RavenHQ is a official cloud-based hosting solution for RavenDB. The solutions for upgrades, backup, high-availability, etc are pre-configured in the server.[11]  

Comparison against MongoDB

edit

RavenDB supports most of the features that MongoDB does, viz, document store, open source software, schema-free, sharding, replication, etc[12].

However, there are some features that are different across these databases.

  • Unlike MongoDB, which is supported across multiple operating systems, RavenDB server runs only on Windows.
  • RavenDB does not support variable types as MongoDB does.
  • RavenDB supports only .NET programming language whereas MongoDB supports a plethora of languages. The method of access using RavenDB is either by the .NET client APIs or the RESTFul HTTP APIs, whereas MongoDB uses its own proprietary protocol.
  • RavenDB provides ACID compliance whereas MongoDB does not.

Architecture

edit

Language support

edit

RavenDB is fully written in C#. It offers client APIs for C#, Java and VB.NET[13].

The licenses for RavenDB are available for both open-source and proprietary software. It uses the AGPL license for the free version. There are different versions of licenses[14] available for commercial closed source softwares.

RavenDB server comes with an inbuilt web interface for management, running on port 8080, called the Management Studio. It allows the users and administrators to manage documents and indexes, make queries and configure different settings.[15]

See also

edit

References

edit
  1. ^ a b "RavenDB, ACID & BASE - Ayende @ Rahien". ayende.com. Retrieved 2016-02-08.
  2. ^ "Hibernating Rhinos". hibernatingrhinos.com. Retrieved 2016-02-08.
  3. ^ "About RavenDB". ravendb.net.
  4. ^ "Why RavenDB?". ayende.com.
  5. ^ a b "RavenDB - Documentation - 3.0 - Basics". ravendb.net. Retrieved 2016-02-08.
  6. ^ "RavenDB - Documentation - 3.0 - Creating and deploying indexes". ravendb.net. Retrieved 2016-02-08.
  7. ^ "RavenDB - Documentation - 3.0 - Replication". ravendb.net. Retrieved 2016-02-09.
  8. ^ "RavenDB - Documentation - 3.0 - Sharding". ravendb.net. Retrieved 2016-02-09.
  9. ^ "RavenDB - Documentation - 3.0 - Indexing basics". ravendb.net. Retrieved 2016-02-09.
  10. ^ "RavenDB - Documentation - 3.0 - What is RavenFS?". ravendb.net. Retrieved 2016-02-08.
  11. ^ "RavenHQ". ravenhq.com. Retrieved 2016-02-08.
  12. ^ http://db-engines.com/en/system/CouchDB%3BMongoDB%3BRavenDB. {{cite web}}: Missing or empty |title= (help)
  13. ^ "RavenDB Features". ravendb.net. Retrieved 2016-02-09.
  14. ^ "RavenDB licensing". ravendb.net. Retrieved 2016-02-09.
  15. ^ "RavenDB - Documentation - 3.0 - Accessing Studio". ravendb.net. Retrieved 2016-02-09.
edit