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 Spanner Studio.
Para acceder a la página Spanner Studio, haz clic en Spanner Studio en la página Descripción general de la base de datos o en la página Descripción general de la tabla. Para obtener más información sobre cómo acceder a Spanner Studio, consulta Cómo administrar tus datos con la consola de Google Cloud .
La herramienta de línea de comandos
gcloud spanner
Envía un comando con el comando
gcloud spanner databases ddl update
.La API de REST de
projects.instances.databases.updateDdl
La API de RPC de
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 nodos
Person
yAccount
. Estas tablas se usan como tablas de entrada para las definiciones de nodos en el ejemplo de grafo de propiedades.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 ejemplo de grafo de propiedades.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 la sentencia
CREATE PROPERTY GRAPH
de ejemplo.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 aristas debajo de los nodos de origen o destino.
- Evita los bordes colgantes con restricciones de referencia.
Para obtener más información, consulta Prácticas recomendadas para el diseño de esquemas de gráficos.
Para obtener información sobre los errores comunes del esquema de Spanner Graph, consulta Soluciona 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 aristas 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 nuevas definiciones de nodos o aristas
Para agregar un nodo nuevo y una nueva definición de borde, sigue estos pasos:
Agrega tablas de entrada nuevas.
Define las tablas de entrada asociadas con las nuevas definiciones de 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
. En el siguiente ejemplo, se actualiza el esquemaFinGraph
agregando una nueva definición de nodoCompany
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 nodos o aristas 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 propiedad nuevamailing_address
a la definición del nodoPerson
con la sentenciaCREATE OR REPLACE PROPERTY GRAPH
. En este ejemplo, la definición del nodoPerson
recupera automáticamente la definición alterada de la tablaPerson
porque cambió el esquema de la tabla de entrada.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 expuestas desde las tablas de entrada. Para obtener más información, consulta Cómo personalizar etiquetas y propiedades.
Quita las definiciones de nodos o aristas existentes
Para quitar las definiciones de nodos o aristas existentes, vuelve a crear el grafo de propiedades sin esas tablas de nodos o aristas.
En el siguiente ejemplo, se quita la definición del nodo Person
y la definición del 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
);
Cómo agregar 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 grafo de propiedades FinGraph
:
DROP PROPERTY GRAPH FinGraph;
¿Qué sigue?
- Inserta, actualiza o borra datos de Spanner Graph.
- Obtén información sobre las consultas de Spanner Graph.
- Obtén información sobre las prácticas recomendadas para ajustar las consultas de Spanner Graph.