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

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

वर्शन 1.4.1

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

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

  1. इंस्टेंस बनाना और मैनेज करना में बताए गए तरीके से, Cloud Spanner इंस्टेंस बनाएं और डेटाबेस बनाएं.

  2. इंस्टेंस और डेटाबेस बन जाने के बाद, अपने डेटाबेस को ऐक्सेस करने के लिए, उस GCP सेवा खाते को अनुमति दें जो आपके एक्सटेंशन को दिखाता है. इस्तेमाल की जाने वाली भूमिका के बारे में ज़्यादा जानने के लिए, Cloud Spanner की भूमिकाएं लेख पढ़ें. Cloud Spanner के ऐक्सेस कंट्रोल के बारे में ज़्यादा जानने के लिए, IAM भूमिकाएं लागू करना और 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 JSON ऑब्जेक्ट में कलेक्शन के तौर पर दिखाई जाती हैं. Array कोई नहीं. हां.

जवाब

कोई नहीं.

querySQL

तय किए गए पैरामीटर के साथ SQL स्टेटमेंट का इस्तेमाल करके, डेटाबेस से क्वेरी करता है. पैरामीटर, एसक्यूएल स्टेटमेंट में @-प्रीफ़िक्स वाले नामों के साथ दिए जाते हैं; पैरामीटर की वैल्यू, इस कार्रवाई के 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 जिस एसक्यूएल क्वेरी को लागू करना है. पैरामीटर के नामों के आगे @ लगाकर, पैरामीटर तय किए जा सकते हैं. उन पैरामीटर के नाम, इस कार्रवाई के 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>

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

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

जवाब

कोई नहीं.

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

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

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

The following properties are present for every extension.

Property Description Default Required
name Name you're giving this configuration of the extension. None Yes
packageName Name of the extension package as given by Apigee Edge. None Yes
version Version number for the extension package from which you're configuring an extension. None Yes
configuration Configuration value specific to the extension you're adding. See Properties for this extension package None Yes

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

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

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