คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
เวอร์ชัน 1.4.1
ดำเนินการแทรก ค้นหา และอัปเดตบนฐานข้อมูล Cloud Spanner
เนื้อหานี้ให้ข้อมูลอ้างอิงสำหรับการกำหนดค่าและใช้ส่วนขยายนี้ ก่อนที่จะใช้ส่วนขยายจากพร็อกซี API โดยใช้นโยบาย Extensionต้องระบุ คุณต้องทำดังนี้
สร้างอินสแตนซ์ Cloud Spanner ตามที่อธิบายไว้ในการสร้างและการจัดการอินสแตนซ์ และสร้างฐานข้อมูล
เมื่อคุณมีอินสแตนซ์และฐานข้อมูลแล้ว ให้ให้สิทธิ์ในการเข้าถึงฐานข้อมูลไปยังบัญชีบริการ GCP ที่แสดงถึงส่วนขยายของคุณ โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับบทบาทที่จะใช้ที่หัวข้อบทบาทของ Cloud Spanner ดูข้อมูลเพิ่มเติมเกี่ยวกับการควบคุมการเข้าถึง Cloud Spanner ได้ที่การใช้บทบาท IAM และการควบคุมการเข้าถึงสำหรับ Cloud Spanner
เมื่อมีบัญชีบริการที่มีสิทธิ์ในการเข้าถึงฐานข้อมูลที่คุณต้องการ ให้ใช้คอนโซล GCP เพื่อสร้างคีย์สำหรับบัญชีบริการ ใช้เนื้อหาของไฟล์ JSON คีย์ที่ได้เมื่อคุณกำหนดค่าส่วนขยายนี้
ใช้เนื้อหาของไฟล์ JSON คีย์ที่ได้มาเมื่อเพิ่มและกำหนดค่าส่วนขยายโดยใช้การอ้างอิงการกำหนดค่า
เกี่ยวกับ Cloud Spanner
Cloud Spanner เป็นบริการฐานข้อมูลเชิงสัมพันธ์ที่เป็นประโยชน์สำหรับข้อมูลเชิงสัมพันธ์ แบบมีโครงสร้าง และแบบกึ่งโครงสร้าง ที่ต้องมีความพร้อมใช้งานสูง มีความสอดคล้องอย่างมาก และการอ่านและเขียนเกี่ยวกับการดำเนินการ
หากคุณเพิ่งเริ่มต้นใช้งาน Cloud Spanner การเริ่มต้นอย่างรวดเร็วในเอกสารของ Cloud Spanner คือจุดเริ่มต้นที่ดี
ลองฟัง
ตัวอย่างต่อไปนี้จะแสดงวิธีกำหนดค่าการสนับสนุนสำหรับการทำงานของส่วนขยาย Cloud Spanner โดยใช้นโยบาย Extension callout
เพิ่มข้อมูล
ในตัวอย่างต่อไปนี้ การดำเนินการ 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>
นโยบาย ExtensionExtension ต่อไปนี้จะดำเนินการค้นหากับฐานข้อมูล โดยใช้เนื้อหาของตัวแปร 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>
พารามิเตอร์คำขอ
พารามิเตอร์ | คำอธิบาย | Type | ค่าเริ่มต้น | จำเป็น |
---|---|---|---|---|
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>
พารามิเตอร์คำขอ
พารามิเตอร์ | คำอธิบาย | Type | ค่าเริ่มต้น | จำเป็น |
---|---|---|---|---|
sql | การค้นหา SQL ที่จะดำเนินการ คุณสามารถระบุพารามิเตอร์ที่มีชื่อพารามิเตอร์ @-prepended ได้ ชื่อพารามิเตอร์ดังกล่าวต้องตรงกับคีย์ในพารามิเตอร์ 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>
พารามิเตอร์คำขอ
พารามิเตอร์ | คำอธิบาย | Type | ค่าเริ่มต้น | จำเป็น |
---|---|---|---|---|
tableName | ตารางในฐานข้อมูลที่ควรอัปเดตแถว | สตริง | ไม่มี | ใช่ |
แถว | อาร์เรย์ข้อมูลแถวที่จะอัปเดต เอนทิตีแต่ละรายการในอาร์เรย์ควรมีค่ารหัสที่ไม่ซ้ำกัน (เช่น คีย์หลัก) สำหรับแถวที่ต้องการอัปเดต | อาร์เรย์ | ไม่มี | ใช่ |
คำตอบ
ไม่มี
ข้อมูลอ้างอิงการกำหนดค่า
ใช้ข้อมูลต่อไปนี้เมื่อคุณกำหนดค่าและทำให้ส่วนขยายนี้ใช้งานได้ เพื่อใช้ในพร็อกซี API โปรดดูขั้นตอนการกำหนดค่าส่วนขยายโดยใช้คอนโซล Apigee ในการเพิ่มและการกำหนดค่าส่วนขยาย
คุณสมบัติส่วนขยายที่พบบ่อย
พร็อพเพอร์ตี้ต่อไปนี้มีอยู่ในส่วนขยายทุกรายการ
พร็อพเพอร์ตี้ | คำอธิบาย | ค่าเริ่มต้น | ต้องระบุ |
---|---|---|---|
name |
ชื่อที่คุณกําหนดให้การกําหนดค่านี้ของส่วนขยาย | ไม่มี | ได้ |
packageName |
ชื่อแพ็กเกจส่วนขยายที่ระบุโดย Apigee Edge | ไม่มี | ได้ |
version |
หมายเลขเวอร์ชันของแพ็กเกจส่วนขยายที่คุณกําหนดค่าส่วนขยาย | ไม่มี | ได้ |
configuration |
ค่าการกําหนดค่าเฉพาะสําหรับส่วนขยายที่คุณกําลังเพิ่ม ดูพร็อพเพอร์ตี้สําหรับแพ็กเกจส่วนขยายนี้ | ไม่มี | ได้ |
พร็อพเพอร์ตี้สำหรับแพ็กเกจส่วนขยายนี้
ระบุค่าสำหรับพร็อพเพอร์ตี้การกำหนดค่าต่อไปนี้ที่เจาะจงสำหรับส่วนขยายนี้
พร็อพเพอร์ตี้ | คำอธิบาย | ค่าเริ่มต้น | จำเป็น |
---|---|---|---|
projectId | รหัสโปรเจ็กต์ GCP ที่มีฐานข้อมูล | ไม่มี | ใช่ |
instanceId | รหัสของอินสแตนซ์ Cloud Spanner ในโปรเจ็กต์ GCP | ไม่มี | ใช่ |
databaseId | รหัสของฐานข้อมูล Cloud Spanner | ไม่มี | ใช่ |
ข้อมูลเข้าสู่ระบบ | ซึ่งเมื่อป้อนในคอนโซล Apigee Edge คือเนื้อหาของไฟล์คีย์บัญชีบริการ เมื่อส่งผ่าน API การจัดการ ค่าดังกล่าวคือค่าที่เข้ารหัสแบบ Base64 ซึ่งสร้างขึ้นจากไฟล์คีย์บัญชีบริการ | ไม่มี | ใช่ |