RavenDB
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][3][4][5][6][7] 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][4]
RavenDB | |
---|---|
Basisdaten | |
Maintainer | 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
Ursprünglich „Rhino DivanDB“ genannt,[1][8] begann RavenDB 2008 als ein Projekt von Oren Eini (alias Ayende Rahien)[9][10] und wird von Hibernating Rhinos Ltd. entwickelt.[5] Das Unternehmen behauptet, es sei die erste Dokumentendatenbank gewesen, die nativ im .NET-Rahmen ausgeführt wurde.[11][12][3][13] Es war eine frühe Dokumentendatenbank, die ACID-Garantien anbot.[4][13][14]
2019 begann Hibernating Rhinos Ltd., RavenDB als Cloud-Service namens RavenDB Cloud anzubieten.[15][16][17]
Geschichte der div. Versionen
Ausführung | Datum | Hinzugefügte Features (Teilliste) |
---|---|---|
1.0 | Mai 2010[18] | |
2.0 | Januar 2013[19] | Replikation[20][21] |
2.5 | Juni 2013[22] | Projektionen; Facettenabfrage[20] |
3.0 | November 2014[23] | Java API; Voron storage engine[24][25] |
3.5 | Oktober 2016[26] | Clustering[26] |
4.0 | Februar 2018[27] | Wurde plattformübergreifend. Ist mit einer kostenlosen Lizenz erhältlich[28] |
4.1 | August 2018[29] | Clusterweite Transaktionen[15][29] |
4.2 | Mai 2019[30] | Graphenabfrage[15] |
5.0 | Juli 2020[31] | Zeitreihen[32]; Datenkomprimierung mit dem Zstandard-Algorithmus[33] |
- Rot: Nicht unterstützt
- Grün: Unterstützt
Systemarchitektur
Daten werden als schematafrei Dokumente im JSON-Format gespeichert.[1][8][3][34][20][21][7] Auf der Speicherebene werden Dokumente in einem Binärformat geschrieben, das als „blittable“ bezeichnet wird.[35] Dokumente werden in Sammlungen gruppiert, wobei jedes Dokument genau zu einer Sammlung gehört.[20][21]
Datenbanken können mithilfe der Multi-Master-Replikation auf einem verteilten Cluster von Servern (als „Knoten“ bezeichnet) bereitgestellt werden.[1][4] 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][36]
Ursprünglich verwendete RavenDB die Esent-Speicher-Engine.[8][9][21] Version 3.0 ersetzte diese durch eine neue Open-Source-Speicher-Engine namens Voron.[24][25]
Clients werden bei C#, C++, Java, NodeJS, Python, Ruby und Go unterstützt.[4]
Haupteigenschaften
- Clusterweite ACID-Transaktionen – ACID-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][15]
Indexe und Abfrage
Abfragen werden in LINQ oder mit einer benutzerdefinierten Abfragesprache namens RQL (steht für Raven Query Language) ausgedrückt, deren Syntax SQL ähnelt.[1][3][4]
- 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][12][37][20][21][7]
- 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.[38]
- 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][4][39]
- Volltextsuche – Auf niedriger Ebene werden Daten mit Lucene.net indiziert. Dies bedeutet, dass Indexe die Volltextsuche unterstützen.[1][14][20][21][40][41]
Dokumenterweiterungen
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.[34]
RavenDB Cloud
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.[15][16][17]
Lizenzierung
RavenDB existiert unter einer AGPLv3-Lizenz als Open Source.[1] Es ist mit einer kostenlosen und einer kommerziellen Lizenz erhältlich.
Weblinks
Einzelnachweise
- RavenDB. In: Database of Databases. Abgerufen am 10. Oktober 2020 (englisch).
- Raven, a Document Database for .NET. In: www.infoq.com. 2010, abgerufen am 10. Oktober 2020 (englisch).
- Raven, a Document Database for .NET. In: www.infoq.com. 2010, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB System Properties. In: db-engines.com. Abgerufen am 10. Oktober 2020 (englisch).
- Other Vendors to Consider for Operational DBMSs. In: www.gartner.com. 2018, abgerufen am 10. Oktober 2020 (englisch).
- Hibernating Rhinos. In: hibernatingrhinos.com. Abgerufen am 10. Oktober 2020 (englisch).
- 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).
- Ayende's DivanDB (also, is ESENT the most widely used database engine?). In: blogs.msdn.microsoft.com. 2008, abgerufen am 10. Oktober 2020 (englisch).
- Hidden Windows Gems: Extensible Storage Engine. In: ayende.com. 2008, abgerufen am 10. Oktober 2020 (englisch).
- Interview with Oren Eini of RavenDB on database management, analytics & security. In: bigdata-madesimple.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB Development: Finally, A Solid Document-based Database for Windows? In: www.whoishostingthis.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
- NoSQL Document Database - Embedding RavenDB into an ASP.NET MVC 3 Application. In: docs.microsoft.com. 2011, abgerufen am 10. Oktober 2020 (englisch).
- Why Raven DB? In: dzone.com. 2010, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB vs SQL Server. In: www.integrace.nl. Abgerufen am 10. Oktober 2020 (niederländisch).
- RavenDB Launches Managed Cloud Service. In: www.datanami.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
- 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).
- RavenDB Adds New Enhancements to Its Cloud-Based Database Service. In: it.toolbox.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB goes live! In: ayende.com. 2010, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 2.0 RTM. In: ayende.com. 2013, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB: A document database for the .NET platform. In: learning.oreilly.com. Abgerufen am 10. Oktober 2020 (englisch).
- RavenDB: A document database for the .NET platform. In: learning.oreilly.com. Abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 2.5 Release Candidate is out. In: ayende.com. 2013, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 3.0 RTM! In: ayende.com. 2014, abgerufen am 10. Oktober 2020 (englisch).
- NoSQL for .NET: RavenDB 3.0 Takes Flight. In: visualstudiomagazine.com. 2014, abgerufen am 10. Oktober 2020 (englisch).
- NoSQL: RavenDB 3.0 erhält weitere Storage Engine. In: www.heise.de. Abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 3.5 RTM released. In: ayende.com. 2016, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 4.0 is out. In: ayende.com. 2018, abgerufen am 10. Oktober 2020 (englisch).
- 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).
- RavenDB 4.1 Release Candidate is out. In: ayende.com. 2018, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 4.2 has been released! In: ayende.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 5.0 has been released! In: ravendb.net. 24. Juli 2020, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB Adds Time Series Query Support. In: i-programmer.info. 16. Juli 2020, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB 5 Improves Distributed Time-Series, Document Compression, and Indexing. In: infoq.com. 3. August 2020, abgerufen am 10. Oktober 2020 (englisch).
- A document database for the .NET platform. In: learning.oreilly.com. Abgerufen am 10. Oktober 2020 (englisch).
- The Design of RavenDB 4.0: The Implications of the Blittable Format. In: dzone.com. 2016, abgerufen am 10. Oktober 2020 (englisch).
- Review: NoSQL database RavenDB. In: techgenix.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
- RavenDB: Driving DX through DB infrastructure management. In: ciostory.com. Abgerufen am 10. Oktober 2020 (englisch).
- RavenDB Features. In: ravendb.net. Abgerufen am 10. Oktober 2020 (englisch).
- Data Modeling with Indexes in RavenDB. In: www.codeproject.com. 2019, abgerufen am 10. Oktober 2020 (englisch).
- Stevic, Milorad P. "Managing documents with NoSQL in service oriented architecture." Online Journal of Applied Knowledge Management (OJAKM) 1.2 (2013): 105–115.
- Data Points - What the Heck Are Document Databases? In: docs.microsoft.com. 2011, abgerufen am 10. Oktober 2020 (englisch).