En este documento, se muestra cómo crear, actualizar o descartar un gráfico de propiedades en Spanner Graph con el esquema de ejemplo que creaste en Configura y consulta Spanner Graph.
Spanner te permite realizar actualizaciones del esquema sin tiempo de inactividad. Puedes actualizar el esquema de una base de datos existente de cualquiera de las siguientes maneras:
La consola de Google Cloud
Envía un comando en la página de Spanner Studio.
Para acceder a la página Spanner Studio, haz clic en Spanner Studio en la página de descripción general de la base de datos o de la tabla. Para obtener más información sobre cómo acceder a Spanner Studio, consulta Administra tus datos con la consola de Google Cloud.
La herramienta de línea de comandos
gcloud spanner
Envía un comando mediante el comando
gcloud spanner databases ddl update
.La API de REST de
projects.instances.databases.updateDdl
El API de RPC
UpdateDatabaseDdl
Crea un esquema de gráfico de propiedades
Para obtener más información sobre los esquemas de gráficos de propiedades, consulta la descripción general del esquema de gráficos de Spanner.
Para crear un esquema de gráfico de propiedades, sigue estos pasos:
Crea las tablas de entrada de nodo
Person
yAccount
. Estas tablas se usan como tablas de entrada para las definiciones de nodos en el gráfico de propiedades de ejemplo.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 las tablas de entrada de borde
PersonOwnAccount
yAccountTransferAccount
. Estas tablas se usan como tablas de entrada para las definiciones de aristas en el gráfico de propiedades de ejemplo.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;
Define el gráfico de propiedades con el ejemplo
CREATE PROPERTY GRAPH
. declaración.En el siguiente ejemplo, se define un gráfico de propiedades llamado
FinGraph
con nodosAccount
yPerson
, y aristasPersonOwnAccount
yAccountTransferAccount
.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 );
En este ejemplo, se siguen estas prácticas recomendadas:
- Intercala los bordes en los nodos de origen o de destino.
- Evita los bordes colgantes con restricciones referenciales.
Para obtener más información, consulta Prácticas recomendadas para el diseño de esquemas de grafos.
Para obtener información sobre los errores comunes del esquema de Spanner Graph, consulta Cómo solucionar problemas de Spanner Graph.
Actualiza un esquema de gráfico de propiedades
Puedes actualizar un esquema de gráfico de propiedades de las siguientes maneras:
- Agrega definiciones de nodos o aristas nuevas.
- Actualiza las definiciones de nodos o perímetros existentes.
- Quita las definiciones de nodos o aristas existentes.
En cada caso, debes volver a crear el gráfico de propiedades con el esquema actualizado.
Agrega definiciones nuevas de nodos o perímetros
Para agregar un nodo y una definición de borde nuevos, sigue estos pasos:
Agregar nuevas tablas de entrada
Definir las tablas de entrada asociadas con las definiciones nuevas de los elementos del gráfico. Consulta el siguiente ejemplo, que agrega dos tablas de entrada nuevas,
Company
yPersonInvestCompany
: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;
Actualiza el gráfico con
CREATE OR REPLACE PROPERTY GRAPH
. El En el siguiente ejemplo, se actualiza el esquemaFinGraph
cuando se agrega un nodo nuevo. definiciónCompany
y una nueva definición de bordePersonInvestCompany
: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 );
Actualiza las definiciones de nodos o aristas existentes
Para actualizar las definiciones de nodo o perímetro existentes, sigue estos pasos:
Actualiza el esquema de la tabla de entrada. En el siguiente ejemplo, se agrega la columna
mailing_address
a la tabla de entradaPerson
.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);
Actualiza el esquema del gráfico de propiedades con
CREATE OR REPLACE PROPERTY GRAPH
. En el siguiente ejemplo, se agrega una nueva propiedadmailing_address
al Definición de nodoPerson
conCREATE OR REPLACE PROPERTY GRAPH
declaración. En este ejemplo, la definición del nodoPerson
se realiza automáticamente toma la definición de tablaPerson
alterada porque la tabla de entrada se modificó el esquema.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 );
También puedes usar
PROPERTIES clause()
para personalizar las propiedades. expuestos de las tablas de entrada. Para obtener más información, consulta Cómo personalizar etiquetas y propiedades.
Quita las definiciones de perímetro o nodo existentes
Vuelve a crear el gráfico de propiedades para quitar definiciones de nodo o perímetro existentes sin esas tablas de nodos o perímetros.
En el siguiente ejemplo, se quita la definición de nodo Person
y el
Definición de borde 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
);
Descarta un esquema de gráfico de propiedades
Puedes usar la declaración DDL DROP PROPERTY GRAPH
para descartar el esquema de tu gráfico.
En el siguiente ejemplo, se descarta el esquema del gráfico de propiedades FinGraph
:
DROP PROPERTY GRAPH FinGraph;
¿Qué sigue?
- Insertar, actualizar o borrar datos del gráfico de Spanner.
- Obtén más información sobre las consultas de grafo de Spanner.
- Conoce las prácticas recomendadas para ajustar las consultas del grafo de Spanner.