Spanner Graph – Übersicht

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

Eigenschaftsgraphen modellieren Daten als Knoten (Entitäten) und Kanten (Beziehungen zwischen Entitäten), die beide Eigenschaften (Labels und Metadaten) haben können. Dies ist besonders nützlich für komplexe, stark vernetzte Daten wie soziale Netzwerke, Betrugserkennung und Empfehlungsmaschinen.

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

Cloud Spanner Graph einrichten und abfragen

Wenn Sie Spanner Graph verwenden möchten, müssen Sie zuerst eine Spanner Omni-Bereitstellung und ‑Datenbank erstellen. Nachdem Sie die Datenbank erstellt haben, definieren Sie ein Eigenschaftsgraphschema, das vorhandene Spanner Omni-Tabellen Graphknoten und ‑kanten zuordnet.

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

Übersicht über das Spanner Graph-Schema

Das Spanner Graph-Schema interpretiert Ihre relationalen Daten als Graph. Das Schema gibt die Knotentabellen und Kantentabellen an, aus denen der Graph besteht. Jede Tabelle ordnet Zeilen aus einer Spanner-Tabelle Graphelementen 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 (Data Definition Language, Datendefinitionssprache) können Sie die Definition Ihres Eigenschaftsgraphen erstellen, aktualisieren oder löschen. Die Anweisung CREATE PROPERTY GRAPH definiert den Graphen und gibt die zugrunde liegenden Tabellen, Schlüssel und Labels an. 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:

  • Mit Interleaving Kanten mit ihren Quellknoten zusammen platzieren.

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

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

  • Je nach Abfragemustern zwischen schematisierten und schemalosen Designs wählen.

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

Eigenschaftsgraph mit SQL-Ansichten erstellen

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

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

Die Verwendung von Ansichten als Abstraktionsebene bietet eine Zugriffssteuerung auf Zeilenebene, flexible Datentransformationen und einen reibungsloseren Übergang von schemalosen zu formalisierten Datenmodellen. Weitere Informationen finden Sie unter Übersicht über Graphen, die aus SQL Ansichten erstellt wurden.

Graph 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 Klauseln NODE TABLES oder EDGE TABLES der Anweisung CREATE PROPERTY GRAPH darauf. Sie müssen explizit einen KEY für jedes ansichtsbasierte Element definieren. Die Klausel KEY gibt die Spalten aus der Quellansicht an, die jedes Graphelement eindeutig identifizieren. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Graph 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 Mit INSERT-Anweisungen oder Mutations-APIs neue Zeilen zu den Knoten- und Kantentabellen hinzufügen.
Aktualisieren Vorhandene Eigenschaften ändern, indem Sie die entsprechenden Spalten in den zugrunde liegenden Tabellen aktualisieren.
Löschen Knoten oder Kanten entfernen, indem Sie die entsprechenden Zeilen löschen. Mit ON DELETE CASCADE zugehörige Kanten automatisch entfernen, wenn Sie einen Knoten löschen.

Spanner Graph-Abfragen

Spanner Graph unterstützt die Graph Query Language (GQL) für Abfragen, mit denen Sie Ihre Graphdaten durchlaufen und analysieren können.

Übersicht über Abfragen

Graphabfragen verwenden die Klausel GRAPH, um den Zielgraphen anzugeben, und die Klausel MATCH, um die zu suchenden Muster zu definieren. 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 Graphen dar. Sie können alle Pfade zwischen zwei Knoten suchen, den kürzesten Pfad finden oder Pfade anhand ihrer Eigenschaften oder Länge mit Funktionen wie PATH_LENGTH(), NODES() und EDGES() filtern. Weitere Informationen finden Sie in der Spanner Dokumentation unter Mit Pfaden arbeiten.

Best Practices für das Optimieren von Abfragen

So optimieren Sie Ihre Graphabfragen:

  • Beginnen Sie die Durchläufe 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.

Spanner Graph ist in die Spanner-Volltextsuche integriert. Mit der Funktion SEARCH() können Sie Knoten oder Kanten anhand von unstrukturierten Texteigenschaften suchen. Weitere Informationen finden Sie in der Spanner-Dokumentation unter Volltextsuche mit Spanner Graph verwenden.

Sie können Vektorähnlichkeitssuchen für Ihre Graphdaten ausführen, um die k nächsten Nachbarn (KNN) oder ungefähren nächsten Nachbarn (ANN) zu finden. Dies ist nützlich für ähnlichkeitsbasierte Empfehlungen und KI-gestützte 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 können Sie neue Typen und Attribute hinzufügen, ohne DDL-Änderungen vornehmen zu müssen. 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 Ihren neuen Eigenschaftsgraphen unterstützen. 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 Ihnen die GQL-Implementierung in Spanner Graph bekannt. Es gibt jedoch einige Unterschiede in der Syntax. Diese Referenz hilft Ihnen, openCypher-Konzepte und ‑Abfragen den MATCH- und RETURN-Semantiken von Spanner Graph 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 (verwaiste Kanten) und langsam ausgeführte Abfragen. Bei der Fehlerbehebung müssen Sie Ihre Schemadefinitionen überprü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.

Nächste Schritte