יצירה וניהול של סכימת Spanner Graph באמצעות DDL

במסמך הזה מוסבר איך לנהל סכימות של Spanner Graph. מפורטים בו התהליכים של יצירה, עדכון והסרה של סכימות באמצעות הצהרות DDL. אפשר גם ליצור סכימות של Spanner Graph ב-Spanner Studio בלי לכתוב הצהרות DDL ידניות.

מידע נוסף על סכימות של תרשימי מאפיינים זמין במאמר סקירה כללית על סכימות של Spanner Graph. אם נתקלתם בשגיאות כשניסיתם ליצור סכימה של גרף מאפיינים, כדאי לעיין במאמר פתרון בעיות ב-Spanner Graph.

יצירת סכימה של גרף נכסים

אפשר ליצור סכימת גרף של נכס באמצעות תצוגות או טבלאות. כדי ליצור סכימת גרף מאפיינים באמצעות טבלאות:

  1. יוצרים את טבלאות הקלט של הצומת.
  2. יוצרים את טבלאות הקלט של ה-Edge.
  3. הגדרת גרף הנכסים

במאמר יצירת Spanner Graph מתצוגת SQL מוסבר איך משתמשים בתצוגות SQL כדי ליצור סכימת גרף של נכס.

כשיוצרים סכימה של גרף מאפיינים, חשוב לפעול לפי השיטות המומלצות. בסעיפים הבאים מוסבר איך להשתמש בטבלאות כדי ליצור סכימה לדוגמה של גרף מאפיינים:

יצירת טבלאות קלט של צמתים

הקוד הבא יוצר שתי טבלאות קלט של צמתים, Person ו-Account, שמשמשות כקלט להגדרות הצמתים בגרף המאפיינים לדוגמה:

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

יצירת טבלאות קלט ב-Edge

הקוד הבא יוצר שתי טבלאות קלט של קשתות, PersonOwnAccount ו-AccountTransferAccount, כקלט להגדרות הקשתות בגרף המאפיינים לדוגמה:

  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;

הגדרת גרף נכסים

הקוד הבא משתמש בטבלאות ובמשפט CREATE PROPERTY GRAPH כדי להגדיר גרף מאפיינים. ההצהרה הזו מגדירה גרף מאפיינים בשם FinGraph עם צמתים Account ו-Person, וקשתות PersonOwnAccount ו-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
    );

עדכון סכימת גרף נכסים

אחרי שיוצרים סכימה של גרף מאפיינים, מעדכנים אותה באמצעות ההצהרה CREATE OR REPLACE PROPERTY GRAPH. ההצהרה הזו מחילה את השינויים על ידי יצירה מחדש של סכימת הגרף עם העדכון הרצוי.

אפשר לבצע את השינויים הבאים בסכימת תרשים הנכס:

  • הוספת הגדרה של צומת או קצה: יוצרים את טבלאות הקלט החדשות לצמתים ולקצוות, ואז משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH כדי להוסיף את ההגדרות החדשות לגרף.

  • עדכון של הגדרת צומת או קשת: מעדכנים את טבלת הקלט הבסיסית בהגדרות חדשות של צמתים וקשתות. לאחר מכן, משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH כדי לעדכן את ההגדרות בתרשים.

  • הסרת הגדרה של צומת או קשת: משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH ומשמיטים את ההגדרות שרוצים להסיר מהגרף.

הוספת הגדרות חדשות של צמתים או קשתות

כדי להוסיף צומת חדש והגדרה חדשה של קשת, פועלים לפי השלבים הבאים:

  1. מוסיפים טבלת קלט חדשה להגדרת צומת, Company, וטבלת קלט חדשה להגדרת קצה, 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. מעדכנים את סכימת FinGraph על ידי הוספת הגדרת הצומת החדשה Company והגדרת הקצה החדשה 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
      );
    

עדכון של הגדרות הצומת או הקצה

כדי לעדכן הגדרה קיימת של צומת או קשת, קודם משנים את טבלת הקלט הבסיסית, ואז משתמשים בהצהרת CREATE OR REPLACE PROPERTY GRAPH כדי להחיל את שינויי הסכימה על הגרף. כדי להתאים אישית את המאפיינים שמוצגים מטבלאות הקלט, משתמשים ב-PROPERTIES clause. מידע נוסף זמין במאמר בנושא התאמה אישית של תוויות ומאפיינים.

בשלבים הבאים מוסבר איך לעדכן את הטבלה הבסיסית של סכימה, ואז להחיל את העדכון על הסכימה.

  1. מוסיפים את העמודה mailing_address לטבלת הקלט הבסיסית Person.

    ALTER TABLE Person
    ADD COLUMN mailing_address STRING(MAX);
    
  2. החלת השינויים בטבלה Person על הסכימה. משתמשים בהצהרה CREATE OR REPLACE PROPERTY GRAPH. ההגדרה של צומת Person משקפת את ההגדרה המעודכנת של טבלת Person כי סכימת טבלת הקלט השתנתה.

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

הסרת הגדרות של צומת או קשת

כדי להסיר הגדרות קיימות של צמתים או קשתות, צריך ליצור מחדש את גרף המאפיינים בלי טבלאות הצמתים או הקשתות האלה.

הדוגמה הבאה מסירה את הגדרת הצומת Person ואת הגדרת הקצה PersonOwnAccount על ידי השמטה שלהן בהצהרה 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
    );

מחיקת סכימה של גרף מאפיינים

כדי להסיר סכימת גרף מטבלאות הקלט הבסיסיות, משתמשים בהצהרת DROP PROPERTY GRAPH DDL. כשמבטלים סכימה, אי אפשר למחוק את הנתונים מהטבלה הבסיסית.

הקוד הבא משמיט את סכימת גרף המאפיינים FinGraph:

DROP PROPERTY GRAPH FinGraph;

יצירת גרף מאפיינים בסכימה עם שם

‫Spanner Graph תומך ביצירת גרפים של מאפיינים בתוך סכימה עם שם.

בדוגמה הבאה נוצרות שתי סכימות בשם sch1 ו-sch2, טבלת צמתים וקשתות בסכימה sch1, וגרף צמתים ומאפיינים בסכימה sch2:

CREATE SCHEMA sch1;
CREATE SCHEMA sch2;

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

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

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

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

המאמרים הבאים