Questo documento mostra come creare, aggiornare o eliminare un grafo di proprietà in Spanner Graph utilizzando lo schema di esempio che hai creato in Configura ed esegui query su Spanner Graph.
Spanner ti consente di aggiornare lo schema senza tempi di inattività. Puoi aggiornare lo schema di un database esistente in uno dei seguenti modi:
Nella console Google Cloud
Invia un comando nella pagina Spanner Studio.
Per accedere alla pagina Spanner Studio, fai clic su Spanner Studio nella pagina Panoramica del database o Panoramica della tabella. Per ulteriori informazioni su come accedere a Spanner Studio, consulta Gestire i dati utilizzando la console Google Cloud.
Lo strumento a riga di comando
gcloud spanner
Invia un comando utilizzando il comando
gcloud spanner databases ddl update
.L'API REST
projects.instances.databases.updateDdl
L'
UpdateDatabaseDdl
API RPC
Crea uno schema del grafo di proprietà
Per ulteriori informazioni sugli schemi dei grafici delle proprietà, consulta la Panoramica dello schema di Spanner Graph.
Per creare uno schema del grafo delle proprietà:
Crea le tabelle di input dei nodi
Person
eAccount
. Queste tabelle vengono utilizzate come tabelle di input per le definizioni dei nodi nel grafo di proprietà di esempio.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);
Crea le tabelle di input dell'edge
PersonOwnAccount
eAccountTransferAccount
. Queste tabelle vengono utilizzate come tabelle di input per le definizioni degli archi nel grafo di proprietà di esempio.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;
Definisci il grafo delle proprietà utilizzando l'istruzione
CREATE PROPERTY GRAPH
di esempio.L'esempio seguente definisce un grafo di proprietà denominato
FinGraph
con i nodiAccount
ePerson
e gli archiPersonOwnAccount
eAccountTransferAccount
.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 );
Questo esempio segue queste best practice:
- Intercala gli archi sotto i nodi di origine o di destinazione.
- Evita bordi sporgenti utilizzando vincoli di riferimento.
Per saperne di più, consulta le best practice per la progettazione degli schemi dei grafici.
Per informazioni sugli errori comuni dello schema di Spanner Graph, consulta Risolvere i problemi di Spanner Graph.
Aggiornare lo schema di un grafo di proprietà
Puoi aggiornare uno schema del grafo delle proprietà nei seguenti modi:
- Aggiungi nuove definizioni di nodi o archi.
- Aggiorna le definizioni di nodi o archi esistenti.
- Rimuovi le definizioni di nodi o archi esistenti.
In ogni caso, devi ricreare il grafo delle proprietà con lo schema aggiornato.
Aggiungere nuove definizioni di nodi o archi
Per aggiungere un nuovo nodo e una nuova definizione di bordo:
Aggiungi nuove tabelle di input.
Definisci le tabelle di input associate alle nuove definizioni degli elementi del grafico. Guarda il seguente esempio, che aggiunge due nuove tabelle di input
Company
ePersonInvestCompany
: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;
Aggiorna il grafico con
CREATE OR REPLACE PROPERTY GRAPH
. L'esempio seguente aggiorna lo schemaFinGraph
aggiungendo una nuova definizione di nodoCompany
e una nuova definizione di bordoPersonInvestCompany
: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 );
Aggiornare le definizioni di nodi o archi esistenti
Per aggiornare le definizioni di nodi o archi esistenti:
Aggiorna lo schema della tabella di input. L'esempio seguente aggiunge la colonna
mailing_address
alla tabella di inputPerson
.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);
Aggiorna lo schema del grafico delle proprietà con
CREATE OR REPLACE PROPERTY GRAPH
. L'esempio seguente aggiunge una nuova proprietàmailing_address
alla definizione del nodoPerson
utilizzando l'istruzioneCREATE OR REPLACE PROPERTY GRAPH
. In questo esempio, la definizione del nodoPerson
acquisisce automaticamente la definizione della tabellaPerson
modificata perché lo schema della tabella di input è cambiato.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 );
Puoi anche utilizzare
PROPERTIES clause()
per personalizzare le proprietà esposte dalle tabelle di input. Per ulteriori informazioni, consulta Personalizzare etichette e proprietà.
Rimuovi le definizioni di nodi o archi esistenti
Per rimuovere le definizioni di nodi o archi esistenti, ricrea il grafo della proprietà senza le tabelle di nodi o archi.
L'esempio seguente rimuove la definizione del nodo Person
e la definizione dell'elemento 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
);
Inserire uno schema del grafico delle proprietà
Puoi utilizzare l'istruzione DDL DROP PROPERTY GRAPH
per eliminare lo schema del grafico.
L'esempio seguente inserisce lo schema del grafico delle proprietà FinGraph
:
DROP PROPERTY GRAPH FinGraph;
Passaggi successivi
- Inserisci, aggiorna o elimina i dati di Spanner Graph.
- Scopri di più sulle query di Spanner Graph.
- Scopri le best practice per l'ottimizzazione delle query di Spanner Graph.