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

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

גרסה 2.0.0

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

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

  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 באמצעות מדיניות 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>

פרמטרים של בקשות

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