🏠 » Lexikon » N » Neo4j

Neo4j

Neo4j

gehört zu den bekanntesten und am weitesten verbreiteten, quelloffenen Graphdatenbanken zur Speicherung vernetzter Informationen.

Das mit Java entwickelte Datenbanksystem wurde in seiner ersten Version 2010 veröffentlicht und gehört zu den sogenannten NoSQL Datenbanken. Im Gegensatz zu relationalen Datenbanksystemen werden die Daten in einer Graphstruktur organsiert und verarbeitet.

Das hochskalierbare System steht in der Community Edition kostenlos und lizenzfrei zur Verfügung. Umfangreiche Zusatzfunktionen, besonders für den Enterprise Bereich, sind über eine kommerzielle Lizenz verfügbar.

Neo4j - Aufbau und Datenorganisation

In Neo4j werden Daten, und deren Beziehung untereinander, in Form von Knoten und Kanten gespeichert. Die Konten, auch als Nodes bezeichnet, stellen konkrete Objekte bzw. Entitäten dar, die vergleichbar sind mit einem Datensatz in einer relationalen Datenbank. Beziehungen zwischen den Knoten werden in Kanten, sogenannten Relationships, gespeichert. Wie in der Abbildung zu sehen, können zwischen zwei Knoten keine, eine oder mehrere Beziehungen vorhanden sein.
Neo4j Definition & Erklärung | Datenbank Lexikon
Die Kanten und Knoten eines Graphen können Attribute (Properties genannt) und Labels (nur Knoten) tragen. Die Abbildung zeigt exemplarische Attribute der Kunden John und Jane, die im dargestellten Modell bekannt sind. Knoten können jederzeit um weitere Attribute und Labels erweitert werden. Mit den Labels werden Teilmengen ausgezeichnet und indexiert, um diese zu gruppieren und bei Suchanfragen schneller ermitteln zu können. Dabei kann ein Knoten mehrere Labels aufweisen.

Die Abfragesprache Cypher in Neo4j

Für die Erstellung und Abfrage von Graphen steht in Neo4j die deklarative Abfragesprache Cypher zur Verfügung. Sie ähnelt dem Syntaxaufbau von SQL und ist für einen menschlichen Leser gut verständlich. Zudem können die Daten in einem geeigneten Editor durch Cypher visuell angezeigt werden. Hierfür steht der Neo4j Browser nativ zur Verfügung. Dieser kann über einen Webservice der Neo4j Instanz aufgerufen werden.

Anstatt die Daten bei einer Abfrage mittels Joins zu verknüpfen, wird der Graph durch Cypher traversiert. Dabei spielt die Indexierung der Knoten eine große Rolle, da dieser Einfluss auf die Geschwindigkeit der Abfrage hat.

Mittels Indexierungen und den Constraints wird das Schema eines Graphen beschrieben. Dabei gibt es keine formalen Vorgaben oder Einschränkungen wie die Indexierung erfolgen muss oder welche Constraints zu verwenden sind.

Neo4j - Eigenschaften und Vorteile

Der Vorteil gegenüber relationalen Datenbanken besteht darin, dass die Informationen im Graph schemafrei gespeichert werden können und Beziehungen zwischen den Objekten direkt ersichtlich sind. Fehlende Attribute können zu einem späteren Zeitpunkt ergänzt werden. Zudem ist eine Erweiterung der Knoten mit Zusatzinformationen, die ursprünglich nicht konzipiert waren, sehr einfach möglich.

Im Gegensatz zu relationalen Datenbanksystemen, wird die Datenmodellierung nicht in einem festen Schema abgebildet, da es keine Tabellen gibt, die gleiche Daten beinhalten. Stattdessen werden die Daten mit Labeln organisiert, die mit Tabellennamen gleichgesetzt werden können, jedoch ohne eine feste Vorgabe der enthaltenen Attribute zu geben.

In Neo4j kann nur ein Graph in einer Instanz erstellt werden. Die gespeicherten Informationen sind nicht logisch getrennt. Um nicht alle Informationen des Graphen bei einer Abfrage zu erhalten, werden die Daten über eine Cypher Abfrage in der Regel eingeschränkt. Dadurch können beliebig viele Subgraphen ermittelt werden, die thematisch zusammenhängen.