Práticas recomendadas para esquemas de gráficos
Este documento apresenta as práticas recomendadas para definir seu esquema de gráfico e melhorar a performance das consultas de gráfico.
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 usar a sintaxe PROPERTIES ALL COLUMNS ou a 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 desnecessárias de colunas em consultas de gráficos, o que prejudica o desempenho.
Para restringir as propriedades incluídas em uma definição de nó ou aresta, use
a palavra-chave PROPERTIES ao
definir propriedades de elementos
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 do grafo
O BigQuery pode usar restrições de chave primária e chave externa nas tabelas de nós e arestas para otimizar as consultas de grafos, reduzindo as verificações desnecessárias de tabelas. 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á gerar 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.
- Para mais informações sobre como criar gráficos para medidas e modelar relacionamentos de muitos para muitos, consulte Trabalhar com medidas.