סיומת מסד נתונים Google Cloud Spanner

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

גרסה 1.4.1

ביצוע פעולות הוספה, שאילתות ועדכון במסד נתונים של Cloud Spanner.

התוכן הזה כולל חומר עזר להגדרת התוסף הזה ולשימוש בו. לפני השימוש בתוסף משרת proxy ל-API באמצעות המדיניות בנושא תוספי יתרונות מרכזיים, עליך:

  1. יוצרים מכונה של Cloud Spanner, כפי שמתואר במאמר יצירה וניהול של מכונות, ויוצרים מסד נתונים.

  2. אחרי שיש לכם את המכונה ומסד הנתונים, מעניקים הרשאה לגישה למסד הנתונים שלכם לחשבון השירות של GCP שמייצג את התוסף. מידע נוסף על התפקיד שבו אפשר להשתמש מופיע במאמר תפקידים ב-Cloud Spanner. מידע נוסף על בקרת הגישה ל-Cloud Spanner זמין במאמרים החלת תפקידי IAM ובקרת גישה ל-Cloud Spanner.

  3. אם יש לכם חשבון שירות עם הרשאה לרמת הגישה הרצויה למסד הנתונים שלכם, אתם יכולים להשתמש במסוף GCP כדי ליצור מפתח לחשבון השירות. כשמגדירים את התוסף, משתמשים בתוכן של קובץ ה-JSON של המפתח שנוצר.

  4. משתמשים בתוכן של קובץ ה-JSON של המפתח שנוצר כשמוסיפים ומגדירים את התוסף באמצעות קובץ התצורה.

מידע על Cloud Spanner

Cloud Spanner הוא שירות של מסד נתונים רלציוני שימושי לנתונים יחסיים, מובנים או מובנים למחצה שדורשים זמינות גבוהה, עקביות חזקה וקריאה וכתיבה בטרנזקציות.

אם אתם רק מתחילים להשתמש ב-Cloud Spanner, כדאי להתחיל במדריך למתחילים במסמכי התיעוד של Cloud Spanner.

דוגמאות

הדוגמאות הבאות ממחישות איך להגדיר תמיכה בפעולות של תוסף Cloud Spanner באמצעות המדיניות בנושא יתרונות מרכזיים של תוסף.

הוספת נתונים

בדוגמה הבאה, הפעולה insert של התוסף מוסיפה משתמש חדש לטבלת המשתמשים.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Insert-New-User">
    <DisplayName>Insert New User</DisplayName>
    <Connector>spanner-users-products</Connector>
    <Action>insert</Action>
    <Input><![CDATA[{
        "tableName" : "user",
        "rows" : [{
          "username": "jonesy42",
          "firstName": "Floyd",
          "lastName": "Jones",
          "address": "3695 Auctor Street",
          "city": "Gresham",
          "region": "OR",
          "postalCode": "12693",
          "email": "floydster@example.com"
      }]
  }]]></Input>
</ConnectorCallout>

לפרטים

בדוגמה הזו, שאילתה מאחזרת ערכים של שם משתמש ואימייל מהטבלה user.

קודם כל, מדיניות AssignMessage מקצה משתנה postal.code.value לשימוש בתנאי WHERE של שאילתה. זאת דוגמה. סביר להניח שהמדיניות תגדיר את הערך על סמך פרמטרים של בקשת לקוח.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign-Postal-Code">
    <AssignTo createNew="true" transport="http" type="request"/>
    <AssignVariable>
        <Name>postal.code</Name>
        <Value>86519</Value>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>

מדיניות תוסף היתרונות המרכזיים הבאה מפעילה שאילתה על מסד הנתונים, באמצעות התוכן של המשתנה postal.code.value במשפט WHERE.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Get-User-Data">
    <DisplayName>Get User Data</DisplayName>
    <Connector>spanner-users-products</Connector>
    <Action>querySQL</Action>
    <Input><![CDATA[{
      "sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
      "params" : {
        "postalCode" : "{postal.code.value}"
      }
    }]]></Input>
  <Output>spanner.userdata.retrieved</Output>
</ConnectorCallout>

לאחר מכן, במדיניות assignMessage הבאה משתמשת בתשובה של התוסף, מאוחסנים במשתנה spanner.userdata.retrieved, כי התשובה הוחזרה ללקוח.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Get-Query-Response-Data">
    <DisplayName>Get Query Response Data</DisplayName>
    <AssignTo type="response" createNew="false"/>
    <Set>
        <Payload contentType="application/json">{spanner.userdata.retrieved}</Payload>
    </Set>
</AssignMessage>

בדוגמה הזו, נתוני התגובה מוחזרים כ-JSON, כמו בדוגמה הבאה.

{
  "rows": [
    {
      "username": "freewill444",
      "email": "freewill@example.com"
    }
  ]
}

עדכון נתונים

בדוגמה הזו, הרכיב <Input> מכיל את username – המפתח הראשי של הטבלה – וערך חדש לעמודה email.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ConnectorCallout async="false" continueOnError="true" enabled="true" name="Update-User-Data">
    <DisplayName>Update User Data</DisplayName>
    <Connector>spanner-users-products</Connector>
    <Action>update</Action>
    <Input><![CDATA[{
        "tableName" : "user",
        "rows": [{
            "username":"Liz456",
            "email":"lizzard@example.com"
        }]
    }]]></Input>
</ConnectorCallout>

פעולות

insert

מאכלס את השורות שצוינו למסד הנתונים.

תחביר

<Action>insert</Action>
<Input><![CDATA[{
  "tableName" : "table-to-insert-into",
  "rows" : "rows-to-insert"
}]]></Input>

דוגמה

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

<Action>insert</Action>
<Input><![CDATA[{
    "tableName" : "user",
    "rows" : [{
      "username": "jonesy42",
      "firstName": "Floyd",
      "lastName": "Jones",
      "address": "3695 Auctor Street",
      "city": "Gresham",
      "region": "OR",
      "postalCode": "12693",
      "email": "floydster@example.com"
  }]
}]]></Input>

פרמטרים של בקשה

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

תשובה

ללא.

querySQL

שליחת שאילתות על מסד הנתונים באמצעות הצהרת SQL עם הפרמטרים שצוינו. הפרמטרים ניתנים בהצהרה של SQL עם שמות המסומנים ב-@; ערכי הפרמטרים מצוינים בפרמטר params של הפעולה הזו.

למידע נוסף על התחביר של שאילתות ב-Cloud Spanner, אפשר לעיין במאמר בנושא התחביר של השאילתה.

תחביר

<Action>querySQL</Action>
<Input><![CDATA[{
  "sql" : "sql-query-statement",
  "params" : {
    "param1" : "columnValue"
  }
}]]></Input>

דוגמה

בדוגמה הזו, שאילתה מאחזרת את ערכי העמודות username ו-email מהטבלה user. הצהרת ה-SQL מציינת פרמטר postalCode המוגדר ממשתנה הזרימה postal.code.value.

<Action>querySQL</Action>
<Input><![CDATA[{
  "sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
  "params" : {
    "postalCode" : "{postal.code.value}"
  }
}]]></Input>

פרמטרים של בקשה

פרמטר תיאור סוג ברירת מחדל חובה
sql שאילתת ה-SQL שצריך להפעיל. אפשר לציין פרמטרים עם שמות פרמטרים עם תחילית @. שמות הפרמטרים האלה חייבים להתאים למפתחות בפרמטר params של הפעולה הזו. מחרוזת ללא. כן.
פרמטרים אובייקט שהמפתחות והערכים שלו הם השמות והערכים של הפרמטרים שמשמשים בשאילתת ה-SQL. כאן אפשר לציין כמה פרמטרים. אובייקט ללא. לא.

תשובה

אובייקט rows שמכיל מערך של צמדי שם-ערך של עמודה שהשאילתה מחזירה. לדוגמה:

{
  "rows": [
    {
      "username": "freewill444",
      "email": "freewill@example.com"
    }
  ]
}

עדכון

מעדכן שורות במסד הנתונים עם הנתונים שצוינו.

תחביר

<Input><![CDATA[{
  "tableName" : "table-with-rows-to-update",
  "rows" : "rows-to-update"
}]]></Input>

דוגמה

בדוגמה הזו, כתובת האימייל של המשתמש ש-username שלו היא Liz456 מעודכנת בערך חדש. עודכנה שורה אחת.

<Action>update</Action>
<Input><![CDATA[{
  "tableName" : "user",
  "rows": [{
      "username":"Liz456",
      "email":"lizzard@example.com"
  }]
}]]></Input>

פרמטרים של בקשה

פרמטר תיאור סוג ברירת מחדל חובה
tableName הטבלה במסד הנתונים שבה צריך לעדכן את השורות. מחרוזת ללא. כן.
שורות מערך של נתוני שורה לעדכון. כל ישות במערך צריכה להכיל את ערך המזהה הייחודי (כמו המפתח הראשי) כדי שהשורה תתעדכן. מערך ללא. כן.

תשובה

ללא.

חומר עזר על הגדרות אישיות

כשאתם מגדירים ופורסים את התוסף הזה לשימוש בשרתי proxy ל-API, יש להשתמש באפשרויות הבאות. להוראות להגדרת תוסף באמצעות מסוף Apigee, ראו הוספה והגדרה של תוסף.

מאפייני תוספים נפוצים

המאפיינים הבאים קיימים בכל תוסף.

נכס תיאור ברירת המחדל נדרש
name השם שבחרת לתצורה הזו של התוסף. ללא כן
packageName השם של חבילת התוסף כפי שהוא סופק על ידי Apigee Edge. ללא כן
version מספר הגרסה של חבילת התוסף שממנה מגדירים את התוסף. ללא כן
configuration ערך הגדרה ספציפי לתוסף שרוצים להוסיף. מאפיינים לחבילת תוספים זו ללא כן

מאפיינים של חבילת התוספים הזו

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

נכס תיאור ברירת מחדל חובה
projectId המזהה של פרויקט GCP שמכיל את מסד הנתונים. ללא. כן.
instanceId המזהה של המכונה של Cloud Spanner בפרויקט GCP. ללא. כן.
databaseId המזהה של מסד הנתונים ב-Cloud Spanner. ללא. כן.
פרטי כניסה כשמזינים את הקוד במסוף Apigee Edge, זה התוכן של קובץ המפתח של חשבון השירות. כשהוא נשלח דרך ממשק ה-API לניהול, זה ערך בקידוד base64 שנוצר מקובץ המפתח של חשבון השירות. ללא. כן.