Prácticas recomendadas para el esquema de gráficos
En este documento, se proporcionan prácticas recomendadas para definir tu esquema de gráficos y mejorar el rendimiento de las consultas de gráficos.
Define el alcance de las definiciones de tu propiedad
Las propiedades son pares clave-valor que proporcionan información adicional adjunta a los nodos o las aristas. Te recomendamos que solo incluyas las propiedades necesarias en los nodos o las aristas, y que evites usar la sintaxis PROPERTIES ALL COLUMNS o la sintaxis predeterminada que adjunta todas las columnas de las tablas de nodos o aristas a la lista de propiedades. Tener muchas propiedades en nodos o aristas puede causar análisis de columnas innecesarios en las consultas de gráficos, lo que degrada el rendimiento.
Para restringir las propiedades que incluyes en una definición de nodo o arista, usa
la PROPERTIES palabra clave cuando
definas las propiedades del elemento
en tu CREATE PROPERTY GRAPH instrucción.
La siguiente definición de tabla de nodos restringe las propiedades de la tabla de nodos Person a id y name:
NODE TABLES (
graph_db.Person PROPERTIES (id, name)
)
Define restricciones de clave primaria y externa en los nodos y las aristas del grafo
BigQuery puede usar restricciones de clave externa y externa en tus tablas de nodos y aristas para optimizar tus consultas de gráficos mediante la reducción de análisis de tablas innecesarios. Sin embargo, BigQuery no aplica restricciones de clave primaria o externa en las tablas. Si tu aplicación no puede garantizar la integridad referencial o la unicidad en las claves primarias, usar claves primarias o externas para la optimización de consultas puede generar resultados de consultas incorrectos.
En el siguiente ejemplo, se definen restricciones de clave primaria y externa en las tablas de nodos Person y Account, y en la tabla de aristas PersonOwnAccount:
CREATE OR REPLACE TABLE graph_db.Person (
id INT64,
name STRING,
birthday TIMESTAMP,
country STRING,
city STRING,
PRIMARY KEY (id) NOT ENFORCED
);
CREATE OR REPLACE TABLE graph_db.Account (
id INT64,
create_time TIMESTAMP,
is_blocked BOOL,
nick_name STRING,
PRIMARY KEY (id) NOT ENFORCED
);
CREATE OR REPLACE TABLE graph_db.PersonOwnAccount (
id INT64 NOT NULL,
account_id INT64 NOT NULL,
create_time TIMESTAMP,
PRIMARY KEY (id, account_id) NOT ENFORCED,
FOREIGN KEY (id) references graph_db.Person(id) NOT ENFORCED,
FOREIGN KEY (account_id) references graph_db.Account(id) NOT ENFORCED
);
¿Qué sigue?
- Para obtener más información sobre los gráficos, consulta Introducción a BigQuery Graph.
- Para obtener más información sobre cómo definir un esquema, consulta Descripción general del esquema.
- Para obtener más información sobre cómo escribir consultas de gráficos, consulta Descripción general de las consultas de gráficos.
- Para obtener más información sobre cómo compilar gráficos para medidas y modelar relaciones de varios a varios, consulta Trabaja con medidas.