Este documento mostra como criar, atualizar ou remover um gráfico de propriedades no gráfico do Spanner usando o esquema de exemplo que você criou Configure e consulte o gráfico do Spanner.
O Spanner permite fazer atualizações de esquema sem inatividade. É possível atualizar o esquema de um banco de dados de uma das seguintes maneiras:
Console do Google Cloud
Envie um comando na página do Spanner Studio.
Para acessar a página do Spanner Studio, clique em Spanner Studio na visão geral do banco de dados ou na tabela página de visão geral. Para mais informações sobre como acessar o Spanner, Studio, consulte Gerencie seus dados usando o console do Google Cloud.
Ferramenta de linha de comando
gcloud spanner
Envie um comando usando o comando
gcloud spanner databases ddl update
.A API REST
projects.instances.databases.updateDdl
O API RPC
UpdateDatabaseDdl
Criar um esquema de gráfico de propriedades
Para mais informações sobre esquemas de gráficos de propriedades, consulte a Visão geral do esquema do Spanner Graph.
Para criar um esquema de gráfico de propriedade, siga estas etapas:
Crie as tabelas de entrada de nós
Person
eAccount
. Essas tabelas são usadas como tabelas de entrada para as definições de nó no exemplo de gráfico de propriedade.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);
Crie as tabelas de entrada de borda
PersonOwnAccount
eAccountTransferAccount
. Elas são usadas como tabelas de entrada e as definições de borda no gráfico de propriedades de exemplo.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;
Defina o gráfico de propriedades usando o exemplo de instrução
CREATE PROPERTY GRAPH
.O exemplo a seguir define um gráfico de propriedades chamado
FinGraph
com nósAccount
ePerson
, além dePersonOwnAccount
eAccountTransferAccount
bordas.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 );
Este exemplo segue estas práticas recomendadas:
- Intercale as bordas sob os nós de origem ou de destino.
- Evite bordas soltas usando restrições referenciais.
Para mais informações, consulte Práticas recomendadas para o design de esquemas de gráficos (em inglês).
Para informações sobre erros comuns de esquema do gráfico do Spanner, consulte Resolver problemas Gráfico do Spanner (em inglês).
Atualizar um esquema de gráfico de propriedades
É possível atualizar um esquema de gráfico de propriedades das seguintes maneiras:
- Adicione novas definições de nó ou borda.
- Atualizar definições de nó ou borda existentes.
- Remova as definições de nó ou aresta atuais.
Em cada caso, é necessário recriar o gráfico de propriedades com o esquema atualizado.
Adicionar novas definições de nó ou borda
Para adicionar um novo nó e uma nova definição de borda, siga estas etapas:
Adicionar novas tabelas de entrada.
Definir as tabelas de entrada associadas com as novas definições de elementos do gráfico. Confira o exemplo abaixo, adiciona duas novas tabelas de entrada,
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;
Atualize o gráfico com
CREATE OR REPLACE PROPERTY GRAPH
. O o exemplo a seguir atualiza o esquemaFinGraph
adicionando um novo nó. a definiçãoCompany
e uma nova definição de bordaPersonInvestCompany
: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 );
Atualizar definições de nó ou borda
Para atualizar as definições de nó ou aresta, siga estas etapas:
Atualize o esquema da tabela de entrada. O exemplo a seguir adiciona a coluna
mailing_address
a tabela de entradaPerson
.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);
Atualize o esquema do gráfico de propriedades com
CREATE OR REPLACE PROPERTY GRAPH
. O exemplo a seguir adiciona uma nova propriedademailing_address
ao Definição do nóPerson
usando oCREATE OR REPLACE PROPERTY GRAPH
instrução. Neste exemplo, a definição do nóPerson
automaticamente pega a definição de tabelaPerson
alterada porque a tabela de entrada alterado.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 );
Também é possível usar
PROPERTIES clause()
para personalizar as propriedades. das tabelas de entrada. Para mais informações, consulte Personalize rótulos e propriedades.
Remover definições de nó ou aresta
Para remover as definições de nó ou borda atuais, recrie o gráfico de propriedades sem as tabelas de nó ou de borda.
O exemplo a seguir remove a definição do nó Person
e o
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
);
Remover um esquema de gráfico de propriedades
É possível usar a instrução DDL DROP PROPERTY GRAPH
para descartar o esquema do gráfico.
O exemplo a seguir descarta o esquema do gráfico de propriedades FinGraph
:
DROP PROPERTY GRAPH FinGraph;
A seguir
- Inserir, atualizar ou excluir dados do gráfico do Spanner.
- Saiba mais sobre as consultas de gráficos do Spanner.
- Saiba mais sobre as práticas recomendadas para ajustar consultas do Spanner Graph.