מטרות
במדריך הזה נסביר איך לבצע את השלבים הבאים באמצעות Cloud Spanner API עם REST:
- יוצרים מסד נתונים ומופע Spanner.
- לכתוב, לקרוא ולהריץ שאילתות SQL על נתונים במסד הנתונים.
- מעדכנים את הסכימה של מסד הנתונים.
- מוסיפים אינדקס משני למסד הנתונים.
- משתמשים באינדקס כדי לקרוא נתונים ולהריץ עליהם שאילתות SQL.
- אחזור נתונים באמצעות טרנזקציה לקריאה בלבד.
אם אתם רוצים להשתמש בספריות לקוח של Spanner במקום ב-REST API, תוכלו לעיין במאמר הדרכות.
עלויות
במדריך הזה נעשה שימוש ב-Spanner, שהוא רכיב בתשלום שלGoogle Cloud. מידע על עלות השימוש ב-Spanner מופיע בקטע תמחור.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
דרכים לבצע קריאות ל-REST
אפשר לבצע קריאות ל-REST של Spanner באמצעות:
- התכונה Try-It! שמופיעה במסמכי התיעוד של Spanner API reference.
- Google APIs Explorer, שכולל את Cloud Spanner API וממשקי Google APIs אחרים.
- כלים או מסגרות אחרים שתומכים בקריאות HTTP REST.
מוסכמות שמשמשות בדף הזה
בדוגמאות נעשה שימוש ב-
<var>PROJECT_ID</var>כמזהה הפרויקט. Google Cloud מחליפים את Google Cloud במזהה הפרויקט.<var>PROJECT_ID</var>בדוגמאות האלה נוצר מזהה מופע
test-instanceונעשה בו שימוש. אם אתם לא משתמשים ב-test-instance, צריך להחליף את מזהה המכונה.בדוגמאות האלה נוצר מזהה מסד נתונים
example-dbונעשה בו שימוש. אם אתם לא משתמשים ב-example-db, צריך להחליף אותו במזהה של מסד הנתונים.בדוגמאות נעשה שימוש ב-
<var>SESSION</var>כחלק משם הסשן. מחליפים את הערך שמתקבל כשיוצרים סשן בערך<var>SESSION</var>.בדוגמאות האלה נעשה שימוש במזהה עסקה
<var>TRANSACTION_ID</var>. מחליפים את הערך שמתקבל כשיוצרים עסקה ב-<var>TRANSACTION_ID</var>.הפונקציונליות Try-It! תומכת בהוספה אינטראקטיבית של שדות בבקשות HTTP בודדות. רוב הדוגמאות במסמך הזה מספקות את הבקשה המלאה במקום לתאר איך להוסיף שדות בודדים לבקשה באופן אינטראקטיבי.
מכונות
כשמשתמשים ב-Spanner בפעם הראשונה, צריך ליצור מופע. במכונה מוקצים משאבים שמשמשים את מסדי הנתונים של Spanner. כשיוצרים מופע, בוחרים איפה הנתונים יאוחסנו וכמה קיבולת חישוב תהיה למופע.
הצגת רשימה של הגדרות מופעים
כשיוצרים מופע, מציינים הגדרת מופע, שבה מוגדרים המיקום הגיאוגרפי והשכפול של מסדי הנתונים במופע הזה. אתם יכולים לבחור הגדרה אזורית כדי לאחסן נתונים באזור אחד, או הגדרה של מספר אזורים כדי להפיץ נתונים בין כמה אזורים. מידע נוסף על Instances
אפשר להשתמש ב-projects.instanceConfigs.list כדי לראות אילו הגדרות זמינות לפרויקט Google Cloud .
- לוחצים על
projects.instanceConfigs.list. בשדה parent (הורה), מזינים:
projects/PROJECT_ID
לוחצים על Execute. בתגובה מוצגות ההגדרות הזמינות של המופע. זוהי דוגמה לתשובה (יכול להיות שלפרויקט שלכם יהיו הגדרות שונות של מופעים):
{ "instanceConfigs": [ { "name": "projects/<var>PROJECT_ID</var>/instanceConfigs/regional-asia-south1", "displayName": "asia-south1" }, { "name": "projects/<var>PROJECT_ID</var>/instanceConfigs/regional-asia-east1", "displayName": "asia-east1" }, { "name": "projects/<var>PROJECT_ID</var>/instanceConfigs/regional-asia-northeast1", "displayName": "asia-northeast1" }, { "name": "projects/<var>PROJECT_ID</var>/instanceConfigs/regional-europe-west1", "displayName": "europe-west1" }, { "name": "projects/<var>PROJECT_ID</var>/instanceConfigs/regional-us-east4", "displayName": "us-east4" }, { "name": "projects/<var>PROJECT_ID</var>/instanceConfigs/regional-us-central1", "displayName": "us-central1" } ] }
משתמשים בערך name באחת מהגדרות המכונה כשיוצרים את המכונה.
יצירת מופע
- לוחצים על
projects.instances.create. בשדה parent (הורה), מזינים:
projects/<var>PROJECT_ID</var>לוחצים על Add request body parameters (הוספת פרמטרים של גוף הבקשה) ובוחרים באפשרות
instance.לוחצים על בועת העזרה של instance כדי לראות את השדות האפשריים. מוסיפים ערכים לשדות הבאים:
nodeCount: מזינים1.-
config: מזינים את הערךnameשל אחת מהגדרות המופע האזורי שהוחזרו כשמציגים את רשימת הגדרות המופע. displayName: מזיניםTest Instance.
לוחצים על בועת העזרה שאחרי הסוגר הסוגר של instance ובוחרים באפשרות instanceId.
עבור
instanceId, מזיניםtest-instance.
עכשיו הדף ליצירת מופע Try It! אמור להיראות כך:
לוחצים על Execute. התגובה מחזירה פעולה ממושכת. אפשר להריץ שאילתה על הפעולה הזו כדי לבדוק את הסטטוס שלה.
מציגים את רשימת המקרים באמצעות projects.instances.list.
יצירת מסד נתונים
יוצרים מסד נתונים בשם example-db.
- לוחצים על
projects.instances.databases.create. בשדה parent (הורה), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instanceלוחצים על Add request body parameters (הוספת פרמטרים של גוף הבקשה) ובוחרים באפשרות
createStatement.עבור
createStatement, מזינים:CREATE DATABASE `example-db`
שם מסד הנתונים, example-db, מכיל מקף, ולכן צריך להוסיף לו גרש הפוך (`).
- לוחצים על Execute. התגובה מחזירה פעולה ממושכת. אפשר להריץ שאילתה על הפעולה הזו כדי לבדוק את הסטטוס שלה.
מציגים את רשימת מסדי הנתונים באמצעות projects.instances.databases.list.
יצירת סכימה
אפשר להשתמש ב-Data Definition Language (DDL) של Spanner כדי ליצור, לשנות או למחוק טבלאות, וגם כדי ליצור או למחוק אינדקסים.
- לוחצים על
projects.instances.databases.updateDdl. בקטע database (מסד נתונים), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-dbבקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "statements": [ "CREATE TABLE Singers ( SingerId INT64 NOT NULL, FirstName STRING(1024), LastName STRING(1024), SingerInfo BYTES(MAX) ) PRIMARY KEY (SingerId)", "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" ] }המערך
statementsמכיל את הצהרות ה-DDL שמגדירות את הסכימה.לוחצים על Execute. התגובה מחזירה פעולה ממושכת. מריצים שאילתה על הפעולה הזו כדי לבדוק את הסטטוס שלה.
הסכימה מגדירה שתי טבלאות, Singers ו-Albums, לאפליקציית מוזיקה בסיסית. במסמך הזה אנחנו משתמשים בטבלאות האלה. מעיינים בסכימה לדוגמה.
אפשר לאחזר את הסכימה באמצעות projects.instances.databases.getDdl.
יצירת סשן
לפני שמוסיפים, מעדכנים, מוחקים או שולחים שאילתות לגבי נתונים, צריך ליצור סשן. סשן מייצג ערוץ תקשורת עם שירות מסד הנתונים של Spanner. (אם אתם משתמשים בספריית לקוח של Spanner, אתם לא משתמשים בסשן באופן ישיר, כי ספריית הלקוח מנהלת את הסשנים בשבילכם).
- לוחצים על
projects.instances.databases.sessions.create. בקטע database (מסד נתונים), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-dbלוחצים על Execute.
התשובה תציג את הסשן שיצרתם, בצורה
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>משתמשים בסשן הזה כשקוראים או כותבים במסד הנתונים.
הסשנים מיועדים להיות ארוכים. שירות מסד הנתונים של Spanner
מוחק סשן כשהוא לא פעיל במשך יותר משעה. ניסיון להשתמש בסשן שנמחק יגרום לשגיאה NOT_FOUND. אם נתקלים בשגיאה הזו, צריך ליצור סשן חדש ולהשתמש בו. כדי לבדוק אם סשן עדיין פעיל, משתמשים ב-projects.instances.databases.sessions.get.
מידע נוסף בנושא זמין במאמר איך שומרים על פעילות של סשן לא פעיל.
סשנים הם מושג מתקדם. פרטים נוספים ושיטות מומלצות זמינים במאמר בנושא סשנים.
בשלב הבא, כותבים נתונים למסד הנתונים.
כתיבת נתונים
כותבים נתונים באמצעות הסוג
Mutation. Mutation הוא מאגר לפעולות שינוי. Mutation
מייצג רצף של הוספות, עדכונים, מחיקות ופעולות אחרות שמתבצעות באופן אטומי בשורות ובטבלאות שונות במסד נתונים של Spanner.
- לוחצים על
projects.instances.databases.sessions.commit. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "singleUseTransaction": { "readWrite": {} }, "mutations": [ { "insertOrUpdate": { "table": "Singers", "columns": [ "SingerId", "FirstName", "LastName" ], "values": [ [ "1", "Marc", "Richards" ], [ "2", "Catalina", "Smith" ], [ "3", "Alice", "Trentor" ], [ "4", "Lea", "Martin" ], [ "5", "David", "Lomond" ] ] } }, { "insertOrUpdate": { "table": "Albums", "columns": [ "SingerId", "AlbumId", "AlbumTitle" ], "values": [ [ "1", "1", "Total Junk" ], [ "1", "2", "Go, Go, Go" ], [ "2", "1", "Green" ], [ "2", "2", "Forever Hold Your Peace" ], [ "2", "3", "Terrified" ] ] } } ] }לוחצים על Execute. בתשובה מוצגת חותמת הזמן של השמירה.
בדוגמה הזו נעשה שימוש ב-insertOrUpdate. פעולות אחרות של Mutations הן insert, update, replace ו-delete.
מידע על קידוד סוגי נתונים זמין במאמר TypeCode.
הרצת שאילתות על נתונים באמצעות SQL
- לוחצים על
projects.instances.databases.sessions.executeSql. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums" }לוחצים על Execute. התשובה תציג את תוצאות השאילתה.
קריאת נתונים באמצעות read API
- לוחצים על
projects.instances.databases.sessions.read. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "table": "Albums", "columns": [ "SingerId", "AlbumId", "AlbumTitle" ], "keySet": { "all": true } }לוחצים על Execute. התוצאות של הקריאה יופיעו בתשובה.
עדכון הסכימה של מסד הנתונים
מוסיפים עמודה חדשה בשם MarketingBudget לטבלה Albums. לשם כך צריך לעדכן את סכימת מסד הנתונים. Spanner תומך בעדכוני סכימה במסד נתונים בזמן שמסד הנתונים ממשיך לשרת תנועה. עדכוני סכימה לא מחייבים להעביר את מסד הנתונים למצב אופליין, והם לא נועלים טבלאות או עמודות שלמות. אפשר להמשיך לכתוב נתונים למסד הנתונים במהלך עדכון הסכימה.
הוספת עמודה
- לוחצים על
projects.instances.databases.updateDdl. בקטע database (מסד נתונים), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-dbבקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "statements": [ "ALTER TABLE Albums ADD COLUMN MarketingBudget INT64" ] } ``` The `statements` array contains the DDL statements that define the schema.לוחצים על Execute. הפעולה עשויה להימשך כמה דקות, גם אחרי שקריאת ה-REST מחזירה תשובה. התגובה מחזירה פעולה ממושכת. אפשר להריץ שאילתה על הפעולה הזו כדי לבדוק את הסטטוס שלה.
כתיבת נתונים בעמודה החדשה
הקוד הזה כותב נתונים בעמודה החדשה. הפונקציה מגדירה את MarketingBudget ל-100000
בשורה עם המפתח Albums(1, 1) ול-500000 בשורה עם המפתח
Albums(2, 2).
- לוחצים על
projects.instances.databases.sessions.commit. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>(הערך הזה מתקבל כשיוצרים סשן).
בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "singleUseTransaction": { "readWrite": {} }, "mutations": [ { "update": { "table": "Albums", "columns": [ "SingerId", "AlbumId", "MarketingBudget" ], "values": [ [ "1", "1", "100000" ], [ "2", "2", "500000" ] ] } } ] }לוחצים על Execute. בתשובה מוצגת חותמת הזמן של השמירה.
מריצים שאילתת SQL או קריאת נתונים כדי לאחזר את הערכים שכתבתם.
- לוחצים על
projects.instances.databases.sessions.executeSql. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "sql": "SELECT SingerId, AlbumId, MarketingBudget FROM Albums" }לוחצים על Execute. בתשובה מוצגות שתי שורות שמכילות את הערכים המעודכנים של
MarketingBudget:"rows": [ [ "1", "1", "100000" ], [ "1", "2", null ], [ "2", "1", null ], [ "2", "2", "500000" ], [ "2", "3", null ] ]
שימוש באינדקס משני
כדי לאחזר את כל השורות בטבלה Albums שבהן הערכים של AlbumTitle נמצאים בטווח מסוים, קוראים את כל הערכים מהעמודה AlbumTitle באמצעות הצהרת SQL או קריאת קריאה, ואז משליכים את השורות שלא עומדות בקריטריונים. עם זאת, סריקה מלאה של הטבלה היא יקרה, במיוחד כשמדובר בטבלאות עם הרבה שורות. כדי לזרז את אחזור השורות כשמחפשים לפי עמודות שאינן עמודות של מפתח ראשי, יוצרים אינדקס משני בטבלה.
כדי להוסיף אינדקס משני לטבלה קיימת, צריך לעדכן את הסכימה. בדומה לעדכונים אחרים של סכימות, Spanner תומך בהוספת אינדקס בזמן שהמסד ממשיך לשרת תנועה. מערכת Spanner ממלאת באופן אוטומטי את האינדקס בנתונים הקיימים. יכול להיות שיחלפו כמה דקות עד שהמילוי יסתיים, אבל לא צריך להעביר את מסד הנתונים למצב אופליין או להימנע מכתיבה לטבלאות או לעמודות מסוימות במהלך התהליך. מידע נוסף זמין במאמר בנושא מילוי חוסרים באינדקס.
אחרי שמוסיפים אינדקס משני, Spanner משתמש בו באופן אוטומטי לשאילתות SQL שפועלות מהר יותר עם האינדקס. אם משתמשים בממשק read, צריך לציין את האינדקס שרוצים להשתמש בו.
הוספת אינדקס משני
מוסיפים מדד באמצעות updateDdl.
- לוחצים על
projects.instances.databases.updateDdl. בקטע database (מסד נתונים), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-dbבקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "statements": [ "CREATE INDEX AlbumsByAlbumTitle ON Albums(AlbumTitle)" ] }לוחצים על Execute. הפעולה עשויה להימשך כמה דקות, גם אחרי שקריאת ה-REST מחזירה תשובה. התגובה מחזירה פעולה ממושכת. אפשר להריץ שאילתה על הפעולה הזו כדי לבדוק את הסטטוס שלה.
שליחת שאילתות באמצעות האינדקס
- לוחצים על
projects.instances.databases.sessions.executeSql. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "sql": "SELECT AlbumId, AlbumTitle, MarketingBudget FROM Albums WHERE AlbumTitle >= 'Aardvark' AND AlbumTitle < 'Goo'" }לוחצים על Execute. התגובה כוללת את השורות הבאות:
"rows": [ [ "2", "Go, Go, Go", null ], [ "2", "Forever Hold Your Peace", "500000" ] ]
קריאה באמצעות האינדקס
- לוחצים על
projects.instances.databases.sessions.read. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "table": "Albums", "columns": [ "AlbumId", "AlbumTitle" ], "keySet": { "all": true }, "index": "AlbumsByAlbumTitle" }לוחצים על Execute. התגובה כוללת את השורות הבאות:
"rows": [ [ "2", "Forever Hold Your Peace" ], [ "2", "Go, Go, Go" ], [ "1", "Green" ], [ "3", "Terrified" ], [ "1", "Total Junk" ] ]
הוספת אינדקס באמצעות פסקה STORING
בדוגמה הקודמת לקריאה לא נכללה העמודה MarketingBudget. הסיבה לכך היא שממשק הקריאה של Spanner לא תומך בצירוף של אינדקס לטבלת נתונים כדי לחפש ערכים שלא מאוחסנים באינדקס.
יוצרים הגדרה חלופית של AlbumsByAlbumTitle ששומרת עותק של MarketingBudget באינדקס.
מוסיפים אינדקס STORING באמצעות updateDdl.
- לוחצים על
projects.instances.databases.updateDdl. בקטע database (מסד נתונים), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-dbבקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "statements": [ "CREATE INDEX AlbumsByAlbumTitle2 ON Albums(AlbumTitle) STORING (MarketingBudget)" ] }לוחצים על Execute. הפעולה עשויה להימשך כמה דקות, גם אחרי שקריאת ה-REST מחזירה תשובה. התגובה מחזירה פעולה ממושכת. אפשר להריץ שאילתה על הפעולה הזו כדי לבדוק את הסטטוס שלה.
עכשיו מריצים קריאה שמביאה את כל העמודות AlbumId, AlbumTitle ו-MarketingBudget מהאינדקס AlbumsByAlbumTitle2:
- לוחצים על
projects.instances.databases.sessions.read. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "table": "Albums", "columns": [ "AlbumId", "AlbumTitle", "MarketingBudget" ], "keySet": { "all": true }, "index": "AlbumsByAlbumTitle2" }לוחצים על Execute. התגובה כוללת את השורות הבאות:
"rows": [ [ "2", "Forever Hold Your Peace", "500000" ], [ "2", "Go, Go, Go", null ], [ "1", "Green", null ], [ "3", "Terrified", null ], [ "1", "Total Junk", "100000" ] ]
אחזור נתונים באמצעות עסקאות לקריאה בלבד
כדי לבצע יותר מקריאה אחת באותו חותם זמן, משתמשים בטרנזקציות לקריאה בלבד. העסקאות האלה מתבססות על קידומת עקבית של היסטוריית אישור העסקאות, כך שהאפליקציה תמיד מקבלת נתונים עקביים.
יצירת טרנזקציה לקריאה בלבד
- לוחצים על
projects.instances.databases.sessions.beginTransaction. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע Request Body (גוף הבקשה), משתמשים בערכים הבאים:
{ "options": { "readOnly": {} } }לוחצים על Execute.
בתשובה מוצג המזהה של העסקה שיצרתם.
אפשר להשתמש בעסקת הקריאה בלבד כדי לאחזר נתונים בחותמת זמן עקבית, גם אם הנתונים השתנו אחרי שיצרתם את עסקת הקריאה בלבד.
הרצת שאילתה באמצעות טרנזקציה לקריאה בלבד
- לוחצים על
projects.instances.databases.sessions.executeSql. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "sql": "SELECT SingerId, AlbumId, AlbumTitle FROM Albums", "transaction": { "id": "<var>TRANSACTION_ID</var>" } }לוחצים על Execute. התגובה תכלול שורות שדומות לאלה:
"rows": [ [ "2", "2", "Forever Hold Your Peace" ], [ "1", "2", "Go, Go, Go" ], [ "2", "1", "Green" ], [ "2", "3", "Terrified" ], [ "1", "1", "Total Junk" ] ]
קריאה באמצעות טרנזקציה לקריאה בלבד
- לוחצים על
projects.instances.databases.sessions.read. בשדה session, מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-db/sessions/<var>SESSION</var>בקטע גוף הבקשה, משתמשים בערכים הבאים:
{ "table": "Albums", "columns": [ "SingerId", "AlbumId", "AlbumTitle" ], "keySet": { "all": true }, "transaction": { "id": "<var>TRANSACTION_ID</var>" } }לוחצים על Execute. התגובה תכלול שורות שדומות לאלה:
"rows": [ [ "1", "1", "Total Junk" ], [ "1", "2", "Go, Go, Go" ], [ "2", "1", "Green" ], [ "2", "2", "Forever Hold Your Peace" ], [ "2", "3", "Terrified" ] ]
Spanner תומך גם בעסקאות קריאה-כתיבה, שמבצעות קבוצה של קריאות וכתיבות באופן אטומי בנקודה לוגית אחת בזמן. מידע נוסף מופיע במאמר בנושא טרנזקציות של קריאה וכתיבה. (הפונקציונליות של Try-It! לא מתאימה להדגמה של טרנזקציה של קריאה-כתיבה).
הסרת המשאבים
כדי להימנע מחיובים נוספים בחשבון Google Cloud על המשאבים שבהם השתמשתם במדריך הזה, צריך להסיר את מסד הנתונים ולמחוק את המופע שיצרתם.
שחרור מסד נתונים
- לוחצים על
projects.instances.databases.dropDatabase. בשדה name (שם), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instance/databases/example-dbלוחצים על Execute.
מחיקת מכונה
- לוחצים על
projects.instances.delete. בשדה name (שם), מזינים:
projects/<var>PROJECT_ID</var>/instances/test-instanceלוחצים על Execute.
המאמרים הבאים
- גישה ל-Spanner במכונה וירטואלית: יוצרים מכונה וירטואלית עם גישה למסד הנתונים של Spanner.
- מידע נוסף על מושגים ב-Spanner