ส่วนขยายฐานข้อมูล Google Cloud Spanner

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

เวอร์ชัน 1.4.1

ดำเนินการแทรก ค้นหา และอัปเดตบนฐานข้อมูล Cloud Spanner

เนื้อหานี้มีข้อมูลอ้างอิงสำหรับการกำหนดค่าและการใช้ส่วนขยายนี้ ก่อนใช้ส่วนขยายจากพร็อกซี API โดยใช้เมธอด นโยบายส่วนขยายไฮไลต์ คุณต้องดำเนินการต่อไปนี้

  1. สร้างอินสแตนซ์ Cloud Spanner ดังที่อธิบายไว้ในการสร้างและจัดการอินสแตนซ์ และสร้างฐานข้อมูล

  2. เมื่อมีอินสแตนซ์และฐานข้อมูลแล้ว ให้ให้สิทธิ์ในการเข้าถึงฐานข้อมูลไปยังบัญชีบริการ GCP ที่แสดงส่วนขยาย ดูข้อมูลเพิ่มเติมเกี่ยวกับบทบาทที่จะใช้ได้ที่บทบาท Cloud Spanner ดูข้อมูลเพิ่มเติมเกี่ยวกับการควบคุมการเข้าถึง Cloud Spanner ได้ที่การใช้บทบาท IAM และการควบคุมการเข้าถึงสำหรับ Cloud Spanner

  3. เมื่อมีบัญชีบริการที่มีสิทธิ์ในการเข้าถึงฐานข้อมูลที่คุณต้องการ ให้ใช้คอนโซล GCP เพื่อสร้างคีย์สำหรับบัญชีบริการ ใช้เนื้อหาของไฟล์ JSON คีย์ที่ได้เมื่อคุณกำหนดค่าส่วนขยายนี้

  4. ใช้เนื้อหาของไฟล์ 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 ซึ่งสร้างขึ้นจากไฟล์คีย์บัญชีบริการ ไม่มี ได้