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 können Sie Schemaaktualisierungen ohne Ausfallzeiten vornehmen. Sie können das Schema einer vorhandenen Datenbank auf eine der folgenden Arten:
Die Google Cloud Console
Senden Sie einen Befehl auf der Seite Spanner Studio.
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
Schema für Attributgrafik erstellen
Weitere Informationen zu Property Graph-Schemas finden Sie unter Spanner-Graphschema – Übersicht.
So erstellen Sie ein Schema für die Attributgrafik:
Erstellen Sie die Knoteneingabetabellen
Person
undAccount
. Diese Tabellen werden als Eingabetabellen für die Knotendefinitionen in der Beispiel-Property-Graphik 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 Edge-Definitionen in der Beispiel-Eigenschaftengrafik.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 Attributgrafik anhand des Beispiels
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:
- Fügen Sie Kanten unter den Quell- oder Zielknoten ein.
- 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 Schema für eine Property-Grafik zu aktualisieren:
- Fügen Sie neue Knoten- oder Kantendefinitionen hinzu.
- Vorhandene Knoten- oder Kantendefinitionen aktualisieren
- Entfernen Sie vorhandene Knoten- oder Edge-Definitionen.
In jedem Fall müssen Sie die Property-Graphen mit dem aktualisierten Schema neu erstellen.
Neue Knoten- oder Edge-Definitionen hinzufügen
So fügen Sie einen neuen Knoten und eine neue Edge-Definition hinzu:
Neue Eingabetabellen hinzufügen.
Definieren Sie die zugehörigen Eingabetabellen mit den neuen Definitionen der Graph-Elemente. 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
. Die Im folgenden Beispiel wird das SchemaFinGraph
durch Hinzufügen eines neuen Knotens aktualisiert. DefinitionCompany
und einer neuen Edge-DefinitionPersonInvestCompany
: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 Edge-Definitionen aktualisieren
So aktualisieren Sie vorhandene Knoten- oder Kantendefinitionen:
Aktualisieren Sie das Schema der Eingabetabelle. Im folgenden Beispiel wird die Spalte
mailing_address
die EingabetabellePerson
.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 die neue Eigenschaftmailing_address
Person
-Knotendefinition mitCREATE OR REPLACE PROPERTY GRAPH
. In diesem Beispiel wird die KnotendefinitionPerson
automatisch die geänderte TabellendefinitionPerson
, da die Eingabetabelle Schema geändert.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 aus den Eingabetabellen freigegebenen Eigenschaften anpassen. Weitere Informationen finden Sie unter Labels und Properties anpassen.
Vorhandene Knoten- oder Edge-Definitionen entfernen
Erstellen Sie den Attributdiagramm neu, um vorhandene Knoten- oder Edge-Definitionen zu entfernen ohne diese Knoten- oder Edge-Tabellen.
Im folgenden Beispiel werden die Knotendefinition Person
und der
Kantendefinition PersonOwnAccount
.
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
);
Schema für Property-Diagramm löschen
Mit der DDL-Anweisung DROP PROPERTY GRAPH
können Sie das Graphenschema löschen.
Im folgenden Beispiel wird das Schema der Attributgrafik FinGraph
gelöscht:
DROP PROPERTY GRAPH FinGraph;
Nächste Schritte
- Daten des Spanner-Diagramms einfügen, aktualisieren oder löschen
- Weitere Informationen zu Spanner-Graphabfragen
- Best Practices für die Abstimmung von Spanner Graph-Abfragen