RavenDB

Source: Wikipedia, the free encyclopedia.
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
AGPLv3
Websiteravendb.net
hibernatingrhinos.com

RavenDB is an open-source document-oriented database written in

Mac OS.[6][11] RavenDB stores data as JSON documents and can be deployed in distributed clusters
with master-master replication.

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

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]
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]
  • Red: Not supported
  • Green: Supported

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

NodeJS, Python, Ruby, and Go.[8]

Main features

  • Cluster-wide ACID Transactions - ACID transactions can be executed at the scope of a cluster (in addition to single node transactions). The transaction will only be persisted if it is confirmed by a consensus of nodes; if it is not, the transaction is cancelled and rolled back.[6][19]
  • Distributed counters[45][46]

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]

  • Attachments - documents can have multiple attachments of any data type, such as images, audio, or pure binary.[4]
  • Time Series - numerical data associated with specific times and ordered chronologically.[34][33]

RavenDB Cloud

RavenDB Cloud is a managed

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]

References

  1. ^ a b c "Other Vendors to Consider for Operational DBMSs". www.gartner.com. 2018. Retrieved 10 October 2020.
  2. ^ a b "RavenDB goes live!". ayende.com. 2010. Retrieved 10 October 2020.
  3. ^ a b "RavenDB 4.2 has been released!". ayende.com. 2019. Retrieved 10 October 2020.
  4. ^ a b c "RavenDB: Driving DX through DB infrastructure management". ciostory.com. Archived from the original on 11 October 2020. Retrieved 10 October 2020.
  5. ^ a b "NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar". www.heise.de. 2018. Retrieved 10 October 2020.
  6. ^ a b c d e f g h i j k l m n "RavenDB". Database of Databases. Retrieved 10 October 2020.[permanent dead link]
  7. ^ a b c d e "Raven, a Document Database for .NET". www.infoq.com. 2010. Retrieved 10 October 2020.
  8. ^ a b c d e f g "RavenDB System Properties". db-engines.com. Retrieved 10 October 2020.
  9. ^ "Hibernating Rhinos". hibernatingrhinos.com. Retrieved 10 October 2020.
  10. ^ a b c 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. ^ a b c "Ayende's DivanDB (also, is ESENT the most widely used database engine?)". blogs.msdn.microsoft.com. 2008. Retrieved 10 October 2020.
  13. ^ a b "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. ^ a b "NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application". docs.microsoft.com. 2011. Retrieved 10 October 2020.
  17. ^ a b "Why Raven DB?". dzone.com. 2010. Retrieved 10 October 2020.
  18. ^ a b "RavenDB vs SQL Server". www.integrace.nl (in Dutch). Retrieved 10 October 2020.
  19. ^ a b c d e "RavenDB Launches Managed Cloud Service". www.datanami.com. 2019. Retrieved 10 October 2020.
  20. ^ a b "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. ^ a b "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. ^ a b c d e f g "RavenDB: A document database for the .NET platform". learning.oreilly.com. Retrieved 10 October 2020.[permanent dead link]
  24. ^ a b c d e f g "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. ^ a b "NoSQL for .NET: RavenDB 3.0 Takes Flight". visualstudiomagazine.com. 2014. Retrieved 10 October 2020.
  28. ^ a b "NoSQL: RavenDB 3.0 erhält weitere Storage Engine". www.heise.de. Retrieved 10 October 2020.
  29. ^ a b "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. ^ a b "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. ^ a b "RavenDB Adds Time Series Query Support". i-programmer.info. 16 July 2020. Retrieved 10 October 2020.
  34. ^ a b "RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing". infoq.com. Aug 3, 2020. Retrieved 10 October 2020.
  35. ^ a b c "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. ^ a b "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. ^ a b "RavenDB Adds Graph Queries". www.datanami.com. 2019. Retrieved 10 October 2020.
  46. ^ a b "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. .

External links