Google Cloud Spanner डेटाबेस एक्सटेंशन

आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है इस पेज पर जाएं Apigee X दस्तावेज़.
जानकारी

वर्शन 1.2.1

क्लाउड स्पैनर डेटाबेस पर इंसर्ट करें, क्वेरी करें, और अपडेट करें.

इस कॉन्टेंट में, इस एक्सटेंशन को कॉन्फ़िगर करने और इसका इस्तेमाल करने के बारे में जानकारी दी गई है. एपीआई प्रॉक्सी के एक्सटेंशन का इस्तेमाल करने से पहले एक्सटेंशन कॉल आउट नीति के लिए, आपको ये काम करने होंगे:

  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 नीति के तहत क्वेरी WHERE क्लॉज़ में इस्तेमाल करने के लिए, postal.code.value वैरिएबल असाइन किया जाए. यह एक उदाहरण है. आपकी नीति, क्लाइंट के अनुरोध के पैरामीटर के आधार पर वैल्यू को सेट कर सकती है.

<?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>

नीचे दी गई एक्सटेंशन कॉलआउट नीति, WHERE क्लॉज़ में postal.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>

कार्रवाइयां

इंसर्ट करें

तय की गई पंक्तियों को डेटाबेस में शामिल करता है.

सिंटैक्स

<Action>insert</Action>
<Input><![CDATA[{
  "tableName" : "table-to-insert-into",
  "rows" : "rows-to-insert"
}]]></Input>

उदाहरण

यहां दिए गए उदाहरण में, एक्सटेंशन की insert कार्रवाई, उपयोगकर्ता टेबल में एक नया उपयोगकर्ता जोड़ती है. एक पंक्ति जोड़ी गई.

<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 ऑब्जेक्ट में, कलेक्शन के तौर पर दिखाया जाता है. Array कोई नहीं. हां.

जवाब

कोई नहीं.

querySQL

तय किए गए पैरामीटर के साथ एसक्यूएल स्टेटमेंट का इस्तेमाल करके, डेटाबेस से क्वेरी करता है. एसक्यूएल स्टेटमेंट में पैरामीटर, @-पहले से लिखे गए नामों के साथ दिए जाते हैं; पैरामीटर वैल्यू इस कार्रवाई के params पैरामीटर में दी गई हैं.

Cloud Spanner क्वेरी सिंटैक्स के बारे में जानकारी के लिए, क्वेरी सिंटैक्स देखें.

सिंटैक्स

<Action>querySQL</Action>
<Input><![CDATA[{
  "sql" : "sql-query-statement",
  "params" : {
    "param1" : "columnValue"
  }
}]]></Input>

उदाहरण

इस उदाहरण में, एक क्वेरी, user टेबल से username और email कॉलम की वैल्यू हासिल करती है. एसक्यूएल स्टेटमेंट में एक 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 एक्ज़ीक्यूट की जाने वाली एसक्यूएल क्वेरी. पैरामीटर को, @-prepended पैरामीटर के नाम के साथ तय किया जा सकता है. पैरामीटर के ये नाम, इस कार्रवाई के params पैरामीटर में मौजूद कुंजियों के मुताबिक होने चाहिए. स्ट्रिंग कोई नहीं. हां.
पैरामीटर एक ऐसा ऑब्जेक्ट जिसकी कुंजियां और वैल्यू, एसक्यूएल क्वेरी में इस्तेमाल किए गए पैरामीटर के नाम और वैल्यू हैं. यहां एक से ज़्यादा पैरामीटर जोड़े जा सकते हैं. ऑब्जेक्ट कोई नहीं. नहीं.

जवाब

rows ऑब्जेक्ट, जिसमें क्वेरी से मिले कॉलम के नाम और वैल्यू के पेयर की कैटगरी है. उदाहरण के लिए:

{
  "rows": [
    {
      "username": "freewill444",
      "email": "freewill@example.com"
    }
  ]
}

अपडेट करें

तय किए गए डेटा के साथ डेटाबेस की पंक्तियों को अपडेट करता है.

सिंटैक्स

<Input><![CDATA[{
  "tableName" : "table-with-rows-to-update",
  "rows" : "rows-to-update"
}]]></Input>

उदाहरण

इस उदाहरण में, जिस उपयोगकर्ता का username, Liz456 है उसके ईमेल पते को नई वैल्यू से अपडेट किया गया है. एक पंक्ति अपडेट की गई.

<Action>update</Action>
<Input><![CDATA[{
  "tableName" : "user",
  "rows": [{
      "username":"Liz456",
      "email":"lizzard@example.com"
  }]
}]]></Input>

अनुरोध के पैरामीटर

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
tableName डेटाबेस में मौजूद वह टेबल जिसमें लाइन अपडेट की जानी चाहिए. स्ट्रिंग कोई नहीं. हां.
पंक्तियां लाइन के डेटा का कलेक्शन, जिसे अपडेट करना है. कलेक्शन में मौजूद हर इकाई में, अपडेट की जाने वाली लाइन के लिए यूनीक आईडी (जैसे कि प्राइमरी पासकोड) होना चाहिए. Array कोई नहीं. हां.

जवाब

कोई नहीं.

कॉन्फ़िगरेशन रेफ़रंस

एपीआई प्रॉक्सी में इस्तेमाल करने के लिए, इस एक्सटेंशन को कॉन्फ़िगर और डिप्लॉय करते समय, इनका इस्तेमाल करें. Apigee कंसोल का इस्तेमाल करके एक्सटेंशन को कॉन्फ़िगर करने का तरीका जानने के लिए, एक्सटेंशन जोड़ना और उसे कॉन्फ़िगर करना लेख पढ़ें.

सामान्य एक्सटेंशन प्रॉपर्टी

हर प्रॉपर्टी के लिए नीचे दी गई प्रॉपर्टी मौजूद हैं.

प्रॉपर्टी जानकारी डिफ़ॉल्ट ज़रूरी है
name वह नाम, जिसे आप एक्सटेंशन का यह कॉन्फ़िगरेशन दे रहे हैं. कभी नहीं हां
packageName एक्सटेंशन पैकेज का नाम, जो Apigee Edge से दिया गया है. कभी नहीं हां
version उस एक्सटेंशन पैकेज का वर्शन नंबर जिससे आपको एक्सटेंशन कॉन्फ़िगर करना है. कभी नहीं हां
configuration आप जिस एक्सटेंशन को जोड़ रहे हैं उसके लिए खास तौर पर कॉन्फ़िगरेशन वैल्यू. इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी देखें कभी नहीं हां

इस एक्सटेंशन पैकेज के लिए प्रॉपर्टी

नीचे दी गई कॉन्फ़िगरेशन प्रॉपर्टी के लिए, खास तौर पर इस एक्सटेंशन के लिए वैल्यू तय करें.

प्रॉपर्टी ब्यौरा डिफ़ॉल्ट ज़रूरी है
प्रोजेक्ट-आईडी डेटाबेस वाले GCP प्रोजेक्ट का आईडी. कोई नहीं. हां.
instanceId आपके GCP प्रोजेक्ट में Cloud Spanner इंस्टेंस का आईडी. कोई नहीं. हां.
डेटाबेस आईडी क्लाउड स्पैनर डेटाबेस का आईडी. कोई नहीं. हां.
क्रेडेंशियल Apigee Edge कंसोल में डाला गया कॉन्टेंट, आपके सेवा खाते की कुंजी वाली फ़ाइल का कॉन्टेंट होता है. मैनेजमेंट एपीआई की मदद से भेजने पर, यह base64 कोड में बदली गई वैल्यू होती है. यह सेवा खाते की कुंजी फ़ाइल से जनरेट होती है. कोई नहीं. हां.