برنامه افزودنی پایگاه داده Google Cloud Spanner

شما در حال مشاهده اسناد Apigee Edge هستید.
به مستندات Apigee X بروید .
اطلاعات

نسخه 1.4.1

عملیات درج، پرس و جو و به روز رسانی را در پایگاه داده Cloud Spanner انجام دهید.

این محتوا مرجعی برای پیکربندی و استفاده از این پسوند ارائه می دهد. قبل از استفاده از برنامه افزودنی از یک پروکسی API با استفاده از خط مشی ExtensionCallout ، باید:

  1. همانطور که در Creating and Managing Instances توضیح داده شده است، یک نمونه 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 را با استفاده از خط‌مشی ExtensionCallout نشان می‌دهند.

داده ها را اضافه کنید

در مثال زیر، عمل 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 زیر با استفاده از محتویات متغیر postal.code.value در عبارت WHERE یک پرس و جو را در مقابل پایگاه داده اجرا می کند.

<?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 بیان می شوند. آرایه هیچ کدام. بله.

پاسخ

هیچ کدام.

querySQL

پایگاه داده را با استفاده از دستور SQL با پارامترهای مشخص شده پرس و جو می کند. پارامترها در دستور SQL با نام های @-prepended داده می شوند. مقادیر پارامتر در پارامتر params این اکشن مشخص شده است.

برای جزئیات بیشتر در مورد نحو پرس و جو Cloud Spanner، به نحو کوئری مراجعه کنید.

نحو

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

مثال

در این مثال، یک کوئری مقادیر ستون username و email را از جدول user بازیابی می کند. دستور 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 این عمل مطابقت داشته باشد. رشته هیچ کدام. بله.
پارامترها شیئی که کلیدها و مقادیر آن نام و مقادیر پارامترهای مورد استفاده در پرس و جوی 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>

درخواست پارامترها

پارامتر توضیحات تایپ کنید پیش فرض مورد نیاز
نام جدول جدولی در پایگاه داده که در آن سطرها باید به روز شوند. رشته هیچ کدام. بله.
ردیف ها آرایه ای از داده های ردیف برای به روز رسانی. هر موجودی در آرایه باید دارای شناسه منحصربه‌فرد (مانند کلید اصلی) باشد تا ردیف به‌روزرسانی شود. آرایه هیچ کدام. بله.

پاسخ

هیچ کدام.

مرجع پیکربندی

هنگام پیکربندی و استقرار این افزونه برای استفاده در پراکسی های API از موارد زیر استفاده کنید. برای مراحل پیکربندی یک برنامه افزودنی با استفاده از کنسول Apigee، به افزودن و پیکربندی یک برنامه افزودنی مراجعه کنید.

ویژگی های رایج پسوند

ویژگی های زیر برای هر افزونه وجود دارد.

ویژگی شرح پیش فرض ضروری
name نامی که به این پیکربندی افزونه می‌دهید. هیچ یک آره
packageName نام بسته افزودنی همانطور که توسط Apigee Edge داده شده است. هیچ یک آره
version شماره نسخه بسته برنامه افزودنی که از آن یک برنامه افزودنی را پیکربندی می کنید. هیچ یک آره
configuration مقدار پیکربندی مخصوص افزونه ای که اضافه می کنید. به ویژگی های این بسته برنامه افزودنی مراجعه کنید هیچ یک آره

ویژگی های این بسته افزونه

مقادیری را برای خصوصیات پیکربندی زیر مخصوص این افزونه مشخص کنید.

اموال توضیحات پیش فرض مورد نیاز
شناسه پروژه شناسه پروژه GCP حاوی پایگاه داده. هیچ کدام. بله.
شناسه نمونه شناسه نمونه Cloud Spanner در پروژه GCP شما. هیچ کدام. بله.
شناسه پایگاه داده شناسه پایگاه داده Cloud Spanner. هیچ کدام. بله.
اعتبارنامه وقتی در کنسول Apigee Edge وارد می‌شوید، این محتوای فایل کلید حساب سرویس شما است. هنگامی که از طریق API مدیریت ارسال می شود، یک مقدار کدگذاری شده با base64 است که از فایل کلید حساب سرویس تولید می شود. هیچ کدام. بله.