Definition Was ist eine Graphdatenbank?
Die Graphdatenbank nutzt die mathematische Graphentheorie und speichert Daten und ihre Beziehungen mithilfe von Knoten und Kanten. Mit Graphalgorithmen lassen sich komplizierte Datenbankabfragen in hoher Geschwindigkeit ausführen. Graphdatenbanken weisen gegenüber relationalen Datenbanken ein anderes Funktionsprinzip auf.
Anbieter zum Thema

Die Graphdatenbank gehört zur Kategorie der NoSQL-Datenbanken und verwendet zur Speicherung von Daten und deren Beziehungen andere Prinzipien und Strukturen als klassische relationale Datenbanken. Unter Nutzung der mathematischen Graphentheorie kommen sogenannte Knoten und Kanten für die Abbildung der Informationen zum Einsatz. Es lassen sich stark vernetzte Informationen speichern und übersichtlich darstellen.
Bekannte Konzepte für Graphdatenbanken sind der Labeled-Property Graph (LPG) und das Resource Description Framework (RDF). Zur Abfrage von Informationen kommen spezialisierte Algorithmen zum Einsatz, die komplexe Abfragen vereinfachen und beschleunigen.
Große Stärke der Graphdatenbank ist es, reale, stark vernetzte Sachverhalte auf natürliche Art ohne komplizierte Datenbankkonstrukte zu speichern. Die Vernetzung der Daten ist dem menschlichen Denken sehr ähnlich. Oft genutzte Graphdatenbanken sind die hochleistungsfähige Graphdatenbank-Engine Amazon Neptun oder die Open-Source-basierte, nichtrelationale Graphdatenbank Neo4j.
Aufbau und Datenstruktur der Graphdatenbanken
Graphdatenbanken setzen sich aus den Elementen „Knoten“ und „Kanten“ zusammen. Knoten stellen in visueller Darstellung Punkte dar, die durch Linien (Kanten) verbunden sind. Ein Knoten repräsentiert eine Entität. Kanten verbinden die Entitäten miteinander und stellen die Relationen zwischen den Knoten dar. Die Beziehungen können symmetrisch sein oder eine Richtung haben. Knoten sind durch eindeutige Bezeichner identifizierbar und besitzen eine bestimmte Menge von eingehenden, ausgehenden oder ungerichteten Beziehungen zu anderen Knoten.
Zusätzlich lassen sich Kanten gewichten. Dadurch ist es möglich, einer Beziehung ein gewisse Qualität zuzuweisen. Qualitäten können beispielsweise Zeiten oder Entfernungen sein. Zur Speicherung der Knoten und Kanten sind spezielle Datenstrukturen wie Adjazenzmatrizen oder Indizenzmatrizen erforderlich. Während Adjazenzmatrizen für stark vernetzte Graphen zum Einsatz kommen, eignen sich Indizenzmatrizen eher für schwach vernetzte Graphen.
Das Durchsuchen von Graphdatenbanken ist mit spezialisierten Graphalgorithmen möglich. Mithilfe der Algorithmen sind komplexe Abfragen in kurzer Zeit möglich. Die Algorithmen durchqueren die Graphen, finden indirekte oder direkte Nachbarn, identifizieren stark vernetzter Regionen innerhalb eines Graphen oder berechnen kürzeste Pfade zwischen zwei Knoten. Grundsätzlich kann zwischen der Tiefensuche und der Breitensuche unterschieden werden. Die Tiefensuche besucht zunächst den nächst tieferen Knoten. Die Breitensuche durchsucht im ersten Schritt alle Nachbarknoten einer Ebene und wechselt anschließend erst auf die nächst tiefere Ebene.
Abgrenzung der Graphdatenbank zur relationalen Datenbank
Graphdatenbanken und relationale Datenbanken unterscheiden sich grundsätzlich in Struktur, Aufbau und Arbeitsweise. Relationale Datenbanken nutzen Tabellen und Zeilen zur Verwaltung der Daten. Eine Zeile einer Tabelle repräsentiert einen Datensatz. Die Spalten der Zeile stellen die Attributswerte des Datensatzes dar. Über das Relationsschema sind Anzahl und Typ der Attribute festgelegt. Die Beziehungen zwischen verschiedenen Tabellen stellen eindeutige Schlüssel her. Graphen sind auch in relationalen Datenbanken abbildbar. Allerdings ist die Speicherung stark vernetzter Informationen durch die implizite Abbildungsmethode sehr aufwendig. Graphdatenbanken bieten durch ihr explizites Graphenmodell performantere Speicherungsmöglichkeiten.
Vorteile durch den Einsatz von Graphdatenbanken
Für bestimmte Anwendungsszenarien und die Speicherung von stark vernetzten Informationen bieten Graphdatenbanken einige Vorteile. Diese sind unter anderem:
- keine starren, unflexiblen Tabellenstrukturen wie in relationalen Datenbanken
- einfache, anschauliche und dem menschlichen Denken ähnliche Abbildung der Beziehungen der Daten untereinander
- keine Abhängigkeit der Abfragegeschwindigkeit von der Gesamtmenge der Daten
- hohe Abfragegeschwindigkeit auch bei komplexen Suchanfragen und stark vernetzten Beziehungen
- hohe Agilität und Flexibilität des Datenmodells – keine komplizierte Schemenmigrationen wie bei relationalen Datenbanken
Die verschiedenen Abfragesprachen für Graphdatenbanken
Für relationale Datenbanken existiert die einheitliche Abfragesprache SQL (Structured Query Language). Eine solche Sprache ist für Graphdatenbanken nicht verfügbar, da kein einheitlicher Standard definiert ist. Unterschiedliche Graphdatenbanken nutzen unterschiedliche Abfragesprachen. Bekannte Abfragesprachen sind beispielsweise:
- Cypher: Abfragesprache für Neo4j
- Gremlin: Open-Source-basierte Abfragesprache für verschiedene Graphdatenbanken wie Neo4j, OrientDB oder DEX
- SPARQL: von der W3C spezifizierte Abfragesprache für RDF-Datenmodelle
- Blueprints: für verschiedene Graphdatenbanken nutzbare Java-API
- GraphQL: SQL-artige Abfragesprache
- Rexster: von mehreren Herstellern unterstützte HTTP/REST-Schnittstelle für die Abfrage von Graphdatenbanken per Internet
Typische Anwendungen für die Graphdatenbank
Graphdatenbanken eignen sich für Anwendungen besonders gut, bei denen es überwiegend um die Speicherung und die Analyse von Verbindungen und Beziehungen geht. Es lassen sich beispielsweise Daten aus sozialen Netzwerken hinterlegen und umfangreich auswerten. Weitere Anwendungsbeispiele sind die Abbildung komplexer Beziehungen des Supply Chain Managements, die Datenanalyse in Customer-Relationship-Management-Systemen, die Analyse von Kundenprofilen, Risikoanalysen, die Netzwerkfehlersuche oder die Optimierung des Routings in Netzwerken.
(ID:45680438)