In diesem Dokument erfahren Sie, wie Sie mit dem Beispielschema, das Sie unter Cloud Spanner Graph einrichten und abfragen erstellt haben, eine Property-Graph in Spanner Graph erstellen, aktualisieren oder löschen.
Mit Spanner lassen sich Schemas ohne Ausfallzeit aktualisieren. Das Schema einer vorhandenen Datenbank kann auf folgende Arten aktualisiert werden:
Die Google Cloud Console
Reichen Sie einen Befehl auf der Seite Spanner Studio ein.
Klicken Sie auf der Seite „Datenbankübersicht“ oder „Tabellenübersicht“ auf Spanner Studio, um die Seite Spanner Studio aufzurufen. Weitere Informationen zum Zugriff auf Spanner Studio finden Sie unter Daten mit der Google Cloud Console verwalten.
gcloud spanner
-BefehlszeilentoolSenden Sie einen Befehl mit dem Befehl
gcloud spanner databases ddl update
.Die
projects.instances.databases.updateDdl
REST APIDie
UpdateDatabaseDdl
RPC API
Property-Graph-Schema erstellen
Weitere Informationen zu Property Graph-Schemas finden Sie unter Spanner-Graph-Schema – Übersicht.
So erstellen Sie ein Property-Graph-Schema:
Erstellen Sie die Knoteneingabetabellen
Person
undAccount
. Diese Tabellen werden als Eingabetabellen für die Knotendefinitionen im Beispiel-Property-Graphen verwendet.CREATE TABLE Person ( id INT64 NOT NULL, name STRING(MAX), birthday TIMESTAMP, country STRING(MAX), city STRING(MAX), ) PRIMARY KEY (id); CREATE TABLE Account ( id INT64 NOT NULL, create_time TIMESTAMP, is_blocked BOOL, nick_name STRING(MAX), ) PRIMARY KEY (id);
Erstellen Sie die Edge-Eingabetabellen
PersonOwnAccount
undAccountTransferAccount
. Diese Tabellen werden als Eingabetabellen für die Kantendefinitionen im Beispiel-Property-Graphen verwendet.CREATE TABLE PersonOwnAccount ( id INT64 NOT NULL, account_id INT64 NOT NULL, create_time TIMESTAMP, FOREIGN KEY (account_id) REFERENCES Account (id) ) PRIMARY KEY (id, account_id), INTERLEAVE IN PARENT Person ON DELETE CASCADE; CREATE TABLE AccountTransferAccount ( id INT64 NOT NULL, to_id INT64 NOT NULL, amount FLOAT64, create_time TIMESTAMP NOT NULL, order_number STRING(MAX), FOREIGN KEY (to_id) REFERENCES Account (id) ) PRIMARY KEY (id, to_id, create_time), INTERLEAVE IN PARENT Account ON DELETE CASCADE;
Definieren Sie die Property-Graph mithilfe der Beispielanweisung für
CREATE PROPERTY GRAPH
.Im folgenden Beispiel wird eine Property-Graph mit dem Namen
FinGraph
mit den KnotenAccount
undPerson
sowie den KantenPersonOwnAccount
undAccountTransferAccount
definiert.CREATE PROPERTY GRAPH FinGraph NODE TABLES ( Account, Person ) EDGE TABLES ( PersonOwnAccount SOURCE KEY (id) REFERENCES Person (id) DESTINATION KEY (account_id) REFERENCES Account (id) LABEL Owns, AccountTransferAccount SOURCE KEY (id) REFERENCES Account (id) DESTINATION KEY (to_id) REFERENCES Account (id) LABEL Transfers );
In diesem Beispiel werden die folgenden Best Practices angewendet:
- Kanten unter den Quell- oder Zielknoten verschachteln
- Verwenden Sie referenzielle Einschränkungen, um lose Kanten zu vermeiden.
Weitere Informationen finden Sie unter Best Practices für das Graphschemadesign.
Informationen zu häufigen Spanner Graph-Schemafehlern finden Sie unter Fehlerbehebung bei Spanner Graph.
Property-Graph-Schema aktualisieren
Sie haben folgende Möglichkeiten, ein Property-Graph-Schema zu aktualisieren:
- Fügen Sie neue Knoten- oder Kantendefinitionen hinzu.
- Vorhandene Knoten- oder Kantendefinitionen aktualisieren
- Entfernen Sie vorhandene Knoten- oder Kantendefinitionen.
In jedem Fall müssen Sie die Property-Graphen mit dem aktualisierten Schema neu erstellen.
Neue Knoten- oder Kantendefinitionen hinzufügen
So fügen Sie einen neuen Knoten und eine neue Kantendefinition hinzu:
Fügen Sie neue Eingabetabellen hinzu.
Definieren Sie die Eingabetabellen, die mit den neuen Graphelementdefinitionen verknüpft sind. Im folgenden Beispiel werden zwei neue Eingabetabellen
Company
undPersonInvestCompany
hinzugefügt:CREATE TABLE Company ( id INT64 NOT NULL, name STRING(MAX) ) PRIMARY KEY (id); CREATE TABLE PersonInvestCompany ( id INT64 NOT NULL, company_id INT64 NOT NULL, FOREIGN KEY (company_id) REFERENCES Company (id) ) PRIMARY KEY (id, company_id), INTERLEAVE IN PARENT Person ON DELETE CASCADE;
Aktualisieren Sie die Grafik mit
CREATE OR REPLACE PROPERTY GRAPH
. Im folgenden Beispiel wird dasFinGraph
-Schema aktualisiert, indem eine neue KnotendefinitionCompany
und eine neue KantendefinitionPersonInvestCompany
hinzugefügt werden:CREATE OR REPLACE PROPERTY GRAPH FinGraph NODE TABLES ( Person, Account, Company ) EDGE TABLES ( AccountTransferAccount SOURCE KEY (id) REFERENCES Account DESTINATION KEY (to_id) REFERENCES Account LABEL Transfers, PersonOwnAccount SOURCE KEY (id) REFERENCES Person DESTINATION KEY (account_id) REFERENCES Account LABEL Owns, PersonInvestCompany SOURCE KEY (id) REFERENCES Person DESTINATION KEY (company_id) REFERENCES Company LABEL Invests );
Vorhandene Knoten- oder Kantendefinitionen aktualisieren
So aktualisieren Sie vorhandene Knoten- oder Kantendefinitionen:
Aktualisieren Sie das Schema der Eingabetabelle. Im folgenden Beispiel wird der Eingabetabelle
Person
die Spaltemailing_address
hinzugefügt.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);
Aktualisieren Sie das Property-Graph-Schema mit
CREATE OR REPLACE PROPERTY GRAPH
. Im folgenden Beispiel wird der KnotendefinitionPerson
mithilfe der AnweisungCREATE OR REPLACE PROPERTY GRAPH
ein neues Attributmailing_address
hinzugefügt. In diesem Beispiel wird die geändertePerson
-Tabellendefinition automatisch von derPerson
-Knotendefinition übernommen, da sich das Schema der Eingabetabelle geändert hat.CREATE OR REPLACE PROPERTY GRAPH FinGraph NODE TABLES ( Person, Account ) EDGE TABLES ( AccountTransferAccount SOURCE KEY (id) REFERENCES Account DESTINATION KEY (to_id) REFERENCES Account LABEL Transfers, PersonOwnAccount SOURCE KEY (id) REFERENCES Person DESTINATION KEY (account_id) REFERENCES Account LABEL Owns );
Mit
PROPERTIES clause()
können Sie auch die Eigenschaften anpassen, die aus den Eingabetabellen freigegeben werden. Weitere Informationen finden Sie unter Labels und Properties anpassen.
Vorhandene Knoten- oder Kantendefinitionen entfernen
Wenn Sie vorhandene Knoten- oder Kantendefinitionen entfernen möchten, erstellen Sie die Property-Graph ohne diese Knoten- oder Kantentabellen neu.
Im folgenden Beispiel werden die Knotendefinition Person
und die Kantendefinition PersonOwnAccount
entfernt.
CREATE OR REPLACE PROPERTY GRAPH FinGraph
NODE TABLES (
Account
)
EDGE TABLES (
AccountTransferAccount
SOURCE KEY (id) REFERENCES Account
DESTINATION KEY (to_id) REFERENCES Account
LABEL Transfers
);
Attributgrafikschema löschen
Mit der DDL-Anweisung DROP PROPERTY GRAPH
können Sie das Graphenschema löschen.
Im folgenden Beispiel wird das Attributgrafikschema FinGraph
gelöscht:
DROP PROPERTY GRAPH FinGraph;
Nächste Schritte
- Spanner-Graphdaten einfügen, aktualisieren oder löschen
- Weitere Informationen zu Spanner-Graphabfragen
- Best Practices für die Optimierung von Spanner-Graphabfragen