คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่
เอกสารประกอบเกี่ยวกับ Apigee X. ข้อมูล
เวอร์ชัน 1.4.1
ดำเนินการแทรก ค้นหา และอัปเดตบนฐานข้อมูล Cloud Spanner
เนื้อหานี้มีข้อมูลอ้างอิงสำหรับการกำหนดค่าและการใช้ส่วนขยายนี้ ก่อนใช้ส่วนขยายจากพร็อกซี API โดยใช้เมธอด นโยบายส่วนขยายไฮไลต์ คุณต้องดำเนินการต่อไปนี้
สร้างอินสแตนซ์ Cloud Spanner ดังที่อธิบายไว้ในการสร้างและจัดการอินสแตนซ์ และสร้างฐานข้อมูล
เมื่อมีอินสแตนซ์และฐานข้อมูลแล้ว ให้ให้สิทธิ์ในการเข้าถึงฐานข้อมูลไปยังบัญชีบริการ GCP ที่แสดงส่วนขยาย ดูข้อมูลเพิ่มเติมเกี่ยวกับบทบาทที่จะใช้ได้ที่บทบาท Cloud Spanner ดูข้อมูลเพิ่มเติมเกี่ยวกับการควบคุมการเข้าถึง Cloud Spanner ได้ที่การใช้บทบาท IAM และการควบคุมการเข้าถึงสำหรับ Cloud Spanner
เมื่อมีบัญชีบริการที่มีสิทธิ์ในการเข้าถึงฐานข้อมูลที่คุณต้องการ ให้ใช้คอนโซล GCP เพื่อสร้างคีย์สำหรับบัญชีบริการ ใช้เนื้อหาของไฟล์ JSON คีย์ที่ได้เมื่อคุณกำหนดค่าส่วนขยายนี้
ใช้เนื้อหาของไฟล์ 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>
นโยบาย ชิ้นงานข้อความไฮไลต์ ต่อไปนี้จะดำเนินการค้นหาในฐานข้อมูล โดยใช้เนื้อหาของตัวแปร 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>
พารามิเตอร์คำขอ
พารามิเตอร์ | คำอธิบาย | ประเภท | ค่าเริ่มต้น | ต้องระบุ |
---|---|---|---|---|
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 ของการกระทำนี้ |
สตริง | ไม่มี | ได้ |
พารามิเตอร์ | ออบเจ็กต์ที่มีคีย์และค่าคือชื่อและค่าของพารามิเตอร์ที่ใช้ในการค้นหา 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 |
ค่าการกําหนดค่าเฉพาะสําหรับส่วนขยายที่คุณกําลังเพิ่ม ดูพร็อพเพอร์ตี้สําหรับแพ็กเกจส่วนขยายนี้ | ไม่มี | ได้ |
พร็อพเพอร์ตี้ของแพ็กเกจส่วนขยายนี้
ระบุค่าสำหรับพร็อพเพอร์ตี้การกำหนดค่าต่อไปนี้เฉพาะสำหรับส่วนขยายนี้
พร็อพเพอร์ตี้ | คำอธิบาย | ค่าเริ่มต้น | ต้องระบุ |
---|---|---|---|
projectId | รหัสของโปรเจ็กต์ GCP ที่มีฐานข้อมูล | ไม่มี | ได้ |
instanceId | รหัสของอินสแตนซ์ Cloud Spanner ในโปรเจ็กต์ GCP | ไม่มี | ได้ |
รหัสฐานข้อมูล | รหัสของฐานข้อมูล Cloud Spanner | ไม่มี | ได้ |
ข้อมูลเข้าสู่ระบบ | เมื่อป้อนในคอนโซล Apigee Edge นี่จะเป็นเนื้อหาของไฟล์คีย์บัญชีบริการของคุณ เมื่อส่งผ่าน API การจัดการ ค่านี้จะเป็นค่าที่เข้ารหัสฐาน 64 ซึ่งสร้างขึ้นจากไฟล์คีย์บัญชีบริการ | ไม่มี | ได้ |