Membuat, memperbarui, atau menghapus skema Spanner Graph

Dokumen ini menunjukkan cara membuat, memperbarui, atau menghapus grafik properti di Spanner Graph menggunakan contoh skema yang Anda buat di Menyiapkan dan membuat kueri Spanner Graph.

Spanner memungkinkan Anda membuat pembaruan skema tanpa periode nonaktif. Anda dapat memperbarui skema database yang ada dengan salah satu cara berikut:

Membuat skema grafik properti

Untuk mengetahui informasi selengkapnya tentang skema grafik properti, lihat Ringkasan skema Grafik Spanner.

Untuk membuat skema grafik properti, ikuti langkah-langkah berikut:

  1. Buat tabel input node Person dan Account. Tabel ini digunakan sebagai tabel input untuk definisi node dalam contoh grafik properti.

    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);
    
  2. Buat tabel input tepi PersonOwnAccount dan AccountTransferAccount. Tabel ini digunakan sebagai tabel input untuk definisi tepi 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;
    
  3. Tentukan grafik properti menggunakan contoh pernyataan CREATE PROPERTY GRAPH.

    Contoh berikut menentukan grafik properti bernama FinGraph dengan node Account dan Person, serta tepi 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
      );
    

Contoh ini mengikuti praktik terbaik berikut:

Untuk informasi selengkapnya, lihat Praktik terbaik untuk desain skema grafik.

Untuk mengetahui informasi tentang error skema Spanner Graph yang umum, lihat Memecahkan masalah Spanner Graph.

Memperbarui skema grafik properti

Anda dapat memperbarui skema grafik properti dengan cara berikut:

  1. Tambahkan definisi node atau edge baru.
  2. Memperbarui definisi node atau edge yang ada.
  3. Menghapus definisi node atau edge yang ada.

Dalam setiap kasus, Anda harus membuat ulang grafik properti dengan skema yang diperbarui.

Menambahkan definisi node atau edge baru

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

  1. Tambahkan tabel input baru.

    Tentukan tabel input yang terkait dengan definisi elemen grafik baru. Lihat contoh berikut, yang menambahkan dua tabel input baru Company dan 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 grafik dengan CREATE OR REPLACE PROPERTY GRAPH. Contoh berikut memperbarui skema FinGraph dengan menambahkan definisi node baru Company dan definisi tepi baru PersonInvestCompany:

    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 edge yang ada

Untuk memperbarui definisi node atau edge yang ada, ikuti langkah-langkah berikut:

  1. Perbarui skema tabel input. Contoh berikut menambahkan kolom mailing_address ke tabel input Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. Perbarui skema grafik properti dengan CREATE OR REPLACE PROPERTY GRAPH. Contoh berikut menambahkan properti baru mailing_address ke definisi node Person menggunakan pernyataan CREATE OR REPLACE PROPERTY GRAPH. Dalam contoh ini, definisi node Person secara otomatis mengambil definisi tabel Person yang diubah 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
      );
    

    Anda juga dapat menggunakan PROPERTIES clause() untuk menyesuaikan properti yang ditampilkan dari tabel input. Untuk mengetahui informasi selengkapnya, lihat Menyesuaikan label dan properti.

Menghapus definisi node atau edge yang ada

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

Contoh berikut menghapus definisi node Person dan definisi tepi PersonOwnAccount.

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
  );

Menempatkan skema grafik properti

Anda dapat menggunakan pernyataan DDL DROP PROPERTY GRAPH untuk menghapus skema grafik.

Contoh berikut menghapus skema grafik properti FinGraph:

DROP PROPERTY GRAPH FinGraph;

Langkah selanjutnya