En este documento se ofrece una guía sobre cómo gestionar esquemas de grafos de Spanner, en la que se detallan los procesos para crear, actualizar y eliminar esquemas mediante instrucciones DDL.
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. Si se producen errores al crear un esquema de gráfico de propiedad, consulta Solucionar problemas de gráficos de Spanner.
Crear un esquema de gráfico de propiedades
Puede crear un esquema de gráfico de propiedades mediante vistas o tablas. Para crear un esquema de gráfico de propiedades mediante tablas, sigue estos pasos:
- Crea las tablas de entrada de nodos.
- Crea las tablas de entrada de aristas.
- Define el gráfico de propiedades.
Para saber cómo usar vistas de SQL para crear un esquema de grafo de propiedades, consulta Crear un grafo de Spanner a partir de una vista de SQL.
Cuando crees un esquema de gráfico de propiedades, ten en cuenta las prácticas recomendadas. En las siguientes secciones se muestra cómo usar tablas para crear un esquema de gráfico de propiedades de ejemplo:
Crear tablas de entrada de nodos
A continuación, se crean dos tablas de entrada de nodos, Person y Account, que sirven como entrada para las definiciones de nodos del 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);
Crear tablas de entrada de borde
El siguiente código crea dos tablas de entrada de aristas, PersonOwnAccount y AccountTransferAccount, como entrada para las definiciones de aristas del 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;
Definir un gráfico de propiedades
En el siguiente código se usan tablas y la instrucción CREATE PROPERTY GRAPH para definir un gráfico de propiedades. Esta instrucción define un grafo de propiedades llamado FinGraph con los nodos Account y Person, y las aristas PersonOwnAccount y AccountTransferAccount:
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
);
Actualizar un esquema de gráfico de propiedades
Una vez que hayas creado un esquema de gráfico de propiedades, podrás actualizarlo con la instrucción CREATE OR
REPLACE PROPERTY GRAPH. Esta instrucción aplica los cambios recreando el esquema del gráfico con la actualización deseada.
Puede hacer los siguientes cambios en un esquema de gráfico de propiedades:
Añadir una definición de nodo o de arista: crea las nuevas tablas de entrada de los nodos y las aristas y, a continuación, usa la instrucción
CREATE OR REPLACE PROPERTY GRAPHpara añadir las nuevas definiciones al gráfico.Actualizar una definición de nodo o de arista: actualiza la tabla de entrada subyacente con las nuevas definiciones de nodo y de arista. A continuación, usa la instrucción
CREATE OR REPLACE PROPERTY GRAPHpara actualizar las definiciones del gráfico.Eliminar una definición de nodo o de arista: usa la instrucción
CREATE OR REPLACE PROPERTY GRAPHy omite las definiciones que quieras eliminar del gráfico.
Añadir definiciones de nodos o aristas
Para añadir un nuevo nodo y una nueva definición de arista, sigue estos pasos:
Añade una tabla de entrada de definición de nodo,
Company, y una tabla de entrada de definición de arista,PersonInvestCompany.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 esquema
FinGraphañadiendo la nueva definición de nodoCompanyy la nueva definición de aristaPersonInvestCompany.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 );
Actualizar definiciones de nodos o aristas
Para actualizar un nodo o una definición de arista, primero debes modificar la tabla de entrada subyacente y, a continuación, usar la instrucción CREATE OR REPLACE PROPERTY GRAPH para aplicar los cambios del esquema al gráfico. Para personalizar las propiedades expuestas de las tablas de entrada, usa PROPERTIES clause.
Para obtener más información, consulta Personalizar etiquetas y propiedades.
En los siguientes pasos se muestra cómo actualizar la tabla subyacente de un esquema y, a continuación, aplicar la actualización al esquema.
Añada la columna
mailing_addressa la tabla de entrada subyacentePerson.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);Aplica los cambios a la tabla
Persondel esquema. Usa la instrucciónCREATE OR REPLACE PROPERTY GRAPH. La definición del nodoPersonrefleja la definición actualizada de la tablaPersonporque ha cambiado 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 );
Eliminar definiciones de nodos o aristas
Para quitar definiciones de nodos o aristas, vuelve a crear el gráfico de propiedades sin esas tablas de nodos o aristas.
En el siguiente ejemplo, se eliminan la definición del nodo Person y la definición del borde PersonOwnAccount
omitiéndolas en la instrucción CREATE OR REPLACE PROPERTY GRAPH.
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
);
Eliminar un esquema de gráfico de propiedades
Para eliminar un esquema de gráfico de las tablas de entrada subyacentes, usa la instrucción de DDL DROP PROPERTY
GRAPH. No puedes eliminar los datos de la tabla subyacente cuando eliminas un esquema.
El siguiente código elimina el esquema del gráfico de propiedades FinGraph:
DROP PROPERTY GRAPH FinGraph;
Siguientes pasos
- Gestionar datos de grafos de Spanner
- Consulta información sobre las consultas de Spanner Graph.
- Consulta las prácticas recomendadas para optimizar las consultas de gráficos de Spanner.