Mengelola skema Spanner Graph

Dokumen ini memberikan panduan komprehensif tentang cara mengelola skema properti Spanner Graph, yang menjelaskan proses untuk membuat, memperbarui, dan menghapus skema menggunakan pernyataan DDL.

Untuk mengetahui informasi selengkapnya tentang skema grafik properti, lihat Ringkasan skema Spanner Graph. Jika Anda mengalami error saat membuat skema grafik properti, lihat Memecahkan masalah Spanner Graph.

Membuat skema grafik properti

Untuk membuat skema grafik properti, lakukan hal berikut:

  1. Buat tabel input node.
  2. Buat tabel input tepi.
  3. Tentukan grafik properti.

Saat membuat skema grafik properti, pastikan untuk mempertimbangkan praktik terbaik.

Bagian berikut menunjukkan cara membuat contoh skema grafik properti:

Membuat tabel input node

Berikut ini membuat dua tabel input node, Person dan Account, yang berfungsi sebagai input untuk definisi node dalam grafik properti contoh:

  CREATE TABLE Person (
    id               INT64 NOT NULL,
    name             STRING(MAX),
    birthday         TIMESTAMP,
    country          STRING(MAX),
    city             STRING(MAX),
  ) PRIMARY KEY (id);

  CREATE TABLE Account (
    id               INT64 NOT NULL,
    create_time      TIMESTAMP,
    is_blocked       BOOL,
    nick_name        STRING(MAX),
  ) PRIMARY KEY (id);

Membuat tabel input tepi

Kode berikut membuat dua tabel input edge, PersonOwnAccount dan AccountTransferAccount, sebagai input untuk definisi edge dalam contoh grafik properti:

  CREATE TABLE PersonOwnAccount (
    id               INT64 NOT NULL,
    account_id       INT64 NOT NULL,
    create_time      TIMESTAMP,
    FOREIGN KEY (account_id) REFERENCES Account (id)
  ) PRIMARY KEY (id, account_id),
    INTERLEAVE IN PARENT Person ON DELETE CASCADE;

  CREATE TABLE AccountTransferAccount (
    id               INT64 NOT NULL,
    to_id            INT64 NOT NULL,
    amount           FLOAT64,
    create_time      TIMESTAMP NOT NULL,
    order_number     STRING(MAX),
    FOREIGN KEY (to_id) REFERENCES Account (id)
  ) PRIMARY KEY (id, to_id, create_time),
    INTERLEAVE IN PARENT Account ON DELETE CASCADE;

Menentukan grafik properti

Kode berikut menentukan grafik properti menggunakan pernyataan CREATE PROPERTY GRAPH. Pernyataan ini menentukan grafik properti bernama FinGraph dengan node Account dan Person, serta edge PersonOwnAccount dan AccountTransferAccount:

  CREATE PROPERTY GRAPH FinGraph
    NODE TABLES (
      Account,
      Person
    )
    EDGE TABLES (
      PersonOwnAccount
        SOURCE KEY (id) REFERENCES Person (id)
        DESTINATION KEY (account_id) REFERENCES Account (id)
        LABEL Owns,
      AccountTransferAccount
        SOURCE KEY (id) REFERENCES Account (id)
        DESTINATION KEY (to_id) REFERENCES Account (id)
        LABEL Transfers
    );

Memperbarui skema grafik properti

Setelah membuat skema grafik properti, Anda dapat memperbaruinya menggunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH. Pernyataan ini menerapkan perubahan dengan membuat ulang skema grafik dengan pembaruan yang diinginkan.

Anda dapat melakukan perubahan berikut pada skema grafik properti:

  • Menambahkan definisi node atau edge: Buat tabel input baru untuk node dan edge, lalu gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH untuk menambahkan definisi baru ke grafik.

  • Memperbarui definisi node atau tepi: Perbarui tabel input pokok dengan definisi node dan tepi baru. Kemudian, gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH untuk memperbarui definisi dalam grafik.

  • Menghapus definisi node atau tepi: Gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH dan hilangkan definisi yang ingin Anda hapus dari grafik.

Menambahkan definisi node atau tepi baru

Untuk menambahkan definisi node dan edge baru, ikuti langkah-langkah berikut:

  1. Tambahkan tabel input definisi node baru, Company, dan tabel input definisi edge baru, PersonInvestCompany.

    CREATE TABLE Company (
      id INT64 NOT NULL,
      name STRING(MAX)
    ) PRIMARY KEY (id);
    
    CREATE TABLE PersonInvestCompany (
      id INT64 NOT NULL,
      company_id INT64 NOT NULL,
      FOREIGN KEY (company_id) REFERENCES Company (id)
    ) PRIMARY KEY (id, company_id),
      INTERLEAVE IN PARENT Person ON DELETE CASCADE;
    
  2. Perbarui skema FinGraph dengan menambahkan definisi node Company baru dan definisi edge PersonInvestCompany baru.

    CREATE OR REPLACE PROPERTY GRAPH FinGraph
      NODE TABLES (
        Person,
        Account,
        Company
      )
      EDGE TABLES (
        AccountTransferAccount
          SOURCE KEY (id) REFERENCES Account
          DESTINATION KEY (to_id) REFERENCES Account
          LABEL Transfers,
        PersonOwnAccount
          SOURCE KEY (id) REFERENCES Person
          DESTINATION KEY (account_id) REFERENCES Account
          LABEL Owns,
        PersonInvestCompany
          SOURCE KEY (id) REFERENCES Person
          DESTINATION KEY (company_id) REFERENCES Company
          LABEL Invests
      );
    

Memperbarui definisi node atau tepi

Untuk memperbarui definisi node atau edge yang ada, Anda harus mengubah tabel input yang mendasarinya terlebih dahulu, lalu menggunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH untuk menerapkan perubahan skema ke grafik. Untuk menyesuaikan properti yang ditampilkan dari tabel input, gunakan PROPERTIES clause. Untuk mengetahui informasi selengkapnya, lihat Menyesuaikan label dan properti.

Langkah-langkah berikut menunjukkan cara memperbarui tabel pokok skema, lalu menerapkan pembaruan ke skema.

  1. Tambahkan kolom mailing_address ke tabel input pokok Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Terapkan perubahan pada tabel Person ke skema. Gunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH. Definisi node Person mencerminkan definisi tabel Person yang diperbarui karena skema tabel input berubah.

    CREATE OR REPLACE PROPERTY GRAPH FinGraph
      NODE TABLES (
        Person,
        Account
      )
      EDGE TABLES (
        AccountTransferAccount
          SOURCE KEY (id) REFERENCES Account
          DESTINATION KEY (to_id) REFERENCES Account
          LABEL Transfers,
        PersonOwnAccount
          SOURCE KEY (id) REFERENCES Person
          DESTINATION KEY (account_id) REFERENCES Account
          LABEL Owns
      );
    

Menghapus definisi node atau tepi

Untuk menghapus definisi node atau edge yang ada, buat ulang grafik properti tanpa tabel node atau edge tersebut.

Berikut menghapus definisi node Person dan definisi tepi PersonOwnAccount dengan menghilangkannya dalam pernyataan CREATE OR REPLACE PROPERTY GRAPH.

  CREATE OR REPLACE PROPERTY GRAPH FinGraph
    NODE TABLES (
      Account
    )
    EDGE TABLES (
      AccountTransferAccount
        SOURCE KEY (id) REFERENCES Account
        DESTINATION KEY (to_id) REFERENCES Account
        LABEL Transfers
    );

Menghapus skema grafik properti

Untuk menghapus skema grafik dari tabel input pokok, gunakan pernyataan DDL DROP PROPERTY GRAPH. Anda tidak dapat menghapus data dari tabel pokok saat Anda menghapus skema.

Kode berikut menghapus skema grafik properti FinGraph:

DROP PROPERTY GRAPH FinGraph;

Langkah berikutnya