Original author(s) | Oren Eini (aka Ayende Rahien) |
---|---|
Developer(s) | Hibernating Rhinos [1] |
Initial release | 2010[2] |
Stable release | 5.3 / November 2021 [3] |
Repository | |
Written in | C# |
Engine | Voron |
Operating system | Windows, Linux, Mac OS, Docker and Raspberry Pi [4] [5] |
Available in | English |
Type | Document-oriented database |
License | AGPLv3 |
Website | ravendb hibernatingrhinos |
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.
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 | Date | Features added (partial list) |
---|---|---|
1.0 | May 2010 [2] | |
2.0 | January 2013 [22] | Replication [23] [24] |
2.5 | June 2013 [25] | Projections; facet querying [23] |
3.0 | November 2014 [26] | Java API; Voron storage engine [27] [28] |
3.5 | October 2016 [29] | Clustering [29] |
4.0 | February 2018 [30] | Became cross-platform; available with a free license [5] |
4.1 | August 2018 [31] | Cluster-wide transactions [19] [31] |
4.2 | May 2019 [3] | Graph querying [19] |
5.0 | July 2020 [32] | Time series; [33] Data compression using the Zstd algorithm [34] |
5.1 | November 2020 [35] | Indexing attachments; [36] Hub/Sink replication with filtering [37] |
5.2 | June 2021 [35] | OLAP ETL; [38] Custom Analyzers [39] |
5.3 | November 2021 [35] | Concurrent Data Subscriptions; [40] Microsoft Power BI support [41] |
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]
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]
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 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]
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."
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]
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.
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.
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.
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.
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.
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.
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.
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.
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.