Spanner Graph – Übersicht

Spanner Graph ist eine Funktion von Spanner und Spanner Omni, mit der Sie Property-Graphen direkt in Spanner erstellen und abfragen können. Spanner Graph kombiniert die Skalierbarkeit und Zuverlässigkeit von Spanner mit der Leistungsfähigkeit von Graphmodellierung und ‑abfrage.

In Property-Graphen werden Daten als Knoten (Entitäten) und Kanten (Beziehungen zwischen Entitäten) modelliert. Beide können Attribute (Labels und Metadaten) haben. Dies ist besonders nützlich für komplexe, stark vernetzte Daten wie soziale Netzwerke, Betrugserkennung und Empfehlungssysteme.

Die Themen in diesem Dokument gelten für Spanner Omni genauso wie für Spanner.

Cloud Spanner Graph einrichten und abfragen

Bevor Sie Spanner Graph verwenden können, müssen Sie zuerst eine Spanner Omni-Bereitstellung und -Datenbank erstellen. Nachdem Sie die Datenbank erstellt haben, definieren Sie ein Property Graph-Schema, das vorhandene Spanner Omni-Tabellen Knoten und Kanten im Diagramm zuordnet.

Nachdem Sie das Schema eingerichtet und Daten in die zugrunde liegenden Tabellen eingefügt haben, können Sie mit Graph Query Language (GQL) Graph-Abfragen ausführen. GQL ist eine Erweiterung von GoogleSQL, die den ISO-GQL-Standard implementiert. Weitere Informationen finden Sie unter Cloud Spanner Graph einrichten und abfragen in der Spanner-Dokumentation.

Spanner Graph-Schema – Übersicht

Im Spanner Graph-Schema werden Ihre relationalen Daten als Graph interpretiert. Das Schema gibt die Knoten- und Kanten-Tabellen an, aus denen Ihr Diagramm besteht. Jede Tabelle ordnet Zeilen aus einer Spanner-Tabelle Grafikelementen zu. Elemente können Labels zur Kategorisierung und Eigenschaften zum Speichern von Attributen haben. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Schemaübersicht.

Spanner Graph-Schema erstellen und verwalten

Sie verwenden DDL-Anweisungen (Datendefinitionssprache), um die Definition Ihres Eigenschaftsgraphen zu erstellen, zu aktualisieren oder zu löschen. Mit der CREATE PROPERTY GRAPH-Anweisung wird das Diagramm definiert. Dabei werden die zugrunde liegenden Tabellen, Schlüssel und Labels angegeben. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Spanner Graph-Schema erstellen und verwalten.

Best Practices für das Entwerfen eines Schemas

Ein effizientes Schemadesign ist entscheidend für die Leistung. Best Practices:

  • Durch die Verschachtelung werden Kanten mit ihren Quellknoten platziert.

  • Referenzielle Einschränkungen (Fremdschlüssel) verwenden, um die Integrität des Diagramms zu gewährleisten.

  • Sekundäre Indexe für Attribute erstellen, die häufig gefiltert werden.

  • Auswahl zwischen schematisierten und schemalosen Designs basierend auf Ihren Abfragemustern.

Weitere Informationen finden Sie in der Spanner-Dokumentation unter Best Practices für das Entwerfen eines Schemas.

SQL-Ansichten zum Erstellen eines Property-Graphen verwenden

Sie können SQL-Ansichten verwenden, um die Knoten und Kanten Ihres Diagramms zu definieren. Informationen zu den Unterschieden zwischen der Verwendung einer SQL-Ansicht und einer Tabelle zum Erstellen eines Diagramms finden Sie in der Spanner-Dokumentation unter Vorteile des Erstellens von Diagrammen mit Ansichten anstelle von Tabellen.

Übersicht über Diagramme, die aus SQL-Ansichten erstellt wurden

Wenn Sie Ansichten als Abstraktionsebene verwenden, erhalten Sie eine Zugriffssteuerung auf Zeilenebene, flexible Datentransformationen und einen reibungsloseren Übergang von schemalosen zu formalisierten Datenmodellen. Weitere Informationen finden Sie unter Übersicht über Diagramme, die aus SQL-Ansichten erstellt wurden.

Diagramm aus SQL-Ansichten erstellen

Wenn Sie ein Diagramm aus Ansichten erstellen möchten, müssen Sie die Ansichten mit Standard-SQL definieren. Verweisen Sie dann in den NODE TABLES- oder EDGE TABLES-Klauseln Ihrer CREATE PROPERTY GRAPH-Anweisung darauf. Sie müssen für jedes ansichtsbasierte Element explizit ein KEY definieren. Mit der KEY-Klausel werden die Spalten aus der Quellansicht angegeben, die jedes Grafikelement eindeutig identifizieren. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Diagramm aus SQL-Ansichten erstellen.

Spanner Graph-Daten verwalten

Sie verwalten Daten in Spanner Graph, indem Sie die zugrunde liegenden Tabellen ändern, die den Graphen definieren. Weitere Informationen finden Sie unter Spanner Graph-Daten verwalten in der Spanner-Dokumentation.

Vorgang Beschreibung
Einfügen Fügen Sie den Knoten- und Kantentabellen mit INSERT-Anweisungen oder Mutations-APIs neue Zeilen hinzu.
Aktualisieren Vorhandene Attribute lassen sich ändern, indem Sie die entsprechenden Spalten in den zugrunde liegenden Tabellen aktualisieren.
Löschen Entfernen Sie Knoten oder Kanten, indem Sie die entsprechenden Zeilen löschen. Mit ON DELETE CASCADE können Sie zugehörige Kanten automatisch entfernen, wenn Sie einen Knoten löschen.

Spanner Graph-Abfragen

Spanner Graph unterstützt Graph Query Language (GQL) für Abfragen zum Durchlaufen und Analysieren Ihrer Graphendaten.

Übersicht über Anfragen

Bei Graphabfragen wird mit der GRAPH-Klausel der Zielgraph und mit der MATCH-Klausel die zu suchenden Muster angegeben. Sie können Knoten- und Kanteneigenschaften zurückgeben oder Aggregationen für die Ergebnisse ausführen. Weitere Informationen finden Sie unter Übersicht über Abfragen in der Spanner-Dokumentation.

Mit Pfaden arbeiten

Pfade stellen Folgen von Knoten und Kanten im Diagramm dar. Mit Funktionen wie PATH_LENGTH(), NODES() und EDGES() können Sie alle Pfade zwischen zwei Knoten, den kürzesten Pfad oder Pfade basierend auf ihren Eigenschaften oder ihrer Länge filtern. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Mit Pfaden arbeiten.

Best Practices für das Optimieren von Anfragen

So optimieren Sie Ihre Diagrammabfragen:

  • Beginnen Sie mit Knoten mit niedriger Kardinalität.

  • Geben Sie Labels für alle Knoten- und Kantenmuster an.

  • Mit der Funktion IS_FIRST() können Sie die Anzahl der Kanten begrenzen, die von Superknoten mit hoher Kardinalität durchlaufen werden.

Weitere Informationen finden Sie in der Spanner-Dokumentation unter Best Practices für das Optimieren von Abfragen.

Spanner Graph ist in die Volltextsuchfunktionen von Spanner integriert. So können Sie mit der Funktion SEARCH() nach Knoten oder Edges basierend auf unstrukturierten Texteigenschaften suchen. Weitere Informationen finden Sie unter Volltextsuche mit Spanner Graph verwenden in der Spanner-Dokumentation.

Sie können in Ihren Grafdaten nach Vektorähnlichkeiten suchen, um die K-nächsten Nachbarn (K-Nearest Neighbors, KNN) oder ungefähre nächste Nachbarn (Approximate Nearest Neighbors, ANN) zu finden. Das ist nützlich für ähnlichkeitsbasierte Empfehlungen und KI-basierte Anwendungen. Weitere Informationen finden Sie unter Vektorsuche mit Spanner Graph verwenden in der Spanner-Dokumentation.

Schemalose Daten mit Spanner Graph verwalten

Für Anwendungen mit sich entwickelnden Datenmodellen unterstützt Spanner Graph die schemalose Datenverwaltung. Sie können alle Knoten und Kanten in einzelnen, generischen Tabellen mit JSON-Spalten für Eigenschaften speichern. So können Sie neue Typen und Attribute hinzufügen, ohne DDL-Änderungen vornehmen zu müssen. Weitere Informationen finden Sie unter Schemalose Daten mit Spanner Graph verwalten in der Spanner-Dokumentation.

Zu Spanner Graph migrieren

Sie können Ihre vorhandenen Graphdaten aus anderen Datenbanken zu Spanner Graph migrieren. Dazu müssen Sie Ihre Daten in der Regel als CSV- oder JSON-Dateien exportieren und dann in die Spanner-Tabellen importieren, die Ihrem neuen Property Graph zugrunde liegen. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Daten zu Spanner Graph migrieren.

Spanner Graph-Referenz für openCypher-Nutzer

Wenn Sie mit openCypher vertraut sind, wird Ihnen die GQL-Implementierung in Spanner Graph bekannt vorkommen. Es gibt jedoch einige Syntaxunterschiede. Diese Referenz hilft Ihnen, openCypher-Konzepte und ‑Abfragen den semantischen Konzepten und Abfragen von Spanner Graph MATCH und RETURN zuzuordnen. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Spanner Graph-Referenz für openCypher-Nutzer.

Fehlerbehebung bei Spanner Graph

Häufige Probleme in Spanner Graph sind Verstöße gegen die referenzielle Integrität (nicht referenzierte Kanten) und langsam ausgeführte Abfragen. Bei der Fehlerbehebung müssen Sie Ihre Schemadefinitionen prüfen, nach fehlenden Knoten oder Kanten suchen und Abfragepläne verwenden, um Leistungsengpässe zu identifizieren. Weitere Informationen finden Sie unter Fehlerbehebung bei Spanner Graph in der Spanner-Dokumentation.

Nächste Schritte