Die .NET NoSQL Datenbank RavenDB im Überblick
Im Pool der Alternativen für relationale Datenbanken tummelt sich bereits seit einigen Jahren die NoSQL-Datenbank RavenDB des Herstellers Hibernating Rhinos.
Nicht nur die oftmals geringeren Anforderungen an Konsistenz von Daten sowie die Möglichkeit der horizontalen statt vertikalen Skalierung (Aufrüsten der System-Landschaft statt Aufrüsten des einzelnen Systems) machen NoSQL-Datenbanken im Kontext von BigData sehr attraktiv.
Somit entspricht ein Dokument einer strukturierten Zusammenstellung bestimmter Daten, während die Dokumente völlig unabhängig voneinander sind.
Die Grundidee dokumentenorientierter Datenbanken basiert auf dem „Key-Value“-Prinzip. Dies bedeutet, dass einem Schlüsselfeld immer ein konkreter Wert zugeordnet ist. RavenDB folgt dabei dem Ansatz der „Document Stores“, bei dem die Werte ebenfalls wieder „Key-Value“-Paare sein können. Eine tiefere Verschachtelung ist somit möglich:
Die Implementierung von RavenDB erfolgt in .NET, sodass ein .NET-Framework für die Lauffähigkeit des Datenbank-Servers zwingend notwendig ist. Die Client-Bibliothek ist jedoch neben .NET auch für Java verfügbar. Entsprechende Paketreferenzen können mittels NuGet bzw. Maven in das eigene Projekt geladen werden.
Wurde der Datenbank-Server lokal gestartet, ist dieser über den Webbrowser beispielsweise über http://localhost:8080 erreichbar. Im sogenannten „Studio“ erlaubt der Hersteller die Administration, Verwaltung und Konfiguration der einzelnen Datenbanken und Document Stores. Hier können sowohl Daten eingepflegt als auch Indizes und Query-Abfragen verwaltet werden.
Beispielapplikation mit .NET NoSQL
Im doubleSlash-Github-Repository steht eine kleine Demo-Applikation in .NET zum freien Download zur Verfügung. Diese zeigt die Interaktion mit RavenDB mittels einfachen CRUD-Datenbankoperationen unter Verwendung von LINQ in C#. Erfreulicherweise unterstützt RavenDB das „Unit of Work“-Pattern, sodass auch Datensätze aus dem Speicher zugreifbar sind.
Durch weitreichende Einstellungsmöglichkeiten wie Backup, Skalierung, Datenreplikation und die Verwendung von Bundles ist auch ein produktiver Einsatz in Kundenprojekten möglich. Die Erweiterbarkeit mittels Plugins (beispielsweise die Verwendung von Triggern) rundet die Flexibilität des Produktes weiter ab.
Quellen:
Mehr zu moderner Softwareentwicklung erfahren Sie hier