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

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

نسخه ۲.۰.۲

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

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

  1. همانطور که در بخش «ایجاد و مدیریت نمونه‌ها» توضیح داده شده است، یک نمونه Cloud Spanner ایجاد کنید و یک پایگاه داده نیز بسازید.

  2. وقتی نمونه و پایگاه داده را داشتید، اجازه دسترسی به پایگاه داده خود را به حساب سرویس Google Cloud که نماینده افزونه شماست، اعطا کنید . برای اطلاعات بیشتر در مورد نقش مورد استفاده، به نقش‌های Cloud Spanner مراجعه کنید. برای اطلاعات بیشتر در مورد کنترل دسترسی Cloud Spanner، به اعمال نقش‌های IAM و کنترل دسترسی برای Cloud Spanner مراجعه کنید.

  3. وقتی یک حساب کاربری سرویس دارید که مجوز سطح دسترسی مورد نظر شما به پایگاه داده را دارد، از کنسول Google Cloud برای ایجاد یک کلید برای حساب کاربری سرویس استفاده کنید . هنگام پیکربندی این افزونه، از محتویات فایل JSON کلید حاصل استفاده کنید.

  4. هنگام افزودن و پیکربندی افزونه با استفاده از مرجع پیکربندی ، از محتویات فایل JSON کلید حاصل استفاده کنید.

درباره کلود اسپنر

کلود اسپنر یک سرویس پایگاه داده رابطه‌ای است که برای داده‌های رابطه‌ای، ساختاریافته و نیمه ساختاریافته که نیاز به دسترسی‌پذیری بالا، سازگاری قوی و خواندن و نوشتن تراکنشی دارند، مفید است.

اگر تازه کار با 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، یک پرس‌وجو (query) را در پایگاه داده اجرا می‌کند.

<?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>

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

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

پاسخ

هیچ کدام.

پرس و جوSQL

با استفاده از دستور SQL با پارامترهای مشخص شده، از پایگاه داده پرس و جو می‌کند. پارامترها در دستور SQL با نام‌های اضافه شده با @ ارائه می‌شوند؛ مقادیر پارامترها در پارامتر params این اکشن مشخص می‌شوند.

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

نحو

<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 برای اجرا. می‌توانید پارامترها را با نام‌های پارامتر با پیشوند @ مشخص کنید. نام‌های این پارامترها باید با کلیدهای موجود در پارامتر 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 مقدار پیکربندی مخصوص افزونه ای که اضافه می کنید. به ویژگی های این بسته برنامه افزودنی مراجعه کنید هیچ یک آره

ویژگی‌های این بسته الحاقی

مقادیر مربوط به ویژگی‌های پیکربندی زیر را که مختص این افزونه هستند، مشخص کنید.

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