מטרות
במדריך הזה נסביר איך לבצע את השלבים הבאים באמצעות ה-CLI של gcloud:
- יצירה של מכונת Spanner, מסד נתונים וסכימה
- כתיבת נתונים למסד הנתונים והרצת שאילתות SQL על הנתונים האלה
- ניקוי על ידי מחיקת מסד הנתונים והמופע
ההליכים שמתוארים בדף הזה רלוונטיים למסדי נתונים בניב GoogleSQL ולמסדי נתונים בניב PostgreSQL.
למידע נוסף על gcloud Spanner, ראו gcloud.
תמחור
במדריך הזה נעשה שימוש ב-Spanner, שהוא רכיב בתשלום שלGoogle Cloud. מידע על עלות השימוש ב-Spanner מופיע בקטע תמחור.
לפני שמתחילים
צריך לבצע את השלבים שמתוארים במאמר התקנה של ה-CLI של gcloud והגדרה של Cloud Spanner API, שכוללים יצירה והגדרה של פרויקט ברירת מחדל, הפעלת החיוב, הפעלת Cloud Spanner API והגדרה של OAuth 2.0 כדי לקבל פרטי אימות לשימוש ב-Cloud Spanner API. Google Cloud
חשוב במיוחד להריץ את הפקודה gcloud auth application-default
login כדי להגדיר את סביבת הפיתוח המקומית עם פרטי כניסה לאימות.
הגדרת פרויקט ברירת מחדל
אם עדיין לא עשיתם זאת, מגדירים את המזהה של Google Cloud פרויקט כפרויקט ברירת המחדל עבור Google Cloud CLI:
gcloud config set project PROJECT_ID
אם לא מגדירים את פרויקט ברירת המחדל, צריך להעביר את --project
PROJECT_ID לכל אחת מהפקודות שלמטה כארגומנט הראשון ל-gcloud. לדוגמה:
gcloud --project=PROJECT_ID spanner instance-configs list
מכונות
בפעם הראשונה שמשתמשים ב-Spanner, צריך ליצור מופע, שהוא הקצאה של משאבים שמשמשים מסדי נתונים של Spanner. כשיוצרים מופע, בוחרים איפה הנתונים מאוחסנים וכמה קיבולת מחשוב יש למופע.
מופעים והגדרות של מופעים
כדי ליצור מכונה, צריך לבחור הגדרת מכונה, שהיא כמו תוכנית למכונה שמגדירה את המיקום הגיאוגרפי והשכפול של נתוני Spanner.
הצגת רשימה של הגדרות מופעים
כשיוצרים מופע, מציינים הגדרת מופע, שבה מוגדרים המיקום הגיאוגרפי והשכפול של מסדי הנתונים במופע הזה. אתם יכולים לבחור הגדרה אזורית, שמאחסנת נתונים באזור אחד, הגדרה של שני אזורים, שמאחסנת נתונים בשני אזורים באותה מדינה, או הגדרה של כמה אזורים, שמפיצה נתונים בכמה אזורים. מידע נוסף מופיע במאמר סקירה כללית על מופעים.
כדי לראות את קבוצת ההגדרות של המופעים שזמינות לפרויקט:
gcloud spanner instance-configs list
תוצג רשימה של הגדרות אזוריות, הגדרות בשני אזורים והגדרות במספר אזורים.
יצירת מופע
כדי ליצור מכונה בשם test-instance עם השם המוצג My Instance באמצעות הגדרת המכונה האזורית regional-us-central1 עם צומת אחד:
gcloud spanner instances create test-instance --config=regional-us-central1 \ --description="My Instance" --nodes=1
בפקודה שלמעלה, שם המופע מוגדר כ-test-instance והפקודה --description מגדירה את השם המוצג של המופע. שני הערכים האלה צריכים להיות ייחודיים בפרויקט Google Cloud Platform.
הגדרת מופע ברירת מחדל
אתם יכולים להגדיר את מופע ברירת המחדל שבו Spanner משתמש כשלא ציינתם מופע בפקודה. כדי להגדיר את מופע ברירת המחדל:
gcloud config set spanner/instance test-instance
יצירת מסד נתונים
יוצרים מסד נתונים בשם example-db. דיאלקט מסד הנתונים מוגדר כברירת מחדל ל-GoogleSQL.
GoogleSQL
gcloud spanner databases create example-db
PostgreSQL
gcloud spanner databases create example-db --database-dialect=POSTGRESQL
עדכון הסכימה
אפשר להשתמש בשפת הגדרת הנתונים (DDL) של Spanner כדי ליצור טבלאות, לשנות אותן או למחוק אותן, וגם כדי ליצור אינדקסים או למחוק אותם.
ניצור שתי טבלאות:
GoogleSQL
gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)' gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId INT64 NOT NULL, AlbumId INT64 NOT NULL, AlbumTitle STRING(MAX)) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
PostgreSQL
gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Singers ( SingerId bigint NOT NULL, FirstName varchar(1024), LastName varchar(1024), SingerInfo bytea, PRIMARY KEY (SingerId) )' gcloud spanner databases ddl update example-db \ --ddl='CREATE TABLE Albums ( SingerId bigint NOT NULL, AlbumId bigint NOT NULL, AlbumTitle varchar, PRIMARY KEY (SingerId, AlbumId) ) INTERLEAVE IN PARENT Singers ON DELETE CASCADE'
כדי לבדוק את התקדמות הפעולה, משתמשים בפקודה gcloud spanner operations describe.
הפקודה הזו דורשת את מזהה הפעולה.
קבלת מזהה הפעולה:
gcloud spanner operations list --instance="test-instance" \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
מחליפים את DATABASE-NAME בשם של מסד הנתונים.
מריצים את gcloud spanner operations describe:
gcloud spanner operations describe \ --instance="test-instance" \ --database="example-db" \ projects/PROJECT-NAME/instances/test-instance/databases/example-db/operations/OPERATION-ID
מחליפים את מה שכתוב בשדות הבאים:
- PROJECT-NAME: שם הפרויקט.
- OPERATION-ID: מזהה הפעולה שרוצים לבדוק.
הפלט אמור להיראות כך:
done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
כתיבת נתונים
עכשיו נוסיף כמה נתונים לדוגמה למסד הנתונים
GoogleSQL
gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=1,FirstName=Marc,LastName=Richards gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=2,FirstName=Catalina,LastName=Smith gcloud spanner rows insert --database=example-db \ --table=Singers \ --data=SingerId=3,FirstName=Alice,LastName=Trentor gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=SingerId=1,AlbumId=1,AlbumTitle="Total Junk" gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=SingerId=2,AlbumId=1,AlbumTitle="Green" gcloud spanner rows insert --database=example-db \ --table=Albums \ --data=^:^SingerId=2:AlbumId=2:AlbumTitle="Go, Go, Go"
כברירת מחדל, פסיק משמש להפרדה בין פריטים ברשימות. בפקודת ההוספה האחרונה, ציינו נקודתיים (^:^) כתו המפריד כדי שנוכל להשתמש בפסיק בשם האלבום.
PostgreSQL
gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (1, 'Marc', 'Richards')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (2, 'Catalina', 'Smith')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Singers (SingerId, FirstName, LastName) VALUES (3, 'Alice', 'Trentor')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (1, 1, 'Total Junk')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 1, 'Green')" gcloud spanner databases execute-sql example-db \ --sql="INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES (2, 2, 'Go, Go, Go')"
הרצת שאילתות על נתונים באמצעות SQL
מריצים שאילתה בשורת הפקודה:
gcloud spanner databases execute-sql example-db \ --sql='SELECT SingerId, AlbumId, AlbumTitle FROM Albums'
לעיון בהפניה ל-Spanner SQL, אפשר לעבור אל תחביר שאילתות ל-GoogleSQL או אל תחביר שאילתות ל-PostgreSQL.
כדי לראות רשימה של דגלים שאפשר להשתמש בהם עם הפקודה execute-sql, אפשר לעיין במאמר בנושא gcloud spanner databases execute-sql.
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון Google Cloud , צריך למחוק את מסד הנתונים ואת המופע. השבתה של Cloud Billing API לא מפסיקה את החיובים. כשמוחקים מופע, כל מסדי הנתונים במופע נמחקים.
מחיקה של מסד נתונים
כדי למחוק מופע קיים:
gcloud spanner databases delete example-db
מחיקת מכונה
כדי למחוק מופע קיים:
gcloud spanner instances delete test-instance
שימו לב: מחיקת מופע גורמת גם למחיקה של כל מסדי הנתונים במופע הזה. אי אפשר לבטל מחיקה של מופע.