סיומת מסד נתונים 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>

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

תשובה

ללא.

querySQL

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

תשובה

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

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

update

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

תחביר

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

תשובה

ללא.

סימוכין לתצורה

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

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

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

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

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

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

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