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.
Definire l'ambito delle definizioni delle proprietà
Le proprietà sono coppie chiave-valore che forniscono informazioni aggiuntive associate a nodi o archi. Ti consigliamo di includere solo le proprietà necessarie nei nodi
o negli archi ed evitare di utilizzare la sintassi PROPERTIES ALL COLUMNS o la sintassi
predefinita che collega tutte le colonne delle tabelle dei nodi o degli archi all'elenco
delle proprietà. La presenza di molte proprietà in nodi o archi potrebbe causare scansioni
inutili delle colonne nelle query grafiche, il che peggiora le prestazioni.
Per limitare le proprietà che includi in una definizione di nodo o arco, utilizza la parola chiave PROPERTIES quando definisci le proprietà degli elementi nell'istruzione CREATE PROPERTY GRAPH.
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 esterna primaria ed esterna nelle tabelle dei nodi e degli archi per ottimizzare le query del grafo riducendo le scansioni non necessarie delle tabelle. Tuttavia, BigQuery non applica vincoli di chiave primaria o esterna alle 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 errati.
Il seguente esempio definisce i vincoli di chiave primaria e chiave esterna nelle tabelle dei nodi Person e Account e nella 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, vedi Introduzione a BigQuery Graph.
- Per saperne di più sulla definizione di uno schema, consulta la panoramica dello schema.
- Per saperne di più su come scrivere query del grafico, consulta la panoramica delle query del grafico.