Suchen

Definition Was ist Cypher?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

Cypher ist eine Abfragesprache mit deklarativem Charakter für Property-Graphdatenbanken. Sie ermöglicht, komplexe Abfragen einfach zu formulieren und besitzt eine übersichtliche Syntax. Cypher stellt eine wichtige Quelle zur Entwicklung des neuen Standards einer Graph Query Language (GQL) dar. GQL soll, wie es SQL bereits für relationale Datenbanken ist, eine universelle Abfragesprache für Property-Graphdatenbanken werden.

Firma zum Thema

(Bild: © aga7ta - stock.adobe.com)

Cypher entstand im Jahr 2011 als ein Projekt des Unternehmens Neo4j und stellt eine Abfragesprache für die Graphdatenbank Neo4j zur Verfügung. Im Jahr 2015 machte Neo4j die Abfragesprache mit openCypher zu einem Open-Source-Projekt. Es handelt sich bei Cypher um eine deklarative Abfragesprache, die für Property-Graphdatenbanken vorgesehen ist. Mit der Sprache lassen sich dank der übersichtlichen Syntax selbst komplexe Abfragen oder Datenaktualisierungen in Graphdatenbanken schnell und einfach formulieren.

Cypher eignet sich für die Entwicklung und den Betrieb. Die Sprache ermöglicht einen gleichermaßen effizienten wie intuitiven Umgang mit den Daten in NoSQL-Graphdatenbanken. Entwickler, Datenwissenschaftler und professionelle Businessanwender nutzen die leicht zu erlernende und gut lesbare Abfragesprache. Für die sich aktuell noch in der Standardisierung befindliche Graph Query Language (GQL) stellt Cypher eine wichtige Quelle und Inspiration dar. Ähnlich wie SQL (Structured Query Language) für relationale Datenbanken soll GQL für Property-Graphdatenbanken zu einer Standardsprache werden. Andere Graph-Abfragesprachen sind beispielsweise Gremlin, SPARQL oder GraphQL.

Grundsätzliches zur Funktionsweise von Graphdatenbanken

Um die Abfragesprache Cypher besser zu verstehen, zunächst eine kurze Erläuterungen der Funktionsweise von Graphdatenbanken. Graphdatenbanken speichern Daten nicht wie relationale Datenbanken in Form von Tabellen mithilfe von Spalten und Zeilen, sondern nutzen die mathematische Graphentheorie. Zur Darstellung von Informationen kommen sogenannte Kanten und Knoten zum Einsatz.

Knoten, die jeweils eine Entität repräsentieren, sind über Kanten mit anderen Knoten verbunden. Die Kanten stellen die Beziehungen zwischen den Entitäten dar. Es können symmetrische oder gerichtete Beziehungen vorhanden sein. Die Kanten lassen sich zusätzlich gewichten, wodurch eine Beziehung eine bestimmte Qualität zugewiesen bekommt. Zum Durchsuchen von Graphdatenbanken mit ihren vielen Knoten und Kanten kommen spezielle Graphalgorithmen zum Einsatz. Sie durchqueren die Graphen, finden Nachbarn und berechnen beispielsweise kürzeste Pfade zwischen Knoten.

Grundsätzlich ist bei der Suche nach Daten in einer Graphdatenbank zwischen der Breiten- und Tiefensuche zu unterscheiden. Zu den großen Stärken der Graphdatenbank zählt es, dass sich stark vernetzte Informationen sehr elegant und anschaulich ohne aufwendige Datenbankkonstrukte speichern lassen. Zudem ist die Abfragegeschwindigkeit nicht wie bei relationalen Datenbanken von der Gesamtmenge der Daten abhängig.

Funktionsweise und Syntax von Cypher

Bei Cypher handelt es sich um eine deklarative Abfragesprache für Property-Graphdatenbanken, die ähnliche Leistungsfähigkeit wie SQL für relationale Datenbanken aufweist. Das Property-Graphdatenbankmodell unterscheidet sich von einfachen Graphdatenbanken darin, dass Knoten und Kanten mit Labels und Eigenschaften versehen werden können. Cypher unterstützt verschiedene Graphdatenbanken wie RedisGraph, AgensGraph und natürlich Neo4j. Die deklarative Eigenschaft von Cypher besagt, dass die Ausdrücke das beschreiben, was gefunden werden soll, und nicht, wie die Suche durchzuführen ist. Elementare Schlüsselwörter der Abfragesprache sind:

  • MATCH
  • WHERE
  • RETURN

Mit MATCH lassen sich die gesuchten Verbindungen beschreiben. Das Schlüsselwort WHERE ist mit dem Schlüsselwort WHERE in SQL vergleichbar und filtert nach bestimmten Eigenschaften. RETURN ist dafür vorgesehen, zu beschreiben, welche Informationen des Ergebnisses ausgegeben werden. Weiterhin enthält Cypher Befehle für das Schreiben, Löschen und Aktualisieren von Daten. Diese Befehle sind:

  • CREATE
  • DELETE
  • SET
  • REMOVE

Cypher als wichtige Quelle für die Standardisierung von GQL

Für relationale Datenbanken existiert mit SQL eine universelle Abfragesprache. Diese gab es bisher für Graphdatenbanken nicht. Daher hat das ISO/IEC Joint Technical Committee 1 (JTC1) 2019 beschlossen, eine Graph Query Language (GQL) als neue universelle ISO-Datenbanksprache für Property-Graphdatenbanken zu standardisieren. Einen wichtigen Beitrag und zahlreiche Inspirationen für das ISO-Projekt und GQL liefert Cypher. GQL baut in vielen Bereichen auf Cypher auf und bietet neue Möglichkeiten, wie eigene Graphen-Views zu erstellen oder hierarchische und tabellarische Daten zu generieren. Zahlreiche Unternehmen wie Neo4j, SAP, IBM oder Redis Labs sind aktiv an der Entwicklung der Graph Query Language beteiligt.

Vorteile der Graphdatenbank-Abfragesprache Cypher

Cypher bietet als Abfragesprache für Property-Graphdatenbanken zahlreiche Vorteile. Zu diesen Vorteilen zählen beispielsweise:

  • schnell zu erlernende und gut lesbare Abfragesprache
  • einfache und übersichtliche Syntax
  • komplexe Abfragen mit einfachen Ausdrücken realisierbar
  • Open-Source-Projekt openCypher für verschiedene Graphdatenbanken und Plattformen nutzbar
  • breite Akzeptanz der Abfragesprache Cypher
  • bildet eine wichtige Grundlage der aktuell noch in der Standardisierung befindlichen Graph Query Language (GQL)

(ID:46405605)

Über den Autor