Práticas recomendadas para o esquema de gráficos
Este documento apresenta as práticas recomendadas para definir o esquema de gráficos e melhorar a performance das consultas.
Definir o escopo das definições de propriedade
As propriedades são pares de chave-valor que fornecem informações adicionais anexadas a nós ou arestas. Recomendamos incluir apenas as propriedades necessárias em nós ou arestas e evitar o uso da sintaxe PROPERTIES ALL COLUMNS ou da sintaxe padrão que anexa todas as colunas das tabelas de nós ou arestas à lista de propriedades. Ter muitas propriedades em nós ou arestas pode causar verificações de coluna desnecessárias em consultas de gráficos, o que prejudica a performance.
Para restringir as propriedades incluídas em uma definição de nó ou aresta, use
a palavra-chave PROPERTIES ao
definir as propriedades do elemento
na instrução CREATE PROPERTY GRAPH.
A definição de tabela de nós a seguir restringe as propriedades da tabela de nós Person a id e name:
NODE TABLES (
graph_db.Person PROPERTIES (id, name)
)
Definir restrições de chave primária e externa em nós e arestas de grafos
O BigQuery pode usar restrições de chave primária e chave estrangeira nas tabelas de nós e arestas para otimizar as consultas de grafos , reduzindo as verificações de tabelas desnecessárias. No entanto, o BigQuery não aplica restrições de chave primária ou externa em tabelas. Se o aplicativo não puder garantir a integridade referencial ou a exclusividade nas chaves primárias, o uso de chaves primárias ou externas para otimização de consultas poderá levar a resultados incorretos.
O exemplo a seguir define restrições de chave primária e externa nas tabelas de nós Person e Account, e na tabela de arestas 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
);
A seguir
- Para mais informações sobre gráficos, consulte Introdução ao BigQuery Graph.
- Para mais informações sobre como definir um esquema, consulte Visão geral do esquema.
- Para mais informações sobre como escrever consultas de gráficos, consulte Visão geral das consultas de gráficos.