Multi-Modell-Datenbank

ArangoDB bietet Abfragesprache für Dokumente und Graphen

19.03.2013
Von 
Thomas Cloer war Redakteur der Computerwoche.
ArangoDB ist eine von wenigen Multi-Modell-Datenbanken, die die Flexibilität einer schemalosen Dokumenten-Datenbank mit den Vorteilen der Graphen-Modellierung verknüpft.

Das Beispiel von Facebooks "Suche über den Social Graph" zeigt: In Zukunft wird es immer wichtiger, soziale Beziehungen in bestehenden Anwendungen abzubilden. Mit der SQL-ähnlichen Abfragesprache von ArangoDB lassen sich aus jeder Programmiersprache heraus leicht Abfragen formuliert werden. Dabei lassen sich auch collection-übergreifende Abfragen und NoSQL-typische Listen-Abfragen natürlich und verständlich formulieren.

Die aktuelle, in der Beta-Phase befindliche Version 1.3 von ArangoDB erlaubt Multi-Dokument-Transaktionen - ein Feature, das in der NoSQL-Welt vielfach vermisst wird. Dabei kann der Entwickler sehr fein steuern, an welchen Stellen transaktionale Sicherheit erforderlich ist und an welchen Stellen es auf mehr Performance ankommt.

ArangoDB besitzt einen in C geschrieben Datenbank-Kern, den eine in C++ realisierte Kommunikations- und Producer-/Consumer-Schicht umgibt. Letztere implementiert auch einen HTTP-Server, den der Entwickler durch in JavaScript geschriebene Aktionen erweitern kann. Damit lassen sich moderne MVC-Browser-Frameworks ohne Programmiersprachenbruch einfach mit leichtgewichtigen Backend-Anwendungen verknüpfen. Als JavaScript-Engine kommt Googles "V8" zum Einsatz, alternativ ist auch Yukihiro Matsumotos "embeddable Ruby" (mRuby) möglich.

Dem meist großen Footprint herkömmlicher NoSQL-Datenbanken begegnet ArangoDB durch sogenannte Shapes. Die Datenbank erkennt dabei selbstständig ein inhärentes Schema der Daten und benutzt dieses, um die JSON-Dokumente effizient zu speichern. Damit kommt der Nutzer in den Genuss der Vorteile relationaler Datenbanken hinsichtlich Speicherverbrauch, ohne auf die Schemalosigkeit von NoSQL-Datenbanken verzichten zu müssen. ArangoDB ist als Open Source unter Apache License 2 veröffentlicht und auf Github verfügbar.