Questo documento mostra come creare, aggiornare o rilasciare un grafico delle proprietà nel grafico Spanner utilizzando lo schema di esempio che hai creato Configurare ed eseguire query sul grafico di Spanner.
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 saperne di più sull'accesso a Spanner Studio, consulta Gestisci i tuoi 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'API RPC
UpdateDatabaseDdl
Crea uno schema per il grafico delle proprietà
Per ulteriori informazioni sugli schemi dei grafici delle proprietà, consulta la Panoramica dello schema di Spanner Graph.
Per creare uno schema di grafico 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 grafico delle 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 dei bordi nel grafico delle 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 grafico delle proprietà utilizzando l'esempio
CREATE PROPERTY GRAPH
l'Informativa.L'esempio seguente definisce un grafo di proprietà denominato
FinGraph
con nodiAccount
ePerson
e 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 i bordi 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 Grafico Spanner.
Aggiornare lo schema di un grafo di proprietà
Puoi aggiornare lo schema di un grafico delle proprietà nei seguenti modi:
- Aggiungi nuove definizioni di nodi o archi.
- Aggiorna le definizioni di nodi o periferici esistenti.
- Rimuovi le definizioni di nodi o archi esistenti.
In ogni caso, devi ricreare il grafico 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
. La L'esempio seguente aggiorna lo schemaFinGraph
aggiungendo un nuovo nodo definizioneCompany
e una nuova definizione perimetralePersonInvestCompany
: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 );
Aggiorna definizioni di nodi o perimetrali esistenti
Per aggiornare le definizioni di nodi o perimetrali esistenti, segui questi passaggi:
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
. Nell'esempio seguente viene aggiunta una nuova proprietàmailing_address
alla Definizione del nodoPerson
medianteCREATE OR REPLACE PROPERTY GRAPH
l'Informativa. 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, vedi Personalizzare etichette e proprietà.
Rimuovi definizioni di nodi o periferici esistenti
Per rimuovere definizioni di nodi o bordi esistenti, ricrea il grafico delle proprietà senza le tabelle su nodi o perimetrali.
L'esempio seguente rimuove la definizione del nodo Person
e la
Definizione del bordo 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 rilasciare lo schema del grafico.
L'esempio seguente elimina lo schema del grafico della proprietà FinGraph
:
DROP PROPERTY GRAPH FinGraph;
Passaggi successivi
- Inserisci, aggiorna o elimina i dati del grafico di Spanner.
- Scopri di più sulle query del grafico Spanner.
- Scopri le best practice per l'ottimizzazione delle query di Spanner Graph.