คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
เวอร์ชัน 2.0.2
ดำเนินการแทรก ค้นหา และอัปเดตในฐานข้อมูล Cloud Spanner
เนื้อหานี้เป็นข้อมูลอ้างอิงสำหรับการกำหนดค่าและการใช้ส่วนขยายนี้ ก่อนใช้ส่วนขยายจากพร็อกซี API โดยใช้นโยบาย ExtensionCallout คุณต้องทำดังนี้
สร้างอินสแตนซ์ Cloud Spanner ตามที่อธิบายไว้ในการสร้างและการจัดการอินสแตนซ์ แล้วสร้างฐานข้อมูล
เมื่อมีอินสแตนซ์และฐานข้อมูลแล้ว ให้ให้สิทธิ์ในการเข้าถึงฐานข้อมูลแก่บัญชีบริการของ Google Cloud ที่แสดงถึงส่วนขยายของคุณ ดูข้อมูลเพิ่มเติมเกี่ยวกับบทบาทที่จะใช้ได้ที่บทบาทของ Cloud Spanner ดูข้อมูลเพิ่มเติมเกี่ยวกับการควบคุมการเข้าถึง Cloud Spanner ได้ที่การใช้บทบาท IAM และการควบคุมการเข้าถึงสำหรับ Cloud Spanner
เมื่อมีบัญชีบริการที่มีสิทธิ์สำหรับระดับการเข้าถึงฐานข้อมูลที่ต้องการแล้ว ให้ใช้คอนโซล Google Cloud เพื่อสร้างคีย์สำหรับบัญชีบริการ ใช้เนื้อหาของไฟล์ 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 policy จะกำหนดตัวแปร 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 ของส่วนขยายจะเพิ่มผู้ใช้ใหม่ลงในตารางผู้ใช้ ระบบจะเพิ่ม 1 แถว
<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>
พารามิเตอร์คำขอ
| พารามิเตอร์ | คำอธิบาย | ประเภท | ค่าเริ่มต้น | ต้องระบุ |
|---|---|---|---|---|
| ชื่อตาราง | ตารางในฐานข้อมูลที่ควรแทรกแถว | สตริง | ไม่มี | ได้ |
| แถว | แถวที่จะแทรกแสดงเป็นอาร์เรย์ในrowsออบเจ็กต์ JSON |
อาร์เรย์ | ไม่มี | ได้ |
การตอบกลับ
ไม่มี
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 ด้วยค่าใหม่ อัปเดต 1 แถวแล้ว
<Action>update</Action>
<Input><![CDATA[{
"tableName" : "user",
"rows": [{
"username":"Liz456",
"email":"lizzard@example.com"
}]
}]]></Input>
พารามิเตอร์คำขอ
| พารามิเตอร์ | คำอธิบาย | ประเภท | ค่าเริ่มต้น | ต้องระบุ |
|---|---|---|---|---|
| ชื่อตาราง | ตารางในฐานข้อมูลที่ควรมีการอัปเดตแถว | สตริง | ไม่มี | ได้ |
| แถว | อาร์เรย์ของข้อมูลแถวที่จะอัปเดต เอนทิตีแต่ละรายการในอาร์เรย์ควรมีค่ารหัสที่ไม่ซ้ำกัน (เช่น คีย์หลัก) สำหรับแถวที่จะอัปเดต | อาร์เรย์ | ไม่มี | ได้ |
การตอบกลับ
ไม่มี
ข้อมูลอ้างอิงการกำหนดค่า
ใช้ข้อมูลต่อไปนี้เมื่อกำหนดค่าและติดตั้งใช้งานส่วนขยายนี้เพื่อใช้ในพร็อกซี API ดูขั้นตอนการกำหนดค่าส่วนขยายโดยใช้คอนโซล Apigee ได้ที่การเพิ่มและการกำหนดค่าส่วนขยาย
คุณสมบัติส่วนขยายทั่วไป
พร็อพเพอร์ตี้ต่อไปนี้มีอยู่ในส่วนขยายทุกรายการ
| พร็อพเพอร์ตี้ | คำอธิบาย | ค่าเริ่มต้น | ต้องระบุ |
|---|---|---|---|
name |
ชื่อที่คุณกําหนดให้การกําหนดค่านี้ของส่วนขยาย | ไม่มี | ได้ |
packageName |
ชื่อแพ็กเกจส่วนขยายที่ระบุโดย Apigee Edge | ไม่มี | ได้ |
version |
หมายเลขเวอร์ชันของแพ็กเกจส่วนขยายที่คุณกําหนดค่าส่วนขยาย | ไม่มี | ได้ |
configuration |
ค่าการกําหนดค่าเฉพาะสําหรับส่วนขยายที่คุณกําลังเพิ่ม ดูพร็อพเพอร์ตี้สําหรับแพ็กเกจส่วนขยายนี้ | ไม่มี | ได้ |
พร็อพเพอร์ตี้สำหรับแพ็กเกจส่วนขยายนี้
ระบุค่าสำหรับพร็อพเพอร์ตี้การกำหนดค่าต่อไปนี้ที่เฉพาะเจาะจงสำหรับส่วนขยายนี้
| พร็อพเพอร์ตี้ | คำอธิบาย | ค่าเริ่มต้น | ต้องระบุ |
|---|---|---|---|
| projectId | รหัสโปรเจ็กต์ Google Cloud ที่มีฐานข้อมูล | ไม่มี | ได้ |
| instanceId | รหัสของอินสแตนซ์ Cloud Spanner ในโปรเจ็กต์ Google Cloud | ไม่มี | ได้ |
| databaseId | รหัสของฐานข้อมูล Cloud Spanner | ไม่มี | ได้ |
| ข้อมูลเข้าสู่ระบบ | เมื่อป้อนในคอนโซล Apigee Edge นี่คือเนื้อหาของไฟล์คีย์บัญชีบริการ เมื่อส่งโดยใช้ Management API ค่าจะเป็นค่าที่เข้ารหัส Base64 ซึ่งสร้างจากไฟล์คีย์บัญชีบริการ | ไม่มี | ได้ |