Praktik terbaik skema grafik
Dokumen ini memberikan praktik terbaik untuk menentukan skema grafik guna meningkatkan performa kueri grafik Anda.
Mencakup definisi properti Anda
Properti adalah pasangan nilai kunci yang memberikan informasi tambahan yang dilampirkan ke
node atau tepi. Sebaiknya sertakan hanya properti yang diperlukan dalam node
atau tepi, dan hindari penggunaan sintaksis PROPERTIES ALL COLUMNS atau sintaksis
default yang melampirkan semua kolom dari tabel node atau tepi ke daftar
properti. Memiliki banyak properti di node atau tepi dapat menyebabkan pemindaian
kolom yang tidak perlu dalam kueri grafik, yang menurunkan performa.
Untuk membatasi properti yang Anda sertakan dalam definisi node atau edge, gunakan
kata kunci PROPERTIES saat Anda
menentukan properti elemen
dalam pernyataan CREATE PROPERTY GRAPH.
Definisi tabel node berikut membatasi properti untuk tabel node Person ke id dan name:
NODE TABLES (
graph_db.Person PROPERTIES (id, name)
)
Tentukan batasan kunci utama dan kunci asing pada node dan tepi grafik
BigQuery dapat menggunakan batasan kunci primer dan asing pada tabel node dan edge untuk mengoptimalkan kueri grafik dengan mengurangi pemindaian tabel yang tidak perlu. Namun, BigQuery tidak menerapkan batasan kunci utama atau kunci asing pada tabel. Jika aplikasi Anda tidak dapat menjamin integritas referensial atau keunikan pada kunci utama, penggunaan kunci utama atau kunci asing untuk pengoptimalan kueri dapat menyebabkan hasil kueri yang salah.
Contoh berikut menentukan batasan kunci utama dan kunci asing pada tabel node Person dan Account, serta tabel edge 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
);
Langkah berikutnya
- Untuk mengetahui informasi selengkapnya tentang grafik, lihat Pengantar BigQuery Graph.
- Untuk mengetahui informasi selengkapnya tentang cara menentukan skema, lihat Ringkasan skema.
- Untuk mengetahui informasi selengkapnya tentang penulisan kueri grafik, lihat Ringkasan kueri grafik.