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