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

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

वर्शन 1.4.1

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

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

  1. Cloud Spanner इंस्टेंस बनाएं. इसके लिए, इंस्टेंस बनाना और मैनेज करना लेख पढ़ें. साथ ही, एक डेटाबेस बनाएं.

  2. इंस्टेंस और डेटाबेस बनाने के बाद, अपने एक्सटेंशन को दिखाने वाले GCP सेवा खाते को, अपने डेटाबेस को ऐक्सेस करने की अनुमति दें. इस्तेमाल की जाने वाली भूमिका के बारे में ज़्यादा जानने के लिए, Cloud Spanner की भूमिकाएं लेख पढ़ें. Cloud Spanner के ऐक्सेस कंट्रोल के बारे में ज़्यादा जानने के लिए, आईएएम की भूमिकाएं लागू करना और Cloud Spanner के लिए ऐक्सेस कंट्रोल लेख पढ़ें.

  3. जब आपके पास ऐसा सेवा खाता हो जिसके पास आपके डेटाबेस को ऐक्सेस करने की वह अनुमति हो जो आपको चाहिए, तो GCP Console का इस्तेमाल करके, सेवा खाते के लिए कुंजी जनरेट करें. इस एक्सटेंशन को कॉन्फ़िगर करते समय, जनरेट हुई कुंजी की JSON फ़ाइल में मौजूद कॉन्टेंट का इस्तेमाल करें.

  4. कॉन्फ़िगरेशन रेफ़रंस का इस्तेमाल करके, एक्सटेंशन को जोड़ने और कॉन्फ़िगर करने के दौरान, जनरेट हुई कुंजी की JSON फ़ाइल में मौजूद कॉन्टेंट का इस्तेमाल करें.

Cloud Spanner के बारे में जानकारी

Cloud Spanner, रिलेशनल डेटाबेस सेवा है. यह रिलेशनल, स्ट्रक्चर्ड, और सेमी-स्ट्रक्चर्ड डेटा के लिए काम की है. इसके लिए, हाई अवेलेबिलिटी, मज़बूत कंसिस्टेंसी, और ट्रांज़ैक्शनल रीड और राइट की ज़रूरत होती है.

अगर आपने Cloud Spanner का इस्तेमाल करना अभी शुरू किया है, तो Cloud Spanner के दस्तावेज़ में मौजूद क्विकस्टार्ट से शुरुआत करना अच्छा विकल्प है.

सैंपल

यहां दिए गए उदाहरणों से पता चलता है कि ExtensionCallout नीति का इस्तेमाल करके, 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>

यहां दी गई ExtensionCallout नीति, 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 इंसर्ट की जाने वाली पंक्तियां, जिन्हें 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>

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

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
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>

उदाहरण

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

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

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

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

जवाब

कोई नहीं.

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

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

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

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

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

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

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

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