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

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

वर्शन 1.4.1

Cloud Spanner डेटाबेस में इंसर्ट करें, क्वेरी करें, और अपडेट करें.

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

  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>

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

पैरामीटर ब्यौरा Type डिफ़ॉल्ट ज़रूरी है
tableName डेटाबेस में मौजूद वह टेबल जिसमें पंक्तियों को शामिल किया जाना है. String कोई नहीं. हां.
लाइनें rows JSON ऑब्जेक्ट में, शामिल की जाने वाली पंक्तियां, ऐरे के तौर पर दिखाई जाती हैं. Array कोई नहीं. हां.

जवाब

कोई नहीं.

querySQL

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

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

सिंटैक्स

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

उदाहरण

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

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

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

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

जवाब

कोई नहीं.

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

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

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

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

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

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

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

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