RavenDB

From WikiAlpha
Jump to: navigation, search
RavenDB
Original author(s) Oren Eini (aka Ayende Rahien)
Developer(s) Hibernating Rhinos[1]
Initial release 2010[2]
Stable release 5.0 / July 2020[3]
Written in C#
Operating system Windows, Linux, Mac OS, Docker and Raspberry Pi[4][5]
Available in English
Type Document-oriented database
License AGPLv3
Website ravendb.net
hibernatingrhinos.com
RavenDB logo

RavenDB is an open-source fully ACID document-oriented database written in C#, developed by Hibernating Rhinos Ltd.[6][7][8][9][1][10][11] It is cross-platform, supported on Windows, Linux, and Mac OS.[6] 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][8][17] It was an early document database to offer ACID guarantees.[9][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] Time series[33]; Data compression using the Zstd algorithm[34]

System architecture

Data is stored as schemaless documents in JSON format.[6][12][8][35][23][24][11] Documents are grouped into collections, with each document belonging to exactly one collection.[23][24]

Databases can be deployed on a distributed cluster of servers (called ‘nodes’) using multi-master replication.[6][9] 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][36]

Versions 1.0 through 3.5 supported sharding, but versions 4.x do not.[6][8][9][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.[9]

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[37][38]

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][8][9]

  • Dynamic indexes - in RavenDB is that queries can only be satisfied by an index; if no appropriate index exists, a new index is created to satisfy the query.[6][16][4][23][24][11]
  • Graph querying - related documents can be treated as vertices in a graph, with the connections treated as edges. This makes it possible to create recursive queries.[37][38][39]
  • Projection - indexes can be configured to transform indexed data, perform calculations, perform aggregations, and execute JavaScript code on the server side.[6][9][40]
  • Full-text search - at a low level, data is indexed with Lucene.net, which means indexes support full-text search.[6][18][23][24][41][42]

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.[35]

  • 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 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]

Licensing

RavenDB is open source under an AGPLv3 license.[6] It is available with a free license and a commercial license.

References

  1. 1.0 1.1 1.2 "Other Vendors to Consider for Operational DBMSs". 2018. https://www.gartner.com/en/documents/3892294/other-vendors-to-consider-for-operational-dbmss. 
  2. 2.0 2.1 "RavenDB goes live!". 2010. https://ayende.com/blog/4507/ravendb-goes-live. 
  3. 3.0 3.1 "RavenDB 4.2 has been released!". 2019. https://ayende.com/blog/187361-A/ravendb-4-2-has-been-released. 
  4. 4.0 4.1 4.2 "RavenDB: Driving DX through DB infrastructure management". https://ciostory.com/technology/ravendb-driving-dx-through-db-infrastructure-management/. 
  5. 5.0 5.1 "NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar". 2018. https://www.heise.de/developer/meldung/NoSQL-RavenDB-4-0-jetzt-fuer-Windows-Linux-macOS-und-Docker-verfuegbar-3971913.html. 
  6. 6.00 6.01 6.02 6.03 6.04 6.05 6.06 6.07 6.08 6.09 6.10 6.11 6.12 6.13 "RavenDB". https://dbdb.io/2db/ravendb. 
  7. "Raven, a Document Database for .NET". 2010. https://www.infoq.com/news/2010/05/Raven/. 
  8. 8.0 8.1 8.2 8.3 8.4 "Raven, a Document Database for .NET". 2010. https://www.infoq.com/news/2010/05/Raven/. 
  9. 9.0 9.1 9.2 9.3 9.4 9.5 9.6 "RavenDB System Properties". https://db-engines.com/en/system/RavenDB. 
  10. "Hibernating Rhinos". https://hibernatingrhinos.com/. 
  11. 11.0 11.1 11.2 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).
  12. 12.0 12.1 12.2 "Ayende's DivanDB (also, is ESENT the most widely used database engine?)". 2008. https://blogs.msdn.microsoft.com/laurionb/2008/12/23/ayendes-divandb-also-is-esent-the-most-widely-used-database-engine/. 
  13. 13.0 13.1 "Hidden Windows Gems: Extensible Storage Engine". 2008. https://ayende.com/blog/3769/hidden-windows-gems-extensible-storage-engine. 
  14. "Interview with Oren Eini of RavenDB on database management, analytics & security". 2019. https://bigdata-madesimple.com/interview-with-oren-eini-of-ravendb-on-database-management-analytics-security/. 
  15. "RavenDB Development: Finally, A Solid Document-based Database for Windows?". 2019. https://www.whoishostingthis.com/resources/ravendb/. 
  16. 16.0 16.1 "NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application". 2011. https://docs.microsoft.com/en-us/archive/msdn-magazine/2011/november/nosql-document-database-embedding-ravendb-into-an-asp-net-mvc-3-application. 
  17. 17.0 17.1 "Why Raven DB?". 2010. https://dzone.com/articles/why-raven-db. 
  18. 18.0 18.1 "RavenDB vs SQL Server". https://www.integrace.nl/nl/News/307/RavenDB. 
  19. 19.0 19.1 19.2 19.3 19.4 "RavenDB Launches Managed Cloud Service". 2019. https://www.datanami.com/2019/07/02/ravendb-launches-managed-cloud-service/. 
  20. 20.0 20.1 "SD Times news digest: Google robots.text parser open sourced, Bonitasoft’s cloud and low-code capabilities, and OWASP ZAP 2.8". 2019. https://sdtimes.com/goog/sd-times-news-digest-google-robots-text-parser-open-sourced-bonitasofts-cloud-and-low-code-capabilities-and-owasp-zap-2-8/. 
  21. 21.0 21.1 "RavenDB Adds New Enhancements to Its Cloud-Based Database Service". 2019. https://it.toolbox.com/blogs/shrutiumathe/ravendb-adds-new-enhancements-to-its-cloud-based-database-service-ensuring-high-availability-in-cloud-110419. 
  22. "RavenDB 2.0 RTM". 2013. https://ayende.com/blog/160642/ravendb-2-0-rtm. 
  23. 23.0 23.1 23.2 23.3 23.4 23.5 23.6 "RavenDB: A document database for the .NET platform". https://learning.oreilly.com/library/view/ravendb-2x-beginners/9781783283798/ch01s04.html. 
  24. 24.0 24.1 24.2 24.3 24.4 24.5 24.6 "RavenDB: A document database for the .NET platform". https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. 
  25. "RavenDB 2.5 Release Candidate is out". 2013. https://ayende.com/blog/162498/ravendb-2-5-release-candidate-is-out. 
  26. "RavenDB 3.0 RTM!". 2014. https://ayende.com/blog/169313/ravendb-3-0-rtm. 
  27. 27.0 27.1 "NoSQL for .NET: RavenDB 3.0 Takes Flight". 2014. https://visualstudiomagazine.com/articles/2014/12/02/ravendb-3-for-dotnet.aspx. 
  28. 28.0 28.1 "NoSQL: RavenDB 3.0 erhält weitere Storage Engine". https://www.heise.de/developer/meldung/NoSQL-RavenDB-3-0-erhaelt-weitere-Storage-Engine-2480210.html. 
  29. 29.0 29.1 "RavenDB 3.5 RTM released". 2016. https://ayende.com/blog/175937/ravendb-3-5-rtm-released. 
  30. "RavenDB 4.0 is out". 2018. https://ayende.com/blog/181857-A/ravendb-4-0-is-out. 
  31. 31.0 31.1 "RavenDB 4.1 Release Candidate is out". 2018. https://ayende.com/blog/184194-A/ravendb-4-1-release-candidate-is-out. 
  32. "RavenDB 5.0 has been released!". 2020-07-24. https://ravendb.net/articles/ravendb-5-0-has-been-released. 
  33. 33.0 33.1 "RavenDB Adds Time Series Query Support". 16 July 2020. https://www.i-programmer.info/news/84-database/13846-ravendb-adds-time-series-query-support.html. 
  34. 34.0 34.1 "RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing". Aug 3, 2020. https://www.infoq.com/news/2020/08/ravendb-5-release-document-db/. 
  35. 35.0 35.1 "A document database for the .NET platform". https://learning.oreilly.com/library/view/ravendb-high-performance/9781782166986/ch01s05.html. 
  36. "Review: NoSQL database RavenDB". 2019. http://techgenix.com/review-nosql-database-ravendb/. 
  37. 37.0 37.1 "RavenDB Adds Graph Queries". 2019. https://www.datanami.com/2019/05/15/ravendb-adds-graph-queries/. 
  38. 38.0 38.1 "SD Times news digest: New Relic One, WhiteSource for Developers, RavenDB4.2, and VMware’s acquisition of Bitnami". 2019. https://sdtimes.com/softwaredev/sd-times-news-digest-new-relic-one-whitesource-for-developers-ravendb4-2-and-vmware-acquisition-of-bitnami/. 
  39. "RavenDB Features". https://ravendb.net/features/querying/graph-api. 
  40. "Data Modeling with Indexes in RavenDB". 2019. https://www.codeproject.com/Articles/1348454/Data-Modeling-with-Indexes-in-RavenDB. 
  41. Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105-115.
  42. "Data Points - What the Heck Are Document Databases?". 2011. https://docs.microsoft.com/en-us/archive/msdn-magazine/2011/november/data-points-what-the-heck-are-document-databases. 

External links