Best practice per lo schema del grafico
Questo documento fornisce le best practice per definire lo schema del grafico al fine di migliorare il rendimento delle query del grafico.
Definisci l'ambito delle definizioni delle proprietà
Le proprietà sono coppie chiave-valore che forniscono informazioni aggiuntive associate a nodi o bordi. Ti consigliamo di includere solo le proprietà necessarie nei nodi o nei bordi ed evitare di utilizzare la sintassi PROPERTIES ALL COLUMNS o la sintassi predefinita che associa tutte le colonne delle tabelle dei nodi o dei bordi all'elenco delle proprietà. La presenza di molte proprietà nei nodi o nei bordi potrebbe causare scansioni di colonne non necessarie nelle query del grafico, il che peggiora il rendimento.
Per limitare le proprietà da includere nella definizione di un nodo o di un bordo, utilizza
la PROPERTIES parola chiave quando
definisci le proprietà degli elementi
nell'istruzione CREATE PROPERTY GRAPH statement.
La seguente definizione della tabella dei nodi limita le proprietà della tabella dei nodi Person a id e name:
NODE TABLES (
graph_db.Person PROPERTIES (id, name)
)
Definisci i vincoli di chiave primaria ed esterna su nodi e archi del grafo
BigQuery può utilizzare vincoli di chiave primaria e chiave esterna sulle tabelle dei nodi e degli archi per ottimizzare le query del grafo riducendo le scansioni di tabelle non necessarie. Tuttavia, BigQuery non applica i vincoli di chiave primaria o esterna sulle tabelle. Se la tua applicazione non può garantire l'integrità referenziale o l'unicità delle chiavi primarie, l'utilizzo di chiavi primarie o esterne per l'ottimizzazione delle query potrebbe portare a risultati di query errati.
L'esempio seguente definisce i vincoli di chiave primaria e chiave esterna sulle tabelle dei nodi Person e Account e sulla tabella degli archi 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
);
Passaggi successivi
- Per ulteriori informazioni sui grafici, consulta Introduzione a BigQuery Graph.
- Per ulteriori informazioni sulla definizione di uno schema, consulta Panoramica dello schema.
- Per ulteriori informazioni sulla scrittura di query del grafico, consulta Panoramica delle query del grafico.
- Per ulteriori informazioni sulla creazione di grafici per le misure e la modellazione di relazioni molti-a-molti, consulta Utilizzare le misure.