Die Veröffentlichung von Nebula Graph 3.2, einer offenen Datenbank zur effizienten Speicherung großer Mengen miteinander verbundener Daten, die ein Diagramm bilden, welches Milliarden von Knoten und Billionen von Verbindungen zählen kann, ist erfolgt. Das Projekt ist in C++ geschrieben und wird unter der Apache-2.0-Lizenz vertrieben. Kundenbibliotheken für den Zugriff auf die Datenbank sind für die Sprachen Go, Python und Java verfügbar.
Die Datenbank verwendet eine verteilte Architektur ohne Ressourcenteilung (shared-nothing), die den Betrieb unabhängiger und autarker Prozesse zum Verarbeiten von Anfragen (graphd) und Speichern (storaged) vorsieht. Die Orchestrierung des Datentransfers und die Bereitstellung von Metainformationen über das Diagramm erfolgen durch einen Metadienst. Zur Gewährleistung der Datenkonsistenz wird ein Protokoll basierend auf dem RAFT-Algorithmus verwendet.
Hauptmerkmale von Nebula Graph:
- Sicherheitsgewährleistung durch den Zugang nur für authentifizierte Benutzer, deren Berechtigungen über ein rollenbasiertes Zugangskontrollsystem (RBAC) verwaltet werden.
- Möglichkeit, verschiedene Arten von Speichermotoren anzuschließen. Unterstützung zur Erweiterung der Abfragesprache mit neuen Algorithmen.
- Sicherung minimaler Latenzen beim Lesen oder Schreiben von Daten und Aufrechterhaltung einer hohen Durchsatzrate. Bei Tests in einem Cluster mit einem graphd-Knoten und drei storaged-Knoten einer Datenbank mit 632 GB, die ein Diagramm mit 1,2 Milliarden Knoten und 8,4 Milliarden Kanten enthielt, lagen die Latenzen im Millisekundenbereich, und der Durchsatz betrug bis zu 140.000 Anfragen pro Sekunde.
- Lineare Skalierbarkeit.
- SQL-ähnliche Abfragesprache, die ausreichend leistungsfähig und einfach zu verstehen ist. Unterstützte Operationen umfassen GO (bidirektionales Durchlaufen der Knoten im Diagramm), GROUP BY, ORDER BY, LIMIT, UNION, UNION DISTINCT, INTERSECT, MINUS, PIPE (Nutzung des Ergebnisses aus der vorherigen Anfrage). Indizes und benutzerdefinierte Variablen werden unterstützt.
- Gewährleistung einer hohen Verfügbarkeit und Ausfallsicherheit.
- Unterstützung für die Erstellung von Snapshots mit dem aktuellen Status der Datenbank zur Erleichterung von Backups.
- Bereitschaft für den industriellen Einsatz (bereits in der Infrastruktur von Unternehmen wie JD, Meituan und Xiaohongshu im Einsatz).
- Möglichkeit, das Speicherungsschema und die Datenaktualisierung ohne Unterbrechung oder Beeinträchtigung der laufenden Operationen vorzunehmen.
- TTL-Unterstützung zur Begrenzung der Lebensdauer von Daten.
- Befehle zur Verwaltung von Einstellungen und Speichergastgebern.
- Werkzeuge zur Verwaltung von Aufgaben und zur Planung des Ausführungsstarts (derzeit werden nur die Operationen COMPACT und FLUSH unterstützt).
- Operationen zur Suche nach dem vollständigen Pfad und dem kürzesten Pfad zwischen gegebenen Knoten.
- OLAP-Schnittstelle zur Integration mit externen Analyseplattformen.
- Hilfsprogramme zum Import von Daten aus CSV-Dateien oder aus Spark.
- Export von Metriken zur Überwachung mit Prometheus und Grafana.
- Webschnittstelle Nebula Graph Studio zur Visualisierung von Graphoperationen, zur Navigation im Graphen, zur Gestaltung des Speicherschemas und zum Datenimport.
In der neuen Version:
- Unterstützung der Funktion extract() zur Extraktion von Teilfolgen, die dem angegebenen Ausdruck entsprechen, hinzugefügt.
- Einstellungen in der Konfigurationsdatei optimiert.
- Optimierungsregeln zur Entfernung des nutzlosen Operators AppendVertices und zur Deaktivierung der Anwendung von Kanten- und Knotengeschwindigkeit hinzugefügt.
- Menge der für die JOIN-Operation und die Operatoren Traverse und AppendVertices kopierten Daten reduziert.
- Die Effizienz von SHORTEST PATH und SUBGRAPH optimiert.
- Speicherzuweisung verbessert (Arena Allocator verwendet).
Quelle: opennet.ru
