Was ist eine Graph Database?
Eine Graphdatenbank ist eine spezielle Art von Datenbank, die Daten in Form von Knoten und Kanten speichert. Dieses Vorgehen ermöglicht eine effiziente Modellierung und Abfrage komplexer Beziehungen. Graphdatenbanken eignen sich daher besonders gut für Anwendungen, die stark miteinander vernetzte Informationen abbilden.
Woraus besteht eine Graphdatenbank und wofür wird sie eingesetzt?
Eine Graphdatenbank (engl. graph database) wird, wie der Name bereits verrät, auf Grundlage von Graphen abgebildet. Mit diesen Graphen werden komplex miteinander vernetzte Informationen und deren Beziehungen zueinander übersichtlich dargestellt und als großer, zusammenhängender Datensatz gespeichert.
Die Graphen setzen sich dabei aus Knoten, den eindeutig bezeichneten und identifizierbaren Datenentitäten bzw. Objekten, und den Kanten, auch Edges genannt, zusammen. Bei Letzteren handelt es sich um die Beziehungen dieser Objekte zueinander. Visuell werden die beiden Komponenten als Punkte und Linien dargestellt. Kanten besitzen so jeweils einen Start- und einen Endpunkt, während jeder Knoten immer eine bestimmte Anzahl an Beziehungen, ob eingehend, ausgehend oder ungerichtet, zu anderen Knoten aufweist.
Graphdatenbanken werden beispielsweise für die Analyse der Nutzerbeziehungen in sozialen Netzwerken oder des Kaufverhalten von Nutzerinnen und Nutzern in Onlineshops eingesetzt. Durch das Abspeichern von Beziehungen können dann etwa gezielt Produkt- und Freundschaftsempfehlungen gegeben und individuelle Personen- und Produktnetzwerke aufgebaut werden.
Relationale Datenbanken speichern Daten in Tabellen und nutzen SQL zur Abfrage. Im Gegensatz dazu gehören Graphdatenbanken zur NoSQL-Familie und bieten eine flexiblere Struktur zur effizienten Handhabung komplexer Beziehungen zwischen Daten.
Beispiele für Graph Databases
Es gibt unterschiedliche Konzepte, die den Aufbau solcher Graph DBs beschreiben. Die wohl bekanntesten sind der Labeled-Property-Graph und das Resource Description Framework (RDF).
Labeled-Property-Graph
Beim Labeled-Property-Graph (LPG) werden jedem Knoten und jeder Kante des Graphen bestimmte Eigenschaften, sogenannte properties, und Labels zugewiesen. Diese speichern spezifische Informationen über die Entitäten oder Beziehungen. Labels dienen dabei der Kategorisierung, sodass beispielsweise ein Knoten als „Person“ oder „Unternehmen“ markiert werden kann, während Properties zusätzliche Attribute wie Namen, Alter oder geografische Koordinaten enthalten können.
Diese Struktur ermöglicht eine sehr flexible und leistungsfähige Datenabfrage, da Beziehungen und Eigenschaften direkt in der Datenbank gespeichert sind und durch einfache Abfragen abgerufen werden können. LPGs eignen sich besonders gut für die Modellierung komplexer Netzwerke, in denen Entitäten und ihre Verbindungen miteinander in unterschiedlichen Kontexten beschrieben werden.
Resource Description Framework
Im Resource Description Framework (RDF) werden Informationen in Tripeln organisiert, die aus Subjekt, Prädikat und Objekt bestehen und damit eine einfache Struktur zur Darstellung von Beziehungen zwischen Entitäten bieten. Jedes Tripel stellt eine Aussage dar, wobei das Subjekt die Ressource bezeichnet, das Prädikat die Eigenschaft oder Beziehung beschreibt und das Objekt den Wert oder eine andere Ressource darstellt.
Mit RDF können Daten auf eine standardisierte Weise verknüpft werden, sodass sie über verschiedene Systeme hinweg miteinander kombiniert und abgerufen werden können. Diese Flexibilität macht RDF besonders nützlich für Anwendungen, die auf Verbindungen von Daten aus unterschiedlichen Quellen angewiesen sind wie etwa bei Wissensgraphen.
Wie funktionieren Abfragen in einer Graph Database?
Bei der Anwendung einer Graph DB kommen ganz verschiedene Abfragemöglichkeiten zum Einsatz. Dies liegt vor allem daran, dass es keine einheitliche Abfragesprache gibt. Anders als traditionelle Modelle setzen Graphdatenbanken zudem auf spezielle Algorithmen, damit sie ihre wesentliche Aufgabe erfüllen: komplizierte Datenabfragen zu vereinfachen und zu beschleunigen.
Zu den wichtigsten Algorithmen zählen dabei die Tiefensuche und die Breitensuche: Bei der Tiefensuche wird jeweils der nächsttiefere Knoten abgesucht, die Breitensuche bewegt sich dagegen von Ebene zu Ebene. Die Algorithmen ermöglichen es, Muster (sogenannte Graph Patterns) sowie direkte und indirekte Nachbarknoten zu finden. Weitere Algorithmen ermöglichen es, den kürzesten Pfad zwischen zwei Knoten zu berechnen und Cliquen (Teilmengen von Knoten) und Hotspots (besonders stark vernetzte Informationen) zu identifizieren. Eine der Stärken der Graph Database besteht darin, dass die Beziehungen in der Datenbank selbst abgespeichert sind und somit nicht erst bei Abfrage berechnet werden müssen. Daraus resultiert eine hohe Performance-Geschwindigkeit selbst bei komplizierten Abfragen.
Die Vor- und Nachteile von Graph Databases
Die Stärke einer Datenbank lässt sich vor allem an vier Faktoren bemessen: Integrität, Performance, Effizienz und Skalierbarkeit. Die Datenabfrage soll schneller und einfacher werden – damit kann der Hauptzweck von Graphdatenbanken grob zusammengefasst werden. Dort, wo beispielsweise die relationalen Datenbanken an ihre Leistungsgrenzen stoßen, arbeitet das graphbasierte Modell besonders agil. Denn Komplexität und Menge der Daten beeinflussen den Abfrageprozess bei diesem Modell nicht negativ.
Zudem lassen sich mit dem Graph-Datenbank-Modell reale Sachverhalte auf natürliche Art speichern. Die verwendete Struktur ist dem menschlichen Denken sehr ähnlich und macht die Verknüpfungen deshalb so anschaulich. Jedoch sind auch Graphdatenbanken keine ganzheitlichen Lösungen. An ihre Grenzen kommen sie beispielsweise beim Thema Skalierbarkeit. Da sie vor allem für eine Ein-Server-Architektur ausgelegt sind, stellt ein Wachstum eine (mathematische) Herausforderung dar. Zudem existiert noch keine einheitliche Abfragesprache.
Die Vor- und Nachteile von Graphdatenbanken im Überblick:
Vorteile | Nachteile |
---|---|
Abfragegeschwindigkeit lediglich von der Anzahl konkreter Beziehungen und nicht von der Datenmenge abhängig | Schlecht skalierbar, da auf Ein-Server-Architektur ausgelegt |
Ergebnisse in Echtzeit | |
Anschauliche und übersichtliche Darstellung von Beziehungen | |
Flexible und agile Strukturen |
Grundsätzlich sollten Graphdatenbanken nicht als absoluter und besserer Ersatz herkömmlicher Datenbanken angesehen werden. So bleiben relationale Strukturen weiterhin durchaus sinnvolle Standardmodelle, die eine hohe Integrität und Stabilität der Daten garantieren und eine flexible Skalierbarkeit ermöglichen. Wie so oft gilt also auch hier: Auf den Einsatzzweck kommt es an!
Graphdatenbanken im Vergleich
Es gibt verschiedene Graphdatenbanken, die sich für unterschiedliche Einsatzszenarien eignen. Im Folgenden finden Sie vier beliebte Modelle aufgelistet:
- Neo4j: Neo4j ist die beliebteste Graph DB und als Open-Source-Modell konzipiert.
- Amazon Neptune: Diese Graphdatenbank ist über die Public Cloud von Amazon Web Services nutzbar und wurde 2018 als hochleistungsfähige Datenbank freigegeben.
- SAP Hana Graph: Mit SAP Hana hat der Entwickler SAP eine Plattform geschaffen, die auf einem relationalen Datenbankmanagementsystem aufbaut und durch das integrierte, graphenorientierte Modell SAP Hana Graph ergänzt wird.
- OrientDB: Diese Database vereint dokumentenorientierte und graphbasierte Ansätze und gilt als eines der schnellsten aktuell verfügbaren Modelle.
Im direkten Vergleich zeigt sich, dass die Datenbanken verschiedene Features mitbringen, die je nach individuellem Anwendungsfall hilfreich sein können:
Neo4j | Amazon Neptune | SAP HANA Graph | OrientDB | |
---|---|---|---|---|
Typ | Nativ | Verwaltet (Cloud) | Graph-Erweiterung | Multi-Model |
Abfragesprachen | Cypher | SPARQL, Gremlin, OpenCypher | SQL-basiert | SQL-ähnlich, Gremlin |
Datenmodell(e) | Property Graph | Property Graph, RDF | Relational, Graphmodell | Graph, Dokumente |
Typische Einsatzszenarien | Soziale Netzwerke, Betrugserkennung, Empfehlungsdienste, Netzwerkmanagement | Wissensgraphen, Identitäts- und Zugriffsmanagement, Cloud-native Apps | Business-Analytics, IoT, Finanzanalyse, SAP-Anwendungen | Content-Management, komplexe Datenbeziehungen, verteilte Systeme |
Sehen Sie sich auch unsere weiteren Datenbank-Artikel an: