אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X. info
גרסה 2.0.0
ביצוע פעולות הטמעה, שאילתות ועדכונים במסד נתונים של Cloud Spanner.
התוכן הזה מכיל מידע שיעזור לכם להגדיר את התוסף הזה ולהשתמש בו. לפני שמשתמשים בתוסף משרת proxy של API באמצעות מדיניות ExtensionCallout, צריך:
יוצרים מכונה של Cloud Spanner, כפי שמתואר בקטע יצירה וניהול של מכונות, ויוצרים מסד נתונים.
אחרי שיוצרים את המכונה ואת מסד הנתונים, נותנים הרשאה לגישה למסד הנתונים לחשבון השירות ב-GCP שמייצג את התוסף. מידע נוסף על התפקיד שבו צריך להשתמש זמין במאמר תפקידים ב-Cloud Spanner. מידע נוסף על בקרת הגישה ב-Cloud Spanner זמין במאמרים החלת תפקידים ב-IAM ובקרת גישה ב-Cloud Spanner.
אם יש לכם חשבון שירות עם הרשאה לרמת הגישה הרצויה למסד הנתונים, אתם יכולים להשתמש במסוף GCP כדי ליצור מפתח לחשבון השירות. כשמגדירים את התוסף הזה, משתמשים בתוכן של קובץ ה-JSON של המפתח שנוצר.
משתמשים בתוכן של קובץ ה-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 שנוצר מקובץ המפתח של חשבון השירות. | ללא. | כן. |