ArangoDB
ArangoDB | |
---|---|
Aktuelle Version | 3.9 (2022-02-15) |
Betriebssystem | Cross-platform |
Programmiersprache | C++ |
Kategorie | Dokumentenorienterte Datenbank/Graphdatenbank |
Lizenz | Apache |
www.arangodb.com |
ArangoDB ist eine multi-model NoSQL-Datenbank, geschrieben in C++ und als Open Source veröffentlicht. Der Begriff "multi-model Datenbank" beschreibt, dass sich verschiedene Datenmodelle abbilden lassen: ArangoDB ist vom Grundkonzept her eine dokumentenorienterte Datenbank: Die Informationseinheiten werden in einzelnen Dokumenten gespeichert. Beziehungen zwischen den Dokumenten lassen sich durch direkte Verbindungen diesen herstellen. So entstehen Graphenstrukturen, die sich performant verarbeiten lassen. Da die Dokumente in ArangoDB eindeutig über Schlüssel identifiziert werden können, ist es auch möglich, ArangoDB als Key-Value-Speicher zu benutzen.
Inhaltsverzeichnis
[Verbergen]Merkmale[Bearbeiten]
Graphen[Bearbeiten]
- ArangoDB unterstützt Graphen innerhalb der Abfragesprache "AQL", direkten Dokument-Abfragen und dem integrierten Graph-Modul.
Effiziente Speicherung durch "Shapes"[Bearbeiten]
- Dokumente mit ähnlichen Strukturen und Datentypen teilen ihre strukturellen Informationen über sogenannte "Shapes", die unabhängig von den eigentlichen Daten gespeichert werden. Dadurch wird jedes einzelne Dokument kleiner und der benötigte Speicher- und Festplattenplatz reduziert sich.
Anwendungsserver[Bearbeiten]
- ArangoDB kann mit Hilfe von Aktionen als Anwendungsserver eingesetzt werden. Analog gespeicherten Prozeduren formuliert man Geschäftslogik und Abfragen als eingebette Funktionen, die dann innerhalb der Datenbank ausgeführt werden. Als Sprache steht JavaScript und Ruby zur Verfügung, die eingebetteten Aktionen werden mit Googles V8 Javascript-Engine und Matz' MRuby verarbeitet.
- Beispielsweise ist es möglich, kaskadierende Löschungen/Aktualisierungen durchzuführen, Rechte zuzuweisen und zusätzlich Berechnungen und Veränderungen an den Daten aus der Datenbank vorzunehmen.
- ArangoDB ermöglicht auch die Verknüpfung von bestimmten URLs auf benutzerdefinierte Aktionen. So können HTTP Anfragen vom Client direkt aus der Datenbank bedient werden.
HTTP REST API[Bearbeiten]
- ArangoDB stellt die Funktionalität über eine HTTP REST Schnittstelle bereit und unterstützt Keepalive. Über eine gesonderte Batch-API können Clients optional mehrere Anfragen auf einmal an die Datenbank schicken. Dadurch lässt sich im Bedarfsfall der HTTP-Overhead minimieren.
Indizes[Bearbeiten]
- ArangoDB bietet verschiedene Indextypen an: Hashtabelle, Skip-Liste, Bitmap-Index und zweidimensionale Geo-Indizes.
Mostly Memory[Bearbeiten]
- ArangoDB hält die meisten Daten und Indizes aus Performanzgründen im Speicher. Die Daten werden in konfigurierbaren Intervallen auf der Festplatte gesichert.
Lizenz[Bearbeiten]
- Apache 2 Lizenz: frei für kommerzielle und nicht-kommerzielle Nutzung
Geschichte[Bearbeiten]
Anfänge[Bearbeiten]
- Die Entwicklung von ArangoDB durch triAGENS begann 2011 unter dem Namen "AvocadoDB". Aus lizenzrechtlichen Gründen wurde AvocadoDB im Mai 2012 umbenannt zu ArangoDB. Arango ist eine Avocado-Sorte aus Mexiko/Guatemala.
ArangoDB Version 1.0[Bearbeiten]
- Im August 2012 wurde die Version 1.0 von ArangoDB veröffentlicht. Diese erste Version umfasste Kollektionen, Graphenverarbeitungsfähigkeiten, eine Shell sowie ein Web-Frontend und eine REST API zur Interaktion mit der Datenbank.
ArangoDB Version 1.1[Bearbeiten]
- Im Dezember 2012 wurde ArangoDB Version 1.1 veröffentlicht. Diese Version bietet zusätzlich Batch-Anfragen, die Möglichkeit partieller Aktualisierung von Dokumenten, Verbesserungen bei der Synchronisation mit der Festplatte, Unterstützung für SSL, ein Statistik-Modul sowie die Einführung von expliziter Typisierung von Kollektionen.
Lizensierung und Support[Bearbeiten]
Lizenz[Bearbeiten]
- ArangoDB ist verfügbar unter der Apache 2 Lizenz.
Support[Bearbeiten]
- Der Hersteller triAGENS bietet kommerziellen Support für ArangoDB an.[1]
Eigenschaften[Bearbeiten]
Atomarität[Bearbeiten]
- Einzelne Dokumente werden atomar geschrieben. Ab Version 1.2 stehen Transaktionen zur Verfügung, die über Dokumentgrenzen und Kollektionsgrenzen hinweg Atomarität realisieren.
Dauerhaftigkeit[Bearbeiten]
- ArangoDB verwendet immer Journaling. Das bedeutet, dass neue Daten an das Ende der Journal-Dateien geschrieben werden, ohne alte Daten zu überschreiben. Wenn der ArangoDB-Server erst offline und später wieder online geht, liest er die Journal-Dateien und stellt die Daten komplett aus dem Journal wieder her. Da existierende Daten in den Journal-Dateien nie modifiziert werden, wird das Risiko von Datenkorruption durch den Einsatz von Journaling stark reduziert. Alle Schreibvorgänge auf die Journal-Dateien werden zudem mit Prüfsummen gesichert.
Datenspeicherung[Bearbeiten]
- ArangoDB speichert die Dokumente in Kollektionen. Ein spezielles binäres Datenformat wird für die Speicherung auf der Festplatte verwendet. Dokumente mit ähnlichen Strukturen und Datentypen teilen ihre strukturellen Informationen über sogenannte "Shapes", die unabhängig von den eigentlichen Daten gespeichert werden. Eine "Shape" wird nur ein einziges Mal gespeichert, aber von mehreren Dokumente verwendet werden, indem sie einen Verweis auf die "Shape" setzen.
Performanz[Bearbeiten]
- Geschwindigkeitsfördernd sind die folgenden Eigenschaften:
- Dokumente mit ähnlichen Strukturen und Datentypen teilen ihre strukturellen Informationen über sogenannte "Shapes", die unabhängig von den eigentlichen Daten gespeichert werden. Dadurch wird jedes einzelne Dokument kleiner und der benötigte Speicher- und Festplattenplatz reduziert sich.
- Auswahlmöglichkeit aus spezialisierten Indizes
- Spezielle API für Batch-Operationen
- Multithreading: Anfragen von mehreren Clients können gleichzeitig bearbeitet werden
- C, C++ & Javascript
Sprachunterstützung/Treibersupport[Bearbeiten]
ArangoDB unterstützt eine HTTP REST API, deshalb können neue Treiber von jedem Interessierten hinzugefügt werden.