En este documento, se proporciona una guía para administrar esquemas de Spanner Graph, en la que se detallan los procesos para crear, actualizar y quitar esquemas con instrucciones DDL. También se pueden crear esquemas de Spanner Graph en Spanner Studio sin escribir instrucciones DDL manuales.
Para obtener más información sobre los esquemas de gráficos de propiedades, consulta la descripción general del esquema de Spanner Graph. Si encuentras errores cuando creas un esquema de gráfico de propiedades, consulta Soluciona problemas de Spanner Graph.
Crea un esquema de gráfico de propiedades
Puedes crear un esquema de gráfico de propiedades con vistas o tablas. Para crear un esquema de gráfico de propiedades con tablas, haz lo siguiente:
- Crea las tablas de entrada de nodos.
- Crea las tablas de entrada de aristas.
- Define el gráfico de propiedades.
Para obtener información sobre cómo usar vistas de SQL para crear un esquema de gráfico de propiedades, consulta Crea un Spanner Graph a partir de una vista de SQL.
Cuando crees un esquema de gráfico de propiedades, asegúrate de tener 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:
Crea 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 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 tablas de entrada de aristas
El siguiente código crea dos tablas de entrada de aristas, PersonOwnAccount y AccountTransferAccount, como 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 un gráfico de propiedades
El siguiente código usa tablas y la instrucción CREATE PROPERTY GRAPH para definir un gráfico de propiedades. Esta instrucción define un gráfico de propiedades llamado
FinGraph con Account y Person nodos, y PersonOwnAccount y
AccountTransferAccount aristas:
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
);
Actualiza un esquema de gráfico de propiedades
Después de crear un esquema de gráfico de propiedades, puedes actualizarlo con la instrucción CREATE OR
REPLACE PROPERTY GRAPH. Esta instrucción aplica los cambios mediante la recreación del esquema del gráfico con la actualización deseada.
Puedes realizar los siguientes cambios en un esquema de gráfico de propiedades:
Agrega una definición de nodo o arista: Crea las nuevas tablas de entrada para los nodos y las aristas y, luego, usa la instrucción
CREATE OR REPLACE PROPERTY GRAPHpara agregar las nuevas definiciones al gráfico.Actualiza una definición de nodo o arista: Actualiza la tabla de entrada subyacente con nuevas definiciones de nodos y aristas. Luego, usa la instrucción
CREATE OR REPLACE PROPERTY GRAPHpara actualizar las definiciones en el gráfico.Quita una definición de nodo o arista: Usa la instrucción
CREATE OR REPLACE PROPERTY GRAPHy omite las definiciones que deseas quitar del gráfico.
Agrega nuevas definiciones de nodos o aristas
Para agregar un nodo nuevo y una nueva definición de arista, sigue estos pasos:
Agrega una nueva tabla de entrada de definición de nodos,
Company, y una nueva tabla de entrada de definición de aristas,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
FinGraphagregando 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 );
Actualiza las definiciones de nodos o aristas
Para actualizar una definición de nodo o arista existente, primero debes modificar la tabla de entrada subyacente y, luego, usar la instrucción CREATE OR REPLACE PROPERTY GRAPH para aplicar los cambios de esquema al gráfico. Para personalizar las
propiedades expuestas de las tablas de entrada, usa la
PROPERTIES clause.
Para obtener más información, consulta
Personaliza etiquetas y propiedades.
En los siguientes pasos, se muestra cómo actualizar la tabla subyacente de un esquema y, luego, aplicar la actualización al esquema.
Agrega la columna
mailing_addressa la tabla de entrada subyacentePerson.ALTER TABLE Person ADD COLUMN mailing_address STRING(MAX);Aplica los cambios a la tabla
Personal esquema. Usa la instrucciónCREATE OR REPLACE PROPERTY GRAPH. La definición de nodoPersonrefleja la definición de tablaPersonactualizada 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 );
Quita las definiciones de nodos o aristas
Para quitar las definiciones de nodos o aristas existentes, vuelve a crear el gráfico de propiedades sin esas tablas de nodos o aristas.
A continuación, se quitan la definición de nodo Person y la definición de arista 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
);
Quita un esquema de gráfico de propiedades
Para quitar un esquema de gráfico de las tablas de entrada subyacentes, usa la instrucción DDL DROP PROPERTY
GRAPH. No puedes borrar los datos de la tabla subyacente cuando quitas un esquema.
El siguiente código quita el esquema de gráfico de propiedades FinGraph:
DROP PROPERTY GRAPH FinGraph;
Crea un gráfico de propiedades en un esquema con nombre
Spanner Graph admite la creación de gráficos de propiedades dentro de un esquema con nombre.
En el siguiente ejemplo, se crean dos esquemas con nombre sch1 y sch2, una tabla de nodos y aristas en el esquema sch1, y un gráfico de nodos y propiedades en el esquema sch2:
CREATE SCHEMA sch1;
CREATE SCHEMA sch2;
CREATE TABLE sch1.Person (
id INT64 NOT NULL,
name STRING(MAX),
birthday TIMESTAMP,
country STRING(MAX),
city STRING(MAX),
) PRIMARY KEY (id);
CREATE TABLE sch2.Account (
id INT64 NOT NULL,
create_time TIMESTAMP,
is_blocked BOOL,
nick_name STRING(MAX),
) PRIMARY KEY (id);
CREATE TABLE sch1.PersonOwnAccount (
id INT64 NOT NULL,
account_id INT64 NOT NULL,
create_time TIMESTAMP,
FOREIGN KEY (account_id) REFERENCES sch2.Account (id)
) PRIMARY KEY (id, account_id),
INTERLEAVE IN PARENT sch1.Person ON DELETE CASCADE;
CREATE OR REPLACE PROPERTY GRAPH sch2.FinGraph
NODE TABLES (
sch1.Person,
sch2.Account
)
EDGE TABLES (
sch1.PersonOwnAccount
SOURCE KEY (id) REFERENCES Person (id)
DESTINATION KEY (account_id) REFERENCES Account (id)
LABEL Owns
);
¿Qué sigue?
- Administra 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.