RavenDB

Last updated
RavenDB
Original author(s) Oren Eini (aka Ayende Rahien)
Developer(s) Hibernating Rhinos [1]
Initial release2010;14 years ago (2010) [2]
Stable release
5.3 / November 2021;2 years ago (2021-11) [3]
Repository
Written in C#
Engine Voron
Operating system Windows, Linux, Mac OS, Docker and Raspberry Pi [4] [5]
Available inEnglish
Type Document-oriented database
License AGPLv3
Website ravendb.net
hibernatingrhinos.com

RavenDB is an open-source document-oriented database written in C#, developed by Hibernating Rhinos Ltd. [6] [7] [8] [1] [9] [10] It is cross-platform, supported on Windows, Linux, and Mac OS. [6] [11] RavenDB stores data as JSON documents and can be deployed in distributed clusters with master-master replication.

Contents

History

Originally named "Rhino DivanDB", [6] [12] RavenDB began in 2008 as a project by Oren Eini (aka Ayende Rahien) [13] [14] and is developed by Hibernating Rhinos Ltd. [1] The company claims it was the first document database to run natively in the .NET Framework. [15] [16] [7] [17] It was an early document database to offer ACID guarantees. [8] [17] [18]

In 2019, Hibernating Rhinos began offering RavenDB as a cloud service named RavenDB Cloud. [19] [20] [21]

Version history

VersionDateFeatures added (partial list)
1.0May 2010 [2]
2.0January 2013 [22] Replication [23] [24]
2.5June 2013 [25] Projections; facet querying [23]
3.0November 2014 [26] Java API; Voron storage engine [27] [28]
3.5October 2016 [29] Clustering [29]
4.0February 2018 [30] Became cross-platform; available with a free license [5]
4.1August 2018 [31] Cluster-wide transactions [19] [31]
4.2May 2019 [3] Graph querying [19]
5.0July 2020 [32] Time series; [33] Data compression using the Zstd algorithm [34]
5.1November 2020 [35] Indexing attachments; [36] Hub/Sink replication with filtering [37]
5.2June 2021 [35] OLAP ETL; [38] Custom Analyzers [39]
5.3November 2021 [35] Concurrent Data Subscriptions; [40] Microsoft Power BI support [41]

System architecture

Data is stored as schemaless documents in JSON format. [6] [12] [7] [42] [23] [24] [10] Documents are grouped into collections, with each document having exactly one collection. [23] [24] [43]

Databases can be deployed on a distributed cluster of servers (called ‘nodes’) using multi-master replication. [6] [8] Some operations at the cluster level require a consensus of a majority of nodes; consensus is determined using an implementation of the Raft algorithm called Rachis. [6] Tasks are distributed to the different nodes in a balanced way. [6] [44]

Versions 1.0 through 3.5 supported sharding, but versions 4.x do not. [6] [7] [8] [23] [24]

RavenDB originally used the ESENT storage engine. [12] [13] [24] Version 3.0 replaced it with a new open-source storage engine called Voron. [27] [28]

Clients are supported for C#, C++, Java, NodeJS, Python, Ruby, and Go. [8]

Main features

Indexes and querying

Queries are expressed in LINQ or with a custom query language named RQL (stands for Raven Query Language) with syntax similar to SQL. [6] [7] [8]

Document extensions

Documents can be extended with other data types less suited to JSON. These extensions can be loaded, modified, and stored independently of the document itself. [42]

RavenDB Cloud

RavenDB Cloud is a managed database-as-a-service launched in 2019 on AWS, Azure, and GCP. The service performs administration tasks such as hardware maintenance and security for users. It features the sharing of CPU resources among the different nodes in a cluster to avoid throttling. [19] [20] [21]

Embedded instance

RavenDB can also be run as an embedded instance, a great option for smaller applications and proof of concepts, for instance.

From their Server: Running an Embedded Instance [51] page: "RavenDB makes it very easy to be embedded within your application, with RavenDB Embedded package you can integrate your RavenDB server with a few easy steps."

Licensing

RavenDB is open source under an AGPLv3 license. [6] It is available with a commercial license and a free license for open source projects, but it must be applied for. [52]

Related Research Articles

<span class="mw-page-title-main">MySQL</span> SQL database engine software

MySQL is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter My, and "SQL", the acronym for Structured Query Language. A relational database organizes data into one or more data tables in which data may be related to each other; these relations help structure the data. SQL is a language that programmers use to create, modify and extract data from the relational database, as well as control user access to the database. In addition to relational databases and SQL, an RDBMS like MySQL works with an operating system to implement a relational database in a computer's storage system, manages users, allows for network access and facilitates testing database integrity and creation of backups.

<span class="mw-page-title-main">PostgreSQL</span> Free and open-source object relational database management system

PostgreSQL, also known as Postgres, is a free and open-source relational database management system (RDBMS) emphasizing extensibility and SQL compliance. PostgreSQL features transactions with atomicity, consistency, isolation, durability (ACID) properties, automatically updatable views, materialized views, triggers, foreign keys, and stored procedures. It is supported on all major operating systems, including Linux, FreeBSD, OpenBSD, macOS, and Windows, and handles a range of workloads from single machines to data warehouses or web services with many concurrent users.

<span class="mw-page-title-main">Informix</span> Database management software product family

Informix is a product family within IBM's Information Management division that is centered on several relational database management system (RDBMS) and multi-model database offerings. The Informix products were originally developed by Informix Corporation, whose Informix Software subsidiary was acquired by IBM in 2001.

<span class="mw-page-title-main">IBM Db2</span> Relational model database server

Db2 is a family of data management products, including database servers, developed by IBM. It initially supported the relational model, but was extended to support object–relational features and non-relational structures like JSON and XML. The brand name was originally styled as DB/2, then DB2 until 2017 and finally changed to its present form.

MySQL Cluster is a technology providing shared-nothing clustering and auto-sharding for the MySQL database management system. It is designed to provide high availability and high throughput with low latency, while allowing for near linear scalability. MySQL Cluster is implemented through the NDB or NDBCLUSTER storage engine for MySQL.

The following tables compare general and technical information for a number of relational database management systems. Please see the individual products' articles for further information. Unless otherwise specified in footnotes, comparisons are based on the stable versions without any add-ons, extensions or external programs.

In computing, a solution stack or software stack is a set of software subsystems or components needed to create a complete platform such that no additional software is needed to support applications. Applications are said to "run on" or "run on top of" the resulting platform.

Multi-master replication is a method of database replication which allows data to be stored by a group of computers, and updated by any member of the group. All members are responsive to client data queries. The multi-master replication system is responsible for propagating the data modifications made by each member to the rest of the group and resolving any conflicts that might arise between concurrent changes made by different members.

Microsoft SQL Server is a proprietary relational database management system developed by Microsoft. As a database server, it is a software product with the primary function of storing and retrieving data as requested by other software applications—which may run either on the same computer or on another computer across a network. Microsoft markets at least a dozen different editions of Microsoft SQL Server, aimed at different audiences and for workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users.

Google App Engine is a cloud computing platform as a service for developing and hosting web applications in Google-managed data centers. Applications are sandboxed and run across multiple servers. App Engine offers automatic scaling for web applications—as the number of requests increases for an application, App Engine automatically allocates more resources for the web application to handle the additional demand.

A database shard, or simply a shard, is a horizontal partition of data in a database or search engine. Each shard is held on a separate database server instance, to spread load.

A graph database (GDB) is a database that uses graph structures for semantic queries with nodes, edges, and properties to represent and store data. A key concept of the system is the graph. The graph relates the data items in the store to a collection of nodes and edges, the edges representing the relationships between the nodes. The relationships allow data in the store to be linked together directly and, in many cases, retrieved with one operation. Graph databases hold the relationships between data as a priority. Querying relationships is fast because they are perpetually stored in the database. Relationships can be intuitively visualized using graph databases, making them useful for heavily inter-connected data.

<span class="mw-page-title-main">Couchbase Server</span> Open-source NoSQL database

Couchbase Server, originally known as Membase, is a source-available, distributed multi-model NoSQL document-oriented database software package optimized for interactive applications. These applications may serve many concurrent users by creating, storing, retrieving, aggregating, manipulating and presenting data. In support of these kinds of application needs, Couchbase Server is designed to provide easy-to-scale key-value, or JSON document access, with low latency and high sustainability throughput. It is designed to be clustered from a single machine to very large-scale deployments spanning many machines.

<span class="mw-page-title-main">Elasticsearch</span> Search engine

Elasticsearch is a search engine based on the Lucene library. It provides a distributed, multitenant-capable full-text search engine with an HTTP web interface and schema-free JSON documents. Elasticsearch is developed in Java and is dual-licensed under the source-available Server Side Public License and the Elastic license, while other parts fall under the proprietary (source-available) Elastic License. Official clients are available in Java, .NET (C#), PHP, Python, Ruby and many other languages. According to the DB-Engines ranking, Elasticsearch is the most popular enterprise search engine.

eXtremeDB is a high-performance, low-latency, ACID-compliant embedded database management system using an in-memory database system (IMDS) architecture and designed to be linked into C/C++ based programs. It works on Windows, Linux, and other real-time and embedded operating systems.

<span class="mw-page-title-main">Actian Zen</span>

Actian Zen is an ACID-compliant, Zero-DBA, Embedded, Nano-footprint, Multi-Model, Multi-Platform database management system (DBMS) developed originally by Pervasive Software, which was acquired by Actian Corporation in 2013.

<span class="mw-page-title-main">Oracle NoSQL Database</span> Distributed database

Oracle NoSQL Database is a NoSQL-type distributed key-value database from Oracle Corporation. It provides transactional semantics for data manipulation, horizontal scalability, and simple administration and monitoring.

Azure Cosmos DB is a globally distributed, multi-model database service offered by Microsoft. It is designed to provide high availability, scalability, and low-latency access to data for modern applications. Unlike traditional relational databases, Cosmos DB is a NoSQL database, which means it can handle unstructured and semi-structured, in addition to structured, data types.

<span class="mw-page-title-main">ArangoDB</span> Multi-model database

ArangoDB is a graph database system developed by ArangoDB Inc. ArangoDB is a multi-model database system since it supports three data models with one database core and a unified query language AQL. AQL is mainly a declarative language and allows the combination of different data access patterns in a single query.

Azure Data Explorer is a fully-managed big data analytics cloud platform and data-exploration service, developed by Microsoft, that ingests structured, semi-structured and unstructured data. The service then stores this data and answers analytic ad hoc queries on it with seconds of latency. It is a full text indexing and retrieval database, including time series analysis capabilities and regular expression evaluation and text parsing.

References

  1. 1 2 3 "Other Vendors to Consider for Operational DBMSs". www.gartner.com. 2018. Retrieved 10 October 2020.
  2. 1 2 "RavenDB goes live!". ayende.com. 2010. Retrieved 10 October 2020.
  3. 1 2 "RavenDB 4.2 has been released!". ayende.com. 2019. Retrieved 10 October 2020.
  4. 1 2 3 "RavenDB: Driving DX through DB infrastructure management". ciostory.com. Archived from the original on 11 October 2020. Retrieved 10 October 2020.
  5. 1 2 "NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar". www.heise.de. 2018. Retrieved 10 October 2020.
  6. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 "RavenDB". Database of Databases. Retrieved 10 October 2020.[ permanent dead link ]
  7. 1 2 3 4 5 "Raven, a Document Database for .NET". www.infoq.com. 2010. Retrieved 10 October 2020.
  8. 1 2 3 4 5 6 7 "RavenDB System Properties". db-engines.com. Retrieved 10 October 2020.
  9. "Hibernating Rhinos". hibernatingrhinos.com. Retrieved 10 October 2020.
  10. 1 2 3 Kaur, Harpreet, and Kamal Jeet Kaur. "A Review: Study of Document oriented databases and their Security." International Journal of Advanced Research in Computer Science 4.8 (2013).
  11. Wallen, Jack (2021-01-06). "How to create a new database with RavenDB". TechRepublic. Retrieved 2022-11-22.
  12. 1 2 3 "Ayende's DivanDB (also, is ESENT the most widely used database engine?)". blogs.msdn.microsoft.com. 2008. Retrieved 10 October 2020.
  13. 1 2 "Hidden Windows Gems: Extensible Storage Engine". ayende.com. 2008. Retrieved 10 October 2020.
  14. "Interview with Oren Eini of RavenDB on database management, analytics & security". bigdata-madesimple.com. 2019. Archived from the original on 8 October 2020. Retrieved 10 October 2020.
  15. "RavenDB Development: Finally, A Solid Document-based Database for Windows?". www.whoishostingthis.com. 2019. Archived from the original on 8 October 2020. Retrieved 10 October 2020.
  16. 1 2 "NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application". docs.microsoft.com. 2011. Retrieved 10 October 2020.
  17. 1 2 "Why Raven DB?". dzone.com. 2010. Retrieved 10 October 2020.
  18. 1 2 "RavenDB vs SQL Server". www.integrace.nl (in Dutch). Retrieved 10 October 2020.
  19. 1 2 3 4 5 "RavenDB Launches Managed Cloud Service". www.datanami.com. 2019. Retrieved 10 October 2020.
  20. 1 2 "SD Times news digest: Google robots.text parser open sourced, Bonitasoft's cloud and low-code capabilities, and OWASP ZAP 2.8". sdtimes.com. 2019. Retrieved 10 October 2020.
  21. 1 2 "RavenDB Adds New Enhancements to Its Cloud-Based Database Service". it.toolbox.com. 2019. Retrieved 10 October 2020.
  22. "RavenDB 2.0 RTM". ayende.com. 2013. Retrieved 10 October 2020.
  23. 1 2 3 4 5 6 7 "RavenDB: A document database for the .NET platform". learning.oreilly.com. Retrieved 10 October 2020.[ permanent dead link ]
  24. 1 2 3 4 5 6 7 "RavenDB: A document database for the .NET platform". learning.oreilly.com. Archived from the original on 2 November 2020. Retrieved 10 October 2020.
  25. "RavenDB 2.5 Release Candidate is out". ayende.com. 2013. Retrieved 10 October 2020.
  26. "RavenDB 3.0 RTM!". ayende.com. 2014. Retrieved 10 October 2020.
  27. 1 2 "NoSQL for .NET: RavenDB 3.0 Takes Flight". visualstudiomagazine.com. 2014. Retrieved 10 October 2020.
  28. 1 2 "NoSQL: RavenDB 3.0 erhält weitere Storage Engine". www.heise.de. Retrieved 10 October 2020.
  29. 1 2 "RavenDB 3.5 RTM released". ayende.com. 2016. Retrieved 10 October 2020.
  30. "RavenDB 4.0 is out". ayende.com. 2018. Retrieved 10 October 2020.
  31. 1 2 "RavenDB 4.1 Release Candidate is out". ayende.com. 2018. Retrieved 10 October 2020.
  32. "RavenDB 5.0 has been released!". ravendb.net. 2020-07-24. Retrieved 10 October 2020.
  33. 1 2 "RavenDB Adds Time Series Query Support". i-programmer.info. 16 July 2020. Retrieved 10 October 2020.
  34. 1 2 "RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing". infoq.com. Aug 3, 2020. Retrieved 10 October 2020.
  35. 1 2 3 "An Open Source NoSQL Database | The History of RavenDB". RavenDB NoSQL Database.
  36. "RavenDB 5.1 Features: Searching in Office documents". RavenDB NoSQL Database.
  37. "Filtered Replication | NoSQL Database | RavenDB NoSQL". RavenDB NoSQL Database.
  38. "OLTP vs. OLAP Databases: The Challenges of ETL". Datavail. May 21, 2020.
  39. "NoSQL Database Documentation". RavenDB NoSQL Database.
  40. "RavenDB 5.3 New Features: Concurrent subscriptions". Ayende @ Rahien.
  41. "RavenDB Features 5.3: Power BI integration". Ayende @ Rahien.
  42. 1 2 "A document database for the .NET platform". learning.oreilly.com. Archived from the original on 2 November 2020. Retrieved 10 October 2020.
  43. "The Design of RavenDB 4.0: The Implications of the Blittable Format". dzone.com. 2016. Retrieved 10 October 2020.
  44. "Review: NoSQL database RavenDB". techgenix.com. 2019. Retrieved 10 October 2020.
  45. 1 2 "RavenDB Adds Graph Queries". www.datanami.com. 2019. Retrieved 10 October 2020.
  46. 1 2 "SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware's acquisition of Bitnami". sdtimes.com. 2019. Retrieved 10 October 2020.
  47. "RavenDB Features". ravendb.net. Retrieved 10 October 2020.
  48. "Data Modeling with Indexes in RavenDB". www.codeproject.com. 2019. Retrieved 10 October 2020.
  49. Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
  50. "Data Points - What the Heck Are Document Databases?". docs.microsoft.com. 2011. Retrieved 10 October 2020.
  51. "Server: Running an Embedded Instance". Ravendb.net. Retrieved 25 April 2022.
  52. Tannir, Khaled (2013-09-04). RavenDB 2.x beginner's guide. Packt Publishing Ltd. ISBN   978-1-78328-380-4.