Einführung einer multimodalen DBMS , das flexible Modelle für die Speicherung von Dokumenten, Graphen und Schlüssel-Wert-Daten bietet. Die Arbeit mit der Datenbank erfolgt über eine SQL-ähnliche Abfragesprache oder über spezielle Erweiterungen in JavaScript. Die Datenspeicherungsmethoden entsprechen den ACID-Anforderungen (Atomarität, Konsistenz, Isolation, Haltbarkeit), unterstützen Transaktionen und ermöglichen sowohl horizontale als auch vertikale Skalierbarkeit. Die Verwaltung des DBMS kann über eine Web-Oberfläche oder einen Konsolen-Client erfolgen . Der Code von ArangoDB steht unter der Apache 2-Lizenz. Das Projekt ist in C und JavaScript geschrieben.
Hauptmerkmale von ArangoDB:
- Die Möglichkeit, ohne vordefinierte Datenschema auszukommen (Schema-frei) – Daten werden in Form von Dokumenten strukturiert, wobei Metadaten und Strukturinformationen von den Benutzerdaten getrennt sind;
- Unterstützung der Verwendung von ArangoDB als Server für Webanwendungen in JavaScript mit Zugriff auf die DB über REST/Web-API;
- Verwendung von JavaScript für browserbasierte Anwendungen, die auf die DB zugreifen, und für Handlers, die auf der Seite des DBMS ausgeführt werden;
- Multithreaded Architektur, die die Last auf alle CPU-Kerne verteilt;
- Flexibles Datenmodell, das Paare von Schlüssel-Wert, Dokumente und Parameter zur Definition von Beziehungen zwischen Datensätzen kombinieren kann (es stehen Mittel zur Verfügung, um die Knoten des Graphen zu durchlaufen);
- Verschiedene Datenpräsentationsmodelle (Dokumente, Graphen und Schlüssel-Wert-Paare) können in einer Anfrage vermischt werden, was die Aggregation heterogener Daten vereinfacht;
- Unterstützung von Abfragen mit Joins;
- Möglichkeit zur Auswahl des passenden Index-Typs für die zu lösenden Aufgaben (z. B. kann ein Index für die Volltextsuche verwendet werden);
- Anpassbare Zuverlässigkeit: Die Anwendung kann selbst festlegen, was für sie wichtiger ist: höhere Zuverlässigkeit oder höhere Leistung;
- Effizientes Speichern, das die Möglichkeiten moderner Hardware (z. B. SSD-Laufwerke) voll ausnutzt und große Caches verwenden kann;
- Transaktionen: Möglichkeit, Abfragen gleichzeitig für mehrere Dokumente oder Sammlungen mit optionaler Transaktionskonsistenz und Isolation auszuführen;
- Unterstützung von Replikation und Sharding: Möglichkeit zur Erstellung von Master-Slave-Konfigurationen und zur Verteilung von Datensätzen auf verschiedene Server basierend auf bestimmten Merkmalen;
- Für die Erstellung von Mikrodiensten steht ein JavaScript-Framework zur Verfügung, , das innerhalb des DBMS-Servers mit direktem Datenzugriff ausgeführt wird.
, die in der Version ArangoDB 3.6 angeboten werden:
- Die Leistung von Sub-Abfragen sowie die Operationen UPDATE und REPLACE wurden optimiert;
- Die Möglichkeit der parallelen Ausführung von AQL-Abfragen wurde implementiert, was die Zeit zur Sammlung von Daten, die über verschiedene Knoten im Cluster verteilt sind, verkürzt;
- Die verzögerte Materialisierung von Dokumenten wurde umgesetzt, was in bestimmten Fällen die Notwendigkeit einer vollständigen Extraktion irrelevanter Dokumente beseitigt;
- Beim Scannen von Dokumenten wird ein frühzeitiges Aussondern von Dokumenten, die nicht dem festgelegten Filter entsprechen, gewährleistet;
- Die Volltextsuchmaschine ArangoSearch wurde verbessert, unterstützt eine Ranking-Logik unter Berücksichtigung der Ähnlichkeit von Daten. Unterstützung eines Analysewerkzeugs für die automatische Vervollständigung von Abfragen wurde hinzugefügt, Funktionen TOKENS() und PHRASE() zur dynamischen Erstellung von Suchanfragen wurden implementiert;
- Die maxRuntime-Einstellung wurde hinzugefügt, um die Ausführungszeit von Anfragen selektiv zu begrenzen;
- Die Option „—query.optimizer-rules“ wurde hinzugefügt, um die Aktivierung bestimmter Optimierungen bei der Anfrageverarbeitung zu steuern;
- Die Möglichkeiten zur Organisation des Clusterbetriebs wurden erweitert. Die Option „—cluster.upgrade“ wurde hinzugefügt, um den Aktualisierungsmodus der Knoten im Cluster auszuwählen;
- Unterstützung für TLS 1.3 wurde hinzugefügt, um die Kommunikation zwischen Client und Server zu verschlüsseln (standardmäßig verwendet der Client weiterhin TLS 1.2).
Quelle: opennet.ru
