יצירה וניהול של מיקומי נתונים

בדף הזה מוסבר איך ליצור ולנהל מיקומי נתונים ב-Spanner.

מידע נוסף על חלוקה גיאוגרפית למחיצות זמין במאמר סקירה כללית על חלוקה גיאוגרפית למחיצות.

יצירת מיקום מודעה

אחרי יצירת המחיצות של מופע Spanner ומסדי הנתונים, יוצרים את מיקום המודעה.

המסוף

  1. נכנסים לדף Instances במסוף Google Cloud .

    מכונות

  2. בוחרים את המופע עם מחיצות המופע שנוצרו על ידי המשתמשים.

  3. בוחרים את מסד הנתונים שרוצים לחלק את הנתונים שלו.

  4. בתפריט הניווט, לוחצים על Spanner Studio.

  5. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.

  6. מזינים את הצהרת ה-DDL‏ CREATE PLACEMENT (GoogleSQL, ‏ PostgreSQL).

    לדוגמה, אפשר להריץ את הפקודה הבאה כדי ליצור טבלת מיקומי מודעות europeplacement במחיצת המופע europe-partition:

    GoogleSQL

    CREATE PLACEMENT europeplacement OPTIONS (instance_partition="europe-partition");
    

    PostgreSQL

    CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition');
    

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

  7. לוחצים על Run.

gcloud

כדי ליצור מיקום באמצעות פקודת Google Cloud CLI, משתמשים בפקודה gcloud spanner databases ddl update.

לדוגמה, יצירת מיקום במחיצת המופע europe-partition:

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement OPTIONS (instance_partition='europe-partition')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT europeplacement WITH (instance_partition='europe-partition')"

הגדרת מנהיג ברירת מחדל למיקום

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

אם לא מגדירים אזור מוביל, המיקום משתמש באזור המוביל שמוגדר כברירת מחדל לפי המיקום שלו. בטבלאות תצורות זמינות של שני אזורים ותצורות זמינות של מספר אזורים מפורטת רשימת האזורים המובילים לכל מיקום בשני אזורים או במספר אזורים. אזור ברירת המחדל לניהול מוגדר עם L. לדוגמה, אזור ברירת המחדל של nam8 הוא לוס אנג'לס(us-west2). בהוראות הבאות מוסבר איך להגדיר אותו לאורגון(us-west1).

המסוף

  1. נכנסים לדף Instances במסוף Google Cloud .

    מכונות

  2. בוחרים את המופע עם מחיצות המופע שנוצרו על ידי המשתמשים.

  3. בוחרים את מסד הנתונים שרוצים לחלק את הנתונים שלו.

  4. בתפריט הניווט, לוחצים על Spanner Studio.

  5. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.

  6. מזינים את הצהרת ה-DDL‏ CREATE PLACEMENT (GoogleSQL, ‏ PostgreSQL).

    לדוגמה, אפשר להריץ את הפקודה הבאה כדי ליצור טבלת מיקום nam8placement במחיצת המופע nam8-partition עם מיקום ברירת המחדל של הלידר שמוגדר כ-us-west1:

    GoogleSQL

    CREATE PLACEMENT `nam8placement`
      OPTIONS (instance_partition="nam8-partition", default_leader="us-west1");
    

    PostgreSQL

    CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1');
    

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

  7. לוחצים על Run.

gcloud

כדי ליצור מיקום באמצעות פקודת ה-CLI של gcloud, משתמשים בפקודה gcloud spanner databases ddl update.

לדוגמה, כדי ליצור טבלת מיקום nam8placement במחיצת המכונה nam8-partition עם מיקום ברירת המחדל של הלידר שמוגדר כ-us-west1:

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement \
     OPTIONS (instance_partition='nam8-partition', default_leader='us-west1')"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE PLACEMENT nam8placement WITH (instance_partition='nam8-partition', default_leader='us-west1')"

הוספת מיקום נתונים

לפני שמסירים מיקום מודעה, צריך להסיר ממנו את כל נתוני השורה. אחרי שמבצעים את הפעולה הזו, אפשר להשתמש במסוף Google Cloud או ב-CLI של gcloud כדי להסיר את המיקום.

המסוף

  1. בתפריט הניווט, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. מזינים את הצהרת ה-DDL‏ DROP PLACEMENT(GoogleSQL,‏ PostgreSQL).

    לדוגמה, אפשר להריץ את הפקודה הבאה כדי להסיר את טבלת המיקומים europeplacement:

    GoogleSQL

    DROP PLACEMENT europeplacement;
    

    PostgreSQL

    DROP PLACEMENT europeplacement;
    

gcloud

כדי להסיר מיקום באמצעות פקודת ה-CLI של gcloud, משתמשים בפקודה gcloud spanner databases ddl update.

לדוגמה, מיקום של תפריט נפתח europeplacement:

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP PLACEMENT europeplacement"

שגיאות בהצבת רכיב Drop

אם המיקום נמצא בשימוש, הפעולה DROP PLACEMENT נכשלת ומוצגת הודעת שגיאה כמו: "Statement failed: Placement PLACEMENT_NAME cannot be dropped because it is in use by placement table PLACEMENT_TABLE_NAME." (ההצהרה נכשלה: אי אפשר להסיר את המיקום PLACEMENT_NAME כי הוא נמצא בשימוש בטבלת המיקום PLACEMENT_TABLE_NAME). אם השגיאה הזו מופיעה, צריך לבצע את הפעולות הבאות:

  1. משנים את האפליקציה כדי להפסיק להוסיף או לעדכן שורות עם מיקום המודעה שרוצים להסיר.
  2. אחת מהאפשרויות:

    • מעבירים שורות קיימות של מיקומי מודעות שמשתמשות במיקום המודעה שרוצים למחוק למיקום מודעה אחר באמצעות הצהרת DML עם חלוקה למחיצות כמו בדוגמה הבאה:

      UPDATE PLACEMENT_TABLE_NAME SET LOCATION = NEW_PLACEMENT_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      
    • מוחקים את השורות של מיקום המודעה באמצעות פקודת DML מחולקת למחיצות, כמו הפקודה הבאה:

      DELETE FROM PLACEMENT_TABLE_NAME
      WHERE LOCATION = ORIGINAL_PLACEMENT_NAME;
      

      פקודות ה-DML הקודמות שספציפיות למיקום המודעה פועלות רק עם DML מחולק. הן ייכשלו כמו פקודות DML רגילות. מידע נוסף מופיע בקטע מגבלות. אפשר גם להשתמש ב-Mutation API כדי להעביר או להשמיט שורות של מיקומי מודעות.

ביטול פעולה של DROP PLACEMENT

אפשר לבטל פעולת DROP PLACEMENT בכל שלב לפני שהפעולה ארוכת הטווח מוחקת לחלוטין את מיקום המודעה מסכימת מסד הנתונים. במאמר ניהול פעולות ממושכות ומעקב אחריהן מוסבר איך מקבלים את מזהה הפעולה הממושכת כדי לבדוק את הסטטוס או לבטל את הפעולה.

יצירת טבלה עם מפתח מיקום

המסוף

  1. בתפריט הניווט, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. מזינים את הצהרת ה-DDL‏ CREATE TABLE (GoogleSQL,‏ PostgreSQL).

    לדוגמה, אפשר ליצור טבלה Singers שמשתמשת במפתח מיקום כדי לחלק את נתוני הזמרים:

    GoogleSQL

    CREATE TABLE Singers (
      SingerId INT64 NOT NULL,
      SingerName STRING(MAX) NOT NULL,
      ...
      Location STRING(MAX) NOT NULL PLACEMENT KEY
    ) PRIMARY KEY (SingerId);
    

    PostgreSQL

    CREATE TABLE Singers (
      SingerId bigint PRIMARY KEY,
      SingerName varchar(1024),
      ...
      Location varchar(1024) NOT NULL PLACEMENT KEY
    );
    

gcloud

כדי ליצור טבלה, משתמשים בפקודה gcloud spanner databases ddl update.

לדוגמה, אפשר ליצור טבלה Singers שמשתמשת במפתח מיקום כדי לחלק את נתוני הזמרים:

GoogleSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId INT64 NOT NULL, SingerName STRING(MAX) NOT NULL, Location STRING(MAX) NOT NULL PLACEMENT KEY ) PRIMARY KEY (SingerId);"

PostgreSQL

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, SingerName varchar(1024), Location varchar(1024) NOT NULL PLACEMENT KEY );"

עריכת טבלה באמצעות מפתח מיקום

אי אפשר להסיר מפתח מיקום מטבלה. בנוסף, אי אפשר להוסיף מפתח מיקום מודעה לטבלה אחרי שהיא נוצרה. עם זאת, אפשר להשתמש בהצהרת DDL ‏ALTER TABLE (GoogleSQL,‏ PostgreSQL) כדי לשנות שדות אחרים בטבלה, למשל על ידי הוספה והסרה של עמודות מפתח שאינן עמודות מיקום.

מחיקת טבלה עם מפתח מיקום

לפני שמוחקים טבלה עם מפתח מיקום, צריך קודם:

  1. מחיקת כל השורות בטבלת המיקומים.
  2. ממתינים עד שversion_retention_period יעבור את מסד הנתונים. מידע נוסף זמין במאמר בנושא שחזור מערכת מנקודה מסוימת בזמן (PITR). לאחר מכן, פועלים לפי השלבים הבאים:

המסוף

  1. בתפריט הניווט, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. מזינים את הצהרת ה-DDL‏ DROP TABLE (GoogleSQL,‏ PostgreSQL).

    לדוגמה, כדי להסיר את הטבלה Singers:

    DROP TABLE Singers;
    

gcloud

כדי להסיר טבלה, משתמשים ב-gcloud spanner databases ddl update.

לדוגמה, כדי להסיר את הטבלה Singers:

gcloud spanner databases ddl update example-db \
  --instance=test-instance \
  --ddl="DROP TABLE Singers"

הוספת שורה לטבלת מיקומים

המסוף

  1. בתפריט הניווט, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. מזינים את הצהרת ה-DDL‏ INSERT INTO (GoogleSQL,‏ PostgreSQL).

    לדוגמה, מוסיפים את הזמר מארק ריצ'רדס לטבלה Singers ומחלקים אותה למחיצות ב-europeplacement:

    INSERT INTO Singers(SingerId, SingerName, Location)
    VALUES (1, 'Marc Richards', 'europeplacement')
    

gcloud

כדי לכתוב נתונים לטבלה, משתמשים ב-gcloud spanner rows insert.

לדוגמה, מוסיפים את הזמר מארק ריצ'רדס לטבלה Singers ומחלקים אותה למחיצות ב-europeplacement:

gcloud spanner rows insert --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Marc Richards',Location='europeplacement'

עדכון שורה בטבלת מיקומים

המסוף

  1. בתפריט הניווט, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. כדי לעדכן נתונים בטבלת מיקומי מודעות, משתמשים ב-DML או במוטציות.

    לדוגמה, כדי לעדכן את השם singerid=1 בטבלה Singers ל-Catalina Smith:

    UPDATE Singers s
    SET s.name='Catalina Smith'
    WHERE s.id=1;
    

gcloud

כדי לעדכן נתונים בטבלת מיקומי מודעות, משתמשים ב-gcloud spanner rows update.

לדוגמה, כדי לעדכן את השם singerid=1 בטבלה Singers ל-Catalina Smith:

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,SingerName='Catalina Smith'

העברת שורה בטבלת מיקומים

המסוף

  1. אם עדיין לא עשיתם זאת, צרו מחיצה חדשה של מופע ומיקום.
  2. בתפריט הניווט, לוחצים על Spanner Studio.
  3. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  4. כדי להעביר נתונים למחיצת המופע החדשה, משתמשים ב-DML או במוטציות.

    לדוגמה, מעבירים את singerid=1 בטבלה Singers אל asiaplacement:

    UPDATE Singers s
    SET s.location='asiaplacement'
    WHERE s.id=1;
    

gcloud

אחרי שיוצרים את המיקום והמחיצה של המופע שאליו רוצים להעביר את הנתונים, משתמשים ב-gcloud spanner rows update.

לדוגמה, מעבירים את singerid=1 בטבלה Singers אל asiaplacement:

gcloud spanner rows update --table=Singers --database=example-db \
  --instance=test-instance --data=SingerId=1,Location='asiaplacement'

מחיקת שורה בטבלת מיקומי מודעות

המסוף

  1. בתפריט הניווט, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. כדי למחוק נתונים, משתמשים ב-DML או בשינויים.

    לדוגמה, כדי למחוק את singerid=1 בטבלה Singers:

    DELETE FROM Singers s
    WHERE s.id=1;
    

gcloud

כדי למחוק נתונים, משתמשים בסמל gcloud spanner rows delete.

לדוגמה, כדי למחוק את singerid=1 בטבלה Singers:

gcloud spanner rows delete --table=Singers --database=example-db \
  --instance=test-instance --keys=1

שליחת שאילתות לנתונים בטבלת מיקומי מודעות

המסוף

  1. בתפריט הניווט, לוחצים על Spanner Studio.
  2. בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
  3. מריצים את השאילתה.

    לדוגמה, אפשר להריץ שאילתה בטבלה Singers:

    SELECT * FROM Singers s WHERE s.SingerId=1;
    

gcloud

כדי להריץ שאילתות על נתונים, משתמשים ב-gcloud spanner databases execute-sql.

לדוגמה, אפשר להריץ שאילתה בטבלה Singers:

gcloud spanner databases execute-sql example-db \
  --instance=test-instance \
  --sql='SELECT * FROM Singers s WHERE s.SingerId=1'

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