Graphdatenbank ist nicht gleich Graphdatenbank

Seite 3: Native Graphdatenbanken

Inhaltsverzeichnis

Eine native Graphdatenbank ist konsequent auf die sichere und effiziente Verarbeitung von Graphen ausgelegt. Das betrifft die Abfragesprache, die Datenbankmanagement-Engine, das Dateisystem sowie Clustering, Backup und Monitoring.

Tendenziell führen native Technologien Abfragen schneller durch, lassen sich besser skalieren (ohne Einbußen bei der Abfragegeschwindigkeit und wachsender Datenmengen) und laufen auf weniger anspruchsvoller Hardware weitaus effizienter. Sie sind speziell dafür konzipiert, Abfragen im Graphen durchzuführen (Affordance) und Graph-Workloads zu bewältigen.

Ein Schlüsselfaktor bei der effizienten Nutzung von Graphdaten ist eine native Abfragesprache (z. B. openCypher). Ein Abfrageplaner auf einem nativen Datenbanksystem kann Optimierungen durchführen, die für nicht native Datenbanksysteme nicht möglich sind. Bei einfachen Graphanalysen waren die nativen Lösungen bis zu 100.000-Mal schneller als nicht-native Systeme, gemessen an deren eigenen Benchmarks.

Ein natives Graphspeichersystem ist so konzipiert, dass das Dateisystem auf Graphen zugeschnitten ist. Das Traversieren hat unabhängig von der Größe des Graphen entlang einer Beziehung die Komplexität O(1), da der Graph auf der Festplatte und im Speicher (bei Verwendung sehr weniger Indizes) abgelegt wird. Daher beträgt die kalkulierbare Komplexität bei der Traversierung mehrerer Hops O(n). Die Latenzzeit der Abfragen ist proportional zum Suchumfang auf dem Graphen und nicht zur Gesamtgröße der Daten – ein entscheidender Vorteil.

Rein technisch gesehen ist die Komplexität jeder Traversierung wegen der Abstimmung zwischen Software und Hardware gering. Native Graphdatenbanken sind darauf optimiert, was ein Computer am besten kann: Pointer zu ermitteln und darauf zuzugreifen, um auf dem Graphen effizient und mit extrem hohen Geschwindigkeiten zu navigieren. Sollen dagegen Daten aus einem relationalen, spaltenorientierten, dokumentenbasierten oder Key-Value-Modell für einen Graphen genutzt werden, muss das Datenbanksystem aufwendige Transferarbeiten zwischen beiden Modellen vornehmen (Abb. 3).

Abb.3: Vergleich der Geschwindigkeit nativer und nicht-nativer Graphdatenbanken.

(Bild: Neo4j)

Die Transaktionsmechanismen von nativen Graphdatenbanken gewährleisten, dass die Datensicherheit nicht durch Netzwerkstörungen, Serverausfälle oder Konflikte aufgrund konkurrierender Transaktionen oder Skalierungsentscheidungen gefährdet ist. Durch Konsensus-Protokolle wie Raft und Muster wie "Transaction Log Shipping" können Cluster aus nativen Graphdatenbanken eine hohe Datenkonsistenz garantieren.

Ein natives Speichersystem erlaubt zudem die Anpassung an künftige Hardwarearchitekturen. Mit der Weiterentwicklung der Speicher- und Festplattentechnologien wird sich auch die entsprechende Unterstützung der Graph-Workloads weiterentwickeln. So ist zu erwarten, dass sich das native Speichermodell an neuartige Massenspeicher und Speicherarchitekturen anpassen wird, beispielsweise an nicht-flüchtigen RAM und Multi-Terabytespeicher.