בדף הזה מוסבר איך ליצור ולנהל מיקומי נתונים ב-Spanner.
מידע נוסף על חלוקה גיאוגרפית זמין במאמר סקירה כללית על חלוקה גיאוגרפית.
יצירת מיקום נתונים
אחרי שיוצרים את המחיצות של מכונת Spanner ומסדי נתונים, יוצרים את מיקום המודעה.
המסוף
נכנסים לדף Instances במסוף Google Cloud .
בוחרים את המכונה עם מחיצות המכונה שנוצרו על ידי המשתמשים.
בוחרים את מסד הנתונים שרוצים לחלק את הנתונים שלו.
בתפריט הניווט, לוחצים על Spanner Studio.
בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
מזינים את הצהרת ה-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 כדי להציג את אובייקטי המיקום, לחפש אותם ולבצע בהם פעולות. מידע נוסף מופיע במאמר עיון בנתונים.
לוחצים על 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).
המסוף
נכנסים לדף Instances במסוף Google Cloud .
בוחרים את המכונה עם מחיצות המכונה שנוצרו על ידי המשתמשים.
בוחרים את מסד הנתונים שרוצים לחלק את הנתונים שלו.
בתפריט הניווט, לוחצים על Spanner Studio.
בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
מזינים את הצהרת ה-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 כדי להציג את אובייקטי המיקום, לחפש אותם ולבצע בהם פעולות. מידע נוסף מופיע במאמר עיון בנתונים.
לוחצים על 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 כדי להסיר את המיקום.
המסוף
- בתפריט הניווט, לוחצים על Spanner Studio.
- בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
מזינים את הצהרת ה-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 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). אם השגיאה הזו מופיעה, צריך לבצע את הפעולות הבאות:
- משנים את האפליקציה כדי להפסיק להוסיף או לעדכן שורות עם מיקום המודעה שרוצים להסיר.
אחת מהאפשרויות הבאות:
מעבירים שורות קיימות של מיקומי מודעות שמשתמשות במיקום המודעה שרוצים למחוק למיקום מודעה אחר באמצעות הצהרת 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 בכל שלב לפני שהפעולה ארוכת הטווח מוחקת לחלוטין את מיקום המודעה מסכימת מסד הנתונים. במאמר ניהול פעולות ממושכות ומעקב אחריהן מוסבר איך מקבלים את מזהה הפעולה הממושכת כדי לבדוק את הסטטוס או לבטל את הפעולה.
יצירת טבלה עם מפתח מיקום
המסוף
- בתפריט הניווט, לוחצים על Spanner Studio.
- בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
מזינים את הצהרת ה-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) כדי לשנות שדות אחרים בטבלה, למשל, כדי להוסיף או להסיר עמודות של מפתחות שאינם מפתחות מיקום.
מחיקת טבלה עם מפתח מיקום
לפני שמוחקים טבלה עם מפתח מיקום, צריך קודם:
- מחיקת כל השורות בטבלת המיקומים.
- ממתינים עד ש
version_retention_periodיעבור עבור מסד הנתונים. מידע נוסף זמין במאמר בנושא שחזור מערכת מנקודה מסוימת בזמן (PITR). לאחר מכן, פועלים לפי השלבים הבאים:
המסוף
- בתפריט הניווט, לוחצים על Spanner Studio.
- בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
מזינים את הצהרת ה-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"
הוספת שורה לטבלת מיקומים
המסוף
- בתפריט הניווט, לוחצים על Spanner Studio.
- בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
מזינים את הצהרת ה-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'
עדכון שורה בטבלת מיקומים
המסוף
- בתפריט הניווט, לוחצים על Spanner Studio.
- בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
כדי לעדכן נתונים בטבלת מיקומי מודעות, משתמשים ב-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'
העברת שורה בטבלת מיקומים
המסוף
- אם עדיין לא עשיתם זאת, צרו מחיצה חדשה של מופע ומיקום.
- בתפריט הניווט, לוחצים על Spanner Studio.
- בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
כדי להעביר נתונים למחיצת המופע החדשה, משתמשים ב-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'
מחיקת שורה בטבלת מיקומים
המסוף
gcloud
כדי למחוק נתונים, משתמשים בסמל gcloud spanner rows delete.
לדוגמה, כדי למחוק את singerid=1 בטבלה Singers:
gcloud spanner rows delete --table=Singers --database=example-db \
--instance=test-instance --keys=1
שאילתת נתונים בטבלת מיקומי מודעות
המסוף
- בתפריט הניווט, לוחצים על Spanner Studio.
- בדף Spanner Studio, לוחצים על New tab או משתמשים בכרטיסיית העריכה הריקה.
מריצים את השאילתה.
לדוגמה, אפשר להריץ שאילתה בטבלה
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'