คุณกําลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X info
เวอร์ชัน 2.0.0
ดำเนินการแทรก ค้นหา และอัปเดตในฐานข้อมูล 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 ต่อไปนี้จะดำเนินการค้นหาฐานข้อมูลโดยใช้เนื้อหาของตัวแปร 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 | ตารางในฐานข้อมูลที่ควรแทรกแถว | สตริง | ไม่มี | ได้ |
แถว | แถวที่จะแทรกซึ่งแสดงเป็นอาร์เรย์ในออบเจ็กต์ 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 ของการดำเนินการนี้ |
สตริง | ไม่มี | ได้ |
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 | ไม่มี | ได้ |
databaseId | รหัสของฐานข้อมูล Cloud Spanner | ไม่มี | ได้ |
ข้อมูลเข้าสู่ระบบ | เมื่อป้อนในคอนโซล Apigee Edge เนื้อหาของไฟล์คีย์บัญชีบริการจะมีลักษณะดังนี้ เมื่อส่งผ่าน Management API ค่าจะเป็นค่าที่เข้ารหัส Base64 ที่สร้างขึ้นจากไฟล์คีย์ของบัญชีบริการ | ไม่มี | ได้ |