מטרות
במדריך הזה נסביר איך לבצע את השלבים הבאים באמצעות ה-CLI של gcloud:
- יצירת מכונה, מסד נתונים וסכימה ב-Spanner
- לכתוב נתונים במסד הנתונים ולהריץ שאילתות SQL על הנתונים האלה
- מחיקת מסד הנתונים והמכונה
ההליכים שבדף הזה רלוונטיים גם למסדי נתונים בניב GoogleSQL וגם למסדי נתונים בניב PostgreSQL.
למידע נוסף על gcloud ב-Spanner, קראו את המאמר gcloud.
תמחור
במדריך הזה משתמשים ב-Spanner, רכיב ב-Google Cloudשהשימוש בו כרוך בתשלום. למידע על עלות השימוש ב-Spanner, ראו תמחור.
לפני שמתחילים
מבצעים את השלבים שמפורטים במאמר התקנת ה-CLI של gcloud והגדרת Cloud Spanner API, שכוללים יצירה והגדרה של פרויקט ברירת מחדל ב- Google Cloud , הפעלת החיוב, הפעלת Cloud Spanner API והגדרת OAuth 2.0 כדי לקבל פרטי כניסה לאימות לשימוש ב-Cloud Spanner API.
חשוב במיוחד לוודא שאתם מריצים את 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 .
הגדרת המכונה שמוגדרת כברירת מחדל
אתם יכולים להגדיר את המכונה ש-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'
למידע נוסף על SQL ב-Spanner, קראו את המאמרים תחביר של שאילתות ב-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
חשוב לזכור שמחיקת מכונה גם מוחקת את כל מסדי הנתונים שבה. אי אפשר לבטל מחיקה של מכונה.