Prácticas recomendadas para el esquema de gráfico
En este documento, se proporcionan prácticas recomendadas para definir tu esquema de gráfico y mejorar el rendimiento de las consultas del gráfico.
Define el alcance de tus definiciones de propiedad
Las propiedades son pares clave-valor que proporcionan información adicional adjunta a los nodos o bordes. 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 los nodos o las aristas puede provocar análisis innecesarios de columnas en las consultas de grafos, lo que degrada el rendimiento.
Para restringir las propiedades que incluyes en una definición de nodo o borde, usa la palabra clave PROPERTIES cuando definas propiedades de elementos en tu declaración CREATE PROPERTY GRAPH.
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 grafos, ya que reduce los análisis innecesarios de las tablas. Sin embargo, BigQuery no aplica restricciones de clave externa o primarias 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 podría generar resultados 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 la Descripción general de las consultas de gráficos.