Google Cloud Spanner Veritabanı Uzantısı

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
info

Sürüm 2.0.0

Cloud Spanner veritabanında ekleme, sorgu ve güncelleme işlemleri gerçekleştirme

Bu içerikte, bu uzantıyı yapılandırma ve kullanmayla ilgili referanslar sağlanmaktadır. ExtensionCallout politikasını kullanarak uzantıyı bir API proxy'sinden kullanmadan önce şunları yapmanız gerekir:

  1. Örnekler Oluşturma ve Yönetme bölümünde açıklandığı gibi bir Cloud Spanner örneği ve veritabanı oluşturun.

  2. Örnek ve veritabanınız hazır olduğunda, uzantınızı temsil eden GCP hizmet hesabına veritabanınıza erişme izni verin. Kullanılacak rol hakkında daha fazla bilgi için Cloud Spanner rolleri başlıklı makaleyi inceleyin. Cloud Spanner erişim denetimi hakkında daha fazla bilgi için IAM Rolleri Uygulama ve Cloud Spanner için Erişim Denetimi başlıklı makaleleri inceleyin.

  3. İstediğiniz veritabanı erişim düzeyine sahip bir hizmet hesabınız olduğunda GCP Console'u kullanarak hizmet hesabı için bir anahtar oluşturun. Bu uzantıyı yapılandırırken oluşturulan anahtar JSON dosyasının içeriğini kullanın.

  4. Yapılandırma referansını kullanarak uzantıyı ekleyip yapılandırırken elde edilen anahtar JSON dosyasının içeriğini kullanın.

Cloud Spanner hakkında

Cloud Spanner, yüksek kullanılabilirlik, güçlü tutarlılık ve işlemsel okuma ve yazma gerektiren ilişkisel, yapılandırılmış ve yarı yapılandırılmış veriler için yararlı olan bir ilişkisel veritabanı hizmetidir.

Cloud Spanner'ı kullanmaya yeni başladıysanız Cloud Spanner belgelerindeki hızlı başlangıç kılavuzundan yararlanabilirsiniz.

Örnekler

Aşağıdaki örneklerde, ExtensionCallout politikası kullanılarak Cloud Spanner uzantı işlemleri için desteğin nasıl yapılandırılacağı gösterilmektedir.

Veri ekle

Aşağıdaki örnekte, uzantının insert işlemi kullanıcı tablosuna yeni bir kullanıcı ekler.

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

Veri alma

Bu örnekte bir sorgu, user tablosundan kullanıcı adı ve e-posta değerlerini alır.

Öncelikle, bir AssignMessage politikası, bir WHERE yan tümcesinde kullanılmak üzere bir postal.code.value değişkeni atar. Bu bir örnektir. Politikanız muhtemelen değeri istemci istek parametrelerine göre ayarlar.

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

Aşağıdaki ExtensionCallout politikası, WHERE yan tümcesinde postal.code.value değişkeninin içeriğini kullanarak veritabanında bir sorgu yürütür.

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

Ardından aşağıdaki AssignMessage politikası, istemciye döndürülen yanıt olarak spanner.userdata.retrieved değişkeninde depolanan uzantının yanıtını kullanır.

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

Bu örnekte, yanıt verileri aşağıdaki gibi JSON olarak döndürülür.

{
  "rows": [
    {
      "username": "freewill444",
      "email": "freewill@example.com"
    }
  ]
}

Verileri güncelle

Bu örnekte <Input> öğesi, tablonun birincil anahtarı olan username değerini ve email sütunu için yeni bir değeri içerir.

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

İşlemler

insert

Belirtilen satırları veritabanına ekler.

Söz dizimi

<Action>insert</Action>
<Input><![CDATA[{
  "tableName" : "table-to-insert-into",
  "rows" : "rows-to-insert"
}]]></Input>

Örnek

Aşağıdaki örnekte, uzantının insert işlemi kullanıcı tablosuna yeni bir kullanıcı ekler. Bir satır eklenir.

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

İstek parametreleri

Parametre Açıklama Tür Varsayılan Zorunlu
tableName Satırların ekleneceği veritabanındaki tablo. Dize Yok. Evet.
satırlar Eklenecek satırlar, rows JSON nesnesinde dizi olarak ifade edilir. Dizi Yok. Evet.

Yanıt

Yok.

querySQL

Belirtilen parametrelerle SQL ifadesini kullanarak veritabanında sorgu yapar. Parametreler, SQL ifadesi içinde @ işareti eklenmiş adlarla verilir; parametre değerleri bu işlemin params parametresinde belirtilir.

Cloud Spanner sorgu söz dizimi hakkında ayrıntılı bilgi için Sorgu Söz Dizimi başlıklı makaleyi inceleyin.

Söz dizimi

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

Örnek

Bu örnekte bir sorgu, user tablosundan username ve email sütun değerlerini alır. SQL ifadesi, postal.code.value akış değişkeninden ayarlanan bir postalCode parametresi belirtir.

<Action>querySQL</Action>
<Input><![CDATA[{
  "sql" : "SELECT username, email FROM user WHERE postalCode = @postalCode",
  "params" : {
    "postalCode" : "{postal.code.value}"
  }
}]]></Input>

İstek parametreleri

Parametre Açıklama Tür Varsayılan Zorunlu
sql Yürütülecek SQL sorgusu. Parametreleri, @ işareti eklenmiş parametre adlarıyla belirtebilirsiniz. Bu parametre adları, bu işlemin params parametresindeki anahtarlara karşılık gelmelidir. Dize Yok. Evet.
params Anahtarları ve değerleri SQL sorgusunda kullanılan parametre adları ve değerleri olan bir nesne. Buraya birden fazla parametre ekleyebilirsiniz. Nesne Yok. Sıra

Yanıt

Sorgu tarafından döndürülen sütun adı-değer çiftleri dizisini içeren bir rows nesnesi. Örneğin:

{
  "rows": [
    {
      "username": "freewill444",
      "email": "freewill@example.com"
    }
  ]
}

update

Veritabanı satırlarını belirtilen verilerle günceller.

Söz dizimi

<Input><![CDATA[{
  "tableName" : "table-with-rows-to-update",
  "rows" : "rows-to-update"
}]]></Input>

Örnek

Bu örnekte, username değeri Liz456 olan kullanıcının e-posta adresi yeni bir değerle güncellenmiştir. Bir satır güncellenir.

<Action>update</Action>
<Input><![CDATA[{
  "tableName" : "user",
  "rows": [{
      "username":"Liz456",
      "email":"lizzard@example.com"
  }]
}]]></Input>

İstek parametreleri

Parametre Açıklama Tür Varsayılan Zorunlu
tableName Veritabanında satırların güncellenmesi gereken tablo. Dize Yok. Evet.
satırlar Güncellenecek satır verileri dizisi. Dizideki her varlık, güncellenecek satırın benzersiz kimliğini (birincil anahtar gibi) içermelidir. Dizi Yok. Evet.

Yanıt

Yok.

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanılmak üzere yapılandırırken ve dağıtırken aşağıdakileri kullanın. Apigee konsolunu kullanarak bir uzantıyı yapılandırma adımları için Uzantı ekleme ve yapılandırma başlıklı makaleyi inceleyin.

Ortak uzantı özellikleri

Aşağıdaki özellikler her uzantı için mevcuttur.

Mülk Açıklama Varsayılan Zorunlu
name Uzantının bu yapılandırmasını verdiğiniz ad. Yok Evet
packageName Apigee Edge'in sağladığı uzantı paketinin adı. Yok Evet
version Uzantıyı yapılandırdığınız uzantı paketinin sürüm numarası. Yok Evet
configuration Eklediğiniz uzantıya özgü yapılandırma değeri. Bu uzantı paketinin özellikleri başlıklı makaleyi inceleyin Yok Evet

Bu uzantı paketine ait özellikler

Bu uzantıya özgü aşağıdaki yapılandırma özellikleri için değerler belirtin.

Mülk Açıklama Varsayılan Zorunlu
proje kimliği Veritabanını içeren GCP projesinin kimliği. Yok. Evet.
instanceId GCP projenizdeki Cloud Spanner örneğinin kimliği. Yok. Evet.
databaseId Cloud Spanner veritabanının kimliği. Yok. Evet.
giriş bilgileri Apigee Edge konsoluna girildiğinde bu, hizmet hesabı anahtar dosyanızın içeriğidir. Yönetim API'si üzerinden gönderildiğinde, hizmet hesabı anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.