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

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

वर्शन 2.0.2

Cloud Spanner डेटाबेस में डेटा डालने, क्वेरी करने, और अपडेट करने जैसे ऑपरेशन किए जा सकते हैं.

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

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

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

  3. जब आपके पास ऐसा सेवा खाता हो जिसके पास आपके डेटाबेस को उस लेवल पर ऐक्सेस करने की अनुमति हो जिस लेवल पर आपको ऐक्सेस करना है, तो Google Cloud 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 नीति, 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>

नीचे दी गई 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>

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

पैरामीटर ब्यौरा टाइप डिफ़ॉल्ट ज़रूरी है
तालिका नाम डेटाबेस में मौजूद वह टेबल जिसमें पंक्तियां डाली जानी चाहिए. स्ट्रिंग कोई नहीं. हां.
पंक्तियां 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 एसक्यूएल क्वेरी को लागू करना है. पैरामीटर के नाम से पहले @ लगाकर, पैरामीटर तय किए जा सकते हैं. पैरामीटर के नाम, इस कार्रवाई के params पैरामीटर में मौजूद कुंजियों से मेल खाने चाहिए. स्ट्रिंग कोई नहीं. हां.
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>

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

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

जवाब

कोई नहीं.

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

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

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

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

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

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

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

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