Spanner Graph ist eine Funktion von Spanner und Spanner Omni, mit der Sie Property-Graphen erstellen und abfragen können. Dazu verwenden Sie eine Graphdatenbank direkt in Spanner. Spanner Graph kombiniert die Skalierbarkeit und Zuverlässigkeit von Spanner mit der Leistungsfähigkeit von Graphmodellierung und ‑abfragen.
In Attributgraphen werden Daten als Knoten (Entitäten) und Kanten (Beziehungen zwischen Entitäten) modelliert. Beide können Attribute (Labels und Metadaten) haben. Das 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 eine 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 Graph-Abfragen mit Graph Query Language (GQL) ausführen. GQL ist eine Erweiterung von GoogleSQL, die den ISO-GQL-Standard implementiert. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Cloud Spanner Graph einrichten und abfragen.
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
Mit DDL-Anweisungen (Datendefinitionssprache) können Sie die Definition Ihres Eigenschaftsgraphen erstellen, aktualisieren oder 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 Edges mit ihren Quellknoten platziert.
Referenzielle Einschränkungen (Fremdschlüssel) verwenden, um die Integrität des Diagramms zu gewährleisten.
Erstellen von sekundären Indexen für Eigenschaften, 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 einen Graphen aus Ansichten erstellen möchten, definieren Sie die Ansichten mit Standard-SQL. 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 in der Spanner-Dokumentation unter Spanner Graph-Daten verwalten.
| Vorgang | Beschreibung |
|---|---|
| Einfügen | Fügen Sie den Knoten- und Kantentabellen mit INSERT-Anweisungen oder Mutations-APIs neue Zeilen hinzu. |
| Aktualisieren | Sie können vorhandene Attribute ä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 Graph-Abfragen wird mit der GRAPH-Klausel der Ziel-Graph und mit der MATCH-Klausel die Muster angegeben, die Sie finden möchten. Sie können Knoten- und Kanteneigenschaften zurückgeben oder Aggregationen für die Ergebnisse ausführen. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Übersicht über Abfragen.
Mit Pfaden arbeiten
Pfade stellen Sequenzen von Knoten und Kanten im Diagramm dar. Sie können alle Pfade zwischen zwei Knoten, den kürzesten Pfad oder Pfade basierend auf ihren Eigenschaften oder ihrer Länge filtern. Dazu verwenden Sie Funktionen wie PATH_LENGTH(), NODES() und EDGES(). 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 Ihre Traversierungen mit Knoten mit niedriger Kardinalität.
Geben Sie explizit Labels für alle Knoten- und Kantenmuster an.
Verwenden Sie die Funktion
IS_FIRST(), um die Anzahl der Kanten zu 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.
Volltextsuche mit Spanner Graph verwenden
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 in der Spanner-Dokumentation unter Volltextsuche mit Spanner Graph verwenden.
Vektorsuche mit Spanner Graph verwenden
Sie können Vektorähnlichkeitssuchen für Ihre Grafdaten ausführen, 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 in der Spanner-Dokumentation unter Vektorsuche mit Spanner Graph verwenden.
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 lassen sich neue Typen und Attribute ohne DDL-Änderungen hinzufügen. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Schemalose Daten mit Spanner Graph verwalten.
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, ist die GQL-Implementierung in Spanner Graph vertraut, es gibt jedoch einige Syntaxunterschiede.
Diese Referenz hilft Ihnen, openCypher-Konzepte und ‑Abfragen den semantischen Elementen 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 verankerte 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 in der Spanner-Dokumentation unter Fehlerbehebung bei Spanner Graph.