RavenDB

NoSQL dokumentbasierte Datenbank

RavenDB ist eine Open-Source dokumentenorientierte Datenbank mit vollständigen ACID-Eigenschaften, die in C# geschrieben und von Hibernating Rhinos Ltd. entwickelt wurde.[1][2][2][3][4][5][6] Sie ist plattformübergreifend und wird von Windows, Linux und MacOS unterstützt. RavenDB speichert Daten als JSON-Dokumente und kann in verteilten Clustern mit einer Master-Master-Replikation bereitgestellt werden.[1][3]

RavenDB
Basisdaten

Hauptentwickler Oren Eini (Ayende Rahien)
Entwickler Hibernating Rhinos
Erscheinungsjahr 2010
Aktuelle Version 5.0
(Juli 2020)
Programmiersprache C#
Kategorie Dokumentenorientierte Datenbank
Lizenz AGPL v3
www.ravendb.net
hibernatingrhinos.com

Geschichte Bearbeiten

Ursprünglich „Rhino DivanDB“ genannt,[1][7] begann RavenDB 2008 als ein Projekt von Oren Eini (alias Ayende Rahien)[8][9] und wird von Hibernating Rhinos Ltd. entwickelt.[4] Das Unternehmen behauptet, es sei die erste Dokumentendatenbank gewesen, die nativ im .NET-Rahmen ausgeführt wurde.[2][10][11][12] Es war eine frühe Dokumentendatenbank, die ACID-Garantien anbot.[3][12][13]

2019 begann Hibernating Rhinos Ltd., RavenDB als Cloud-Service namens RavenDB Cloud anzubieten.[14][15][16]

Geschichte der div. Versionen Bearbeiten

Ausführung Datum Hinzugefügte Features (Teilliste)
1.0 Mai 2010[17]
2.0 Januar 2013[18] Replikation[19][20]
2.5 Juni 2013[21] Projektionen; Facettenabfrage[19]
3.0 November 2014[22] Java API; Voron storage engine[23][24]
3.5 Oktober 2016[25] Clustering[25]
4.0 Februar 2018[26] Wurde plattformübergreifend. Ist mit einer kostenlosen Lizenz erhältlich[27]
4.1 August 2018[28] Clusterweite Transaktionen[14][28]
4.2 Mai 2019[29] Graphenabfrage[14]
5.0 Juli 2020[30] Zeitreihen[31]; Datenkomprimierung mit dem Zstandard-Algorithmus[32]
  • Rot: Nicht unterstützt
  • Grün: Unterstützt

Systemarchitektur Bearbeiten

Daten werden als schematafrei Dokumente im JSON-Format gespeichert.[1][2][6][7][19][20][33] Auf der Speicherebene werden Dokumente in einem Binärformat geschrieben, das als „blittable“ bezeichnet wird.[34] Dokumente werden in Sammlungen gruppiert, wobei jedes Dokument genau zu einer Sammlung gehört.[19][20]

Datenbanken können mithilfe der Multi-Master-Replikation auf einem verteilten Cluster von Servern (als „Knoten“ bezeichnet) bereitgestellt werden.[1][3] Einige Operationen auf der Clusterebene erfordern eine Übereinstimmung der meisten Knoten. Die Übereinstimmung wird mithilfe einer Implementierung des Raft-Algorithmus namens Rachis ermittelt.[1] Aufgaben werden ausgewogen auf die verschiedenen Knoten verteilt.[1][35]

Ursprünglich verwendete RavenDB die Esent-Speicher-Engine.[7][8][20] Version 3.0 ersetzte diese durch eine neue Open-Source-Speicher-Engine namens Voron.[23][24]

Clients werden bei C#, C++, Java, NodeJS, Python, Ruby und Go unterstützt.[3]

Haupteigenschaften Bearbeiten

  • Clusterweite ACID-TransaktionenACID-Transaktionen können im Rahmen eines Clusters (zusätzlich zu Einzelknotentransaktionen) ausgeführt werden. Die Transaktion wird nur fortgesetzt, wenn sie durch eine Übereinstimmung der Knoten bestätigt wird. Ist dies nicht der Fall, wird die Transaktion abgebrochen und zurückgesetzt.[1][14]

Indexe und Abfrage Bearbeiten

Abfragen werden in LINQ oder mit einer benutzerdefinierten Abfragesprache namens RQL (steht für Raven Query Language) ausgedrückt, deren Syntax SQL ähnelt.[1][2][3]

  • Dynamische Indexe – In RavenDB können Abfragen nur von einem Index erfüllt werden. Wenn kein geeigneter Index vorhanden ist, wird ein neuer Index erstellt, um die Abfrage zu erfüllen.[1][6][11][19][20][36]
  • Graphenabfragebezogene – Dokumente können als Eckpunkte in einem Graphen behandelt werden, wobei die Verbindungen als Kanten behandelt werden. Dadurch können rekursive Abfragen erstellt werden.[37]
  • Projektion – Indexe können so konfiguriert werden, dass indizierte Daten transformiert, Berechnungen und Aggregationen durchgeführt und JavaScript-Code auf der Serverseite ausgeführt werden.[1][3][38]
  • Volltextsuche – Auf niedriger Ebene werden Daten mit Lucene.net indiziert. Dies bedeutet, dass Indexe die Volltextsuche unterstützen.[1][13][19][20][39][40]

Dokumenterweiterungen Bearbeiten

Dokumente können mit anderen Datentypen erweitert werden, die für JSON weniger geeignet sind. Diese Erweiterungen können unabhängig vom Dokument selbst geladen, geändert und gespeichert werden.[33]

  • Anhänge – Dokumente können mehrere Anhänge eines beliebigen Datentyps, z. B. Bilder, Audio oder reine Binärdateien, enthalten.[36]
  • Zeitreihen – numerische Daten, die bestimmten Zeiten zugeordnet und chronologisch geordnet sind.[31][32]

RavenDB Cloud Bearbeiten

RavenDB Cloud ist eine verwaltete Datenbank als Service, die 2019 auf AWS, Azure und GCP gestartet wurde. Der Service führt Verwaltungsaufgaben wie Hardwarewartung und Security für Benutzer aus. Um eine Leistungsdrosselung zu vermeiden, bietet es die gemeinsame Nutzung von CPU-Ressourcen unter den verschiedenen Knoten eines Clusters.[14][15][16]

Lizenzierung Bearbeiten

RavenDB existiert unter einer AGPLv3-Lizenz als Open Source.[1] Es ist mit einer kostenlosen und einer kommerziellen Lizenz erhältlich.

Weblinks Bearbeiten

Einzelnachweise Bearbeiten

  1. a b c d e f g h i j k l m RavenDB. In: Database of Databases. Ehemals im Original (nicht mehr online verfügbar); abgerufen am 10. Oktober 2020 (englisch).@1@2Vorlage:Toter Link/dbdb.io (Seite nicht mehr abrufbar. Suche in Webarchiven)
  2. a b c d e Raven, a Document Database for .NET. In: www.infoq.com. 2010, abgerufen am 10. Oktober 2020 (englisch).
  3. a b c d e f g RavenDB System Properties. In: db-engines.com. Abgerufen am 10. Oktober 2020 (englisch).
  4. a b Other Vendors to Consider for Operational DBMSs. In: www.gartner.com. 2018, abgerufen am 10. Oktober 2020 (englisch).
  5. Hibernating Rhinos. In: hibernatingrhinos.com. Abgerufen am 10. Oktober 2020 (englisch).
  6. 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).
  7. a b c Ayende's DivanDB (also, is ESENT the most widely used database engine?). In: blogs.msdn.microsoft.com. 2008, abgerufen am 10. Oktober 2020 (englisch).
  8. a b Hidden Windows Gems: Extensible Storage Engine. In: ayende.com. 2008, abgerufen am 10. Oktober 2020 (englisch).
  9. Interview with Oren Eini of RavenDB on database management, analytics & security. In: bigdata-madesimple.com. 2019, archiviert vom Original (nicht mehr online verfügbar) am 8. Oktober 2020; abgerufen am 10. Oktober 2020 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/bigdata-madesimple.com
  10. RavenDB Development: Finally, A Solid Document-based Database for Windows? In: www.whoishostingthis.com. 2019, archiviert vom Original (nicht mehr online verfügbar) am 8. Oktober 2020; abgerufen am 10. Oktober 2020 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/www.whoishostingthis.com
  11. a b NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application. In: docs.microsoft.com. 2011, abgerufen am 10. Oktober 2020 (englisch).
  12. a b Why Raven DB? In: dzone.com. 2010, abgerufen am 10. Oktober 2020 (englisch).
  13. a b RavenDB vs SQL Server. In: www.integrace.nl. Abgerufen am 10. Oktober 2020 (niederländisch).
  14. a b c d e RavenDB Launches Managed Cloud Service. In: www.datanami.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
  15. a b SD Times news digest: Google robots.text parser open sourced, Bonitasoft’s cloud and low-code capabilities, and OWASP ZAP 2.8. In: sdtimes.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
  16. a b RavenDB Adds New Enhancements to Its Cloud-Based Database Service. In: it.toolbox.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
  17. RavenDB goes live! In: ayende.com. 2010, abgerufen am 10. Oktober 2020 (englisch).
  18. RavenDB 2.0 RTM. In: ayende.com. 2013, abgerufen am 10. Oktober 2020 (englisch).
  19. a b c d e f RavenDB: A document database for the .NET platform. In: learning.oreilly.com. Ehemals im Original (nicht mehr online verfügbar); abgerufen am 10. Oktober 2020 (englisch).@1@2Vorlage:Toter Link/learning.oreilly.com (Seite nicht mehr abrufbar. Suche in Webarchiven)
  20. a b c d e f RavenDB: A document database for the .NET platform. In: learning.oreilly.com. Archiviert vom Original (nicht mehr online verfügbar) am 2. November 2020; abgerufen am 10. Oktober 2020 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/learning.oreilly.com
  21. RavenDB 2.5 Release Candidate is out. In: ayende.com. 2013, abgerufen am 10. Oktober 2020 (englisch).
  22. RavenDB 3.0 RTM! In: ayende.com. 2014, abgerufen am 10. Oktober 2020 (englisch).
  23. a b NoSQL for .NET: RavenDB 3.0 Takes Flight. In: visualstudiomagazine.com. 2014, abgerufen am 10. Oktober 2020 (englisch).
  24. a b NoSQL: RavenDB 3.0 erhält weitere Storage Engine. In: www.heise.de. Abgerufen am 10. Oktober 2020 (englisch).
  25. a b RavenDB 3.5 RTM released. In: ayende.com. 2016, abgerufen am 10. Oktober 2020 (englisch).
  26. RavenDB 4.0 is out. In: ayende.com. 2018, abgerufen am 10. Oktober 2020 (englisch).
  27. NoSQL: RavenDB 4.0 jetzt für Windows, Linux, macOS und Docker verfügbar. In: www.heise.de. 2018, abgerufen am 10. Oktober 2020 (englisch).
  28. a b RavenDB 4.1 Release Candidate is out. In: ayende.com. 2018, abgerufen am 10. Oktober 2020 (englisch).
  29. RavenDB 4.2 has been released! In: ayende.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
  30. RavenDB 5.0 has been released! In: ravendb.net. 24. Juli 2020, abgerufen am 10. Oktober 2020 (englisch).
  31. a b RavenDB Adds Time Series Query Support. In: i-programmer.info. 16. Juli 2020, abgerufen am 10. Oktober 2020 (englisch).
  32. a b RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing. In: infoq.com. 3. August 2020, abgerufen am 10. Oktober 2020 (englisch).
  33. a b A document database for the .NET platform. In: learning.oreilly.com. Archiviert vom Original (nicht mehr online verfügbar) am 2. November 2020; abgerufen am 10. Oktober 2020 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/learning.oreilly.com
  34. The Design of RavenDB 4.0: The Implications of the Blittable Format. In: dzone.com. 2016, abgerufen am 10. Oktober 2020 (englisch).
  35. Review: NoSQL database RavenDB. In: techgenix.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
  36. a b RavenDB: Driving DX through DB infrastructure management. In: ciostory.com. Archiviert vom Original (nicht mehr online verfügbar) am 11. Oktober 2020; abgerufen am 10. Oktober 2020 (englisch).  Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/ciostory.com
  37. RavenDB Features. In: ravendb.net. Abgerufen am 10. Oktober 2020 (englisch).
  38. Data Modeling with Indexes in RavenDB. In: www.codeproject.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
  39. Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105–115.
  40. Data Points - What the Heck Are Document Databases? In: docs.microsoft.com. 2011, abgerufen am 10. Oktober 2020 (englisch).