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

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

גרסה 2.0.2

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

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

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

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

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

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

מידע על Cloud Spanner

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

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

דוגמאות

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

הוספת נתונים

בדוגמה הבאה, הפעולה 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>

המדיניות ExtensionCallout הבאה מריצה שאילתה במסד הנתונים באמצעות התוכן של המשתנה 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>

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

פרמטר תיאור סוג ברירת מחדל חובה
שם טבלה הטבלה במסד הנתונים שאליה צריך להוסיף את השורות. מחרוזת ללא. כן.
שורות השורות להוספה, שמוצגות כמערך באובייקט 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 של הפעולה הזו. מחרוזת ללא. כן.
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>

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

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

תשובה

ללא.

הסבר על ההגדרות

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

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

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

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

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

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

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