Original author(s) | Oren Eini (aka Ayende Rahien) |
---|---|
Developer(s) | Hibernating Rhinos [1] |
Initial release | 2010[2] |
Stable release | 6.2 / October 2024 [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 Windows, Linux, macOS, FreeBSD, and OpenBSD, and handles a range of workloads from single machines to data warehouses, data lakes, 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 DB2 until 2017, when it changed to its present form. In the early days, it was sometimes wrongly styled as DB/2 in a false derivation from the operating system OS/2.
MySQL Cluster, also known as MySQL Ndb 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.
An embedded database system is a database management system (DBMS) which is tightly integrated with an application software; it is embedded in the application. It is a broad technology category that includes:
Google App Engine is a cloud computing platform used as a service for developing and hosting web applications. Applications are sandboxed and run across multiple Google-managed servers. GAE supports automatic scaling for web applications, allocating more resources to the web application as the amount of requests increases. It was released as a preview in April 2008 and launched officially in September 2011.
A database shard, or simply a shard, is a horizontal partition of data in a database or search engine. Each shard may be held on a separate database server instance, to spread load.
MongoDB is a source-available, cross-platform, document-oriented database program. Classified as a NoSQL database product, MongoDB utilizes JSON-like documents with optional schemas. Released in February 2009 by 10gen, it supports features like sharding, replication, and ACID transactions. MongoDB Atlas, its managed cloud service, operates on AWS, Google Cloud Platform, and Microsoft Azure. Current versions are licensed under the Server Side Public License (SSPL). MongoDB is a member of the MACH Alliance.
NoSQL is an approach to database design that focuses on providing a mechanism for storage and retrieval of data that is modeled in means other than the tabular relations used in relational databases. Instead of the typical tabular structure of a relational database, NoSQL databases house data within one data structure. Since this non-relational database design does not require a schema, it offers rapid scalability to manage large and typically unstructured data sets. NoSQL systems are also sometimes called "Not only SQL" to emphasize that they may support SQL-like query languages or sit alongside SQL databases in polyglot-persistent architectures.
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.
Redis is a source-available, in-memory storage, used as a distributed, in-memory key–value database, cache and message broker, with optional durability. Because it holds all data in memory and because of its design, Redis offers low-latency reads and writes, making it particularly suitable for use cases that require a cache. Redis is the most popular NoSQL database, and one of the most popular databases overall. Companies that use Redis include Twitter, Airbnb, Tinder, Yahoo, Adobe, Hulu, Amazon and OpenAI.
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.
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 and vector database, which means it can handle unstructured, semi-structured, structured, and vector data types.
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.