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

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

الإصدار 1.4.2

تنفيذ عمليات الإدراج والاستعلام والتحديث في قاعدة بيانات Cloud Spanner.

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

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

  2. بعد حصولك على المثيل وقاعدة بيانات، امنح الإذن للوصول إلى قاعدة بياناتك إلى حساب خدمة Google Cloud Platform الذي يمثّل إضافتك. لمزيد من المعلومات حول الدور الذي يجب استخدامه، يُرجى الاطّلاع على أدوار Cloud Spanner. لمزيد من المعلومات عن التحكّم في الوصول إلى Cloud Spanner، يُرجى الاطّلاع على المقالتَين تطبيق أدوار "إدارة الهوية وإمكانية الوصول" (IAM) والتحكُّم في الوصول إلى 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>

بعد ذلك، تستخدم سياسة 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>

المهام

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>

معلمات الطلب

المعلمة الوصف النوع تلقائي مطلوب
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>

معلمات الطلب

المعلمة الوصف النوع تلقائي مطلوب
sql استعلام SQL المطلوب تنفيذه. يمكنك تحديد مَعلمات بأسماء مَعلمات تتضمّن @-prepended. ويجب أن تتوافق أسماء المَعلمات هذه مع المفاتيح في مَعلمة 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 الجدول في قاعدة البيانات حيث يجب تحديث الصفوف. سلسلة بلا عُري نعم.
صفوف مصفوفة من بيانات الصف المطلوب تعديلها. يجب أن يحتوي كل كيان في المصفوفة على قيمة المعرّف الفريد (مثل المفتاح الأساسي) للصف المطلوب تعديله. مصفوفة بلا عُري نعم.

الرد

بلا عُري

مرجع الإعداد

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

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

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

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

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

حدِّد قيمًا لخصائص الضبط التالية الخاصة بهذه الإضافة.

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