إضافة قاعدة بيانات Google Cloud Spanner

يتم الآن عرض مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
المعلومات

الإصدار 1.4.1

يمكنك إجراء عمليات الإدراج والاستعلام والتعديل على قاعدة بيانات Cloud Spanner.

يوفر هذا المحتوى مرجعًا لضبط هذه الإضافة واستخدامها. قبل استخدام الإضافة من خادم وكيل لواجهة برمجة التطبيقات باستخدام سياسة ExtensionCallout، يجب عليك:

  1. أنشئ مثيل Cloud Spanner، كما هو موضّح في إنشاء المثيلات وإدارتها، وأنشئ قاعدة بيانات.

  2. بعد الحصول على المثيل وقاعدة بيانات، امنح الإذن للوصول إلى قاعدة البيانات إلى حساب خدمة Google Cloud Platform الذي يمثل الإضافة. لمزيد من المعلومات عن الدور المطلوب استخدامه، يُرجى الاطّلاع على أدوار Cloud Spanner. لمزيد من المعلومات عن التحكّم في الوصول إلى Cloud Spanner، يُرجى الاطّلاع على تطبيق أدوار "إدارة الهوية وإمكانية الوصول" والتحكّم في الوصول لخدمة Cloud Spanner.

  3. عندما يكون لديك حساب خدمة حاصل على إذن لمستوى الوصول إلى قاعدة البيانات الذي تريده، يمكنك استخدام وحدة تحكُّم Google Cloud Platform لإنشاء مفتاح لحساب الخدمة. يمكنك استخدام محتوى ملف 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>

بعد ذلك، تستخدِم سياسة التعيين التالية رد الإضافة المخزن في متغيّر 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>

المهام

insert

يدرج الصفوف المحددة في قاعدة البيانات.

البنية

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

مَعلمات الطلب

المَعلمة الوصف Type تلقائي مطلوبة
tableName الجدول في قاعدة البيانات الذي يجب إدراج الصفوف به. سلسلة بلا عُري نعم.
صف الصفوف المطلوب إدراجها يتم التعبير عنها كمصفوفة في كائن JSON rows. مصفوفة بلا عُري نعم.

الإجابة

بلا عُري

querySQL

تستعلم قاعدة البيانات باستخدام عبارة SQL مع المعلمات المحددة. يتم تقديم المَعلمات في عبارة SQL بأسماء بادئة @، مع العلم بأنّ قيم المَعلمات يتم تحديدها في معلَمة 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>

مَعلمات الطلب

المَعلمة الوصف Type تلقائي مطلوبة
sql استعلام SQL المطلوب تنفيذه. يمكنك تحديد مَعلمات باستخدام أسماء مَعلمات @-prepended. يجب أن تتوافق أسماء المَعلمات هذه مع المفاتيح في المَعلمة 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>

مَعلمات الطلب

المَعلمة الوصف Type تلقائي مطلوبة
tableName الجدول في قاعدة البيانات حيث يجب تعديل الصفوف. سلسلة بلا عُري نعم.
صف مصفوفة من بيانات الصف المراد تعديلها. يجب أن يحتوي كل كيان في المصفوفة على قيمة المعرّف الفريدة (مثل المفتاح الأساسي) للصف المطلوب تعديله. مصفوفة بلا عُري نعم.

الإجابة

بلا عُري

مرجع التكوين

استخدِم ما يلي عند ضبط هذه الإضافة ونشرها للاستخدام في الخوادم الوكيلة لواجهة برمجة التطبيقات. لمعرفة خطوات إعداد إضافة باستخدام وحدة تحكُّم Apigee، يُرجى الاطّلاع على إضافة إضافة وضبطها.

خصائص الإضافات الشائعة

السمات التالية متاحة لكل إضافة.

الموقع الوصف تلقائي عنصر مطلوب
name الاسم الذي تُعطِه هذه الإضافة من الإضافات. لا ينطبق متوافق
packageName اسم حزمة الإضافة كما هو مُوضَّح من Apigee Edge. لا ينطبق متوافق
version رقم إصدار حزمة الإضافة التي تجري عملية إعداد الإضافة منها. لا ينطبق متوافق
configuration قيمة الإعداد المتعلقة بالإضافة التي تدرجها الاطّلاع على خصائص حزمة الإضافات هذه لا ينطبق متوافق

الخصائص لحزمة الإضافات هذه

يمكنك تحديد قيم لخصائص الإعداد التالية الخاصة بهذه الإضافة.

الموقع الوصف تلقائي مطلوبة
projectId رقم تعريف مشروع Google Cloud Platform الذي يحتوي على قاعدة البيانات. بلا عُري نعم.
instanceId رقم تعريف مثيل Cloud Spanner في مشروع Google Cloud Platform (GCP). بلا عُري نعم.
databaseId رقم تعريف قاعدة بيانات Cloud Spanner. بلا عُري نعم.
بيانات الاعتماد عند إدخالها في وحدة تحكّم Apigee Edge، تكون هي محتوى ملف مفتاح حساب الخدمة. وعند إرسالها من خلال واجهة برمجة تطبيقات الإدارة، تكون قيمة بترميز base64 يتم إنشاؤها من ملف مفتاح حساب الخدمة. بلا عُري نعم.