Google Cloud Spanner Veritabanı Uzantısı

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

Sürüm 1.4.1

Cloud Spanner veritabanında ekleme, sorgulama ve güncelleme işlemleri gerçekleştirin.

Bu içerik, bu uzantıyı yapılandırmak ve kullanmak için referans sağlar. ExtensionCall politikasını kullanarak bir API proxy'sinden uzantıyı kullanmadan önce:

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

  2. Örneği ve veritabanını oluşturduktan sonra uzantınızı temsil eden GCP hizmet hesabına veritabanınıza erişim için izin verin. Kullanılacak rol hakkında daha fazla bilgi için Cloud Spanner rolleri konusuna bakın. Cloud Spanner erişim denetimi hakkında daha fazla bilgi için IAM Rollerini Uygulama ve Cloud Spanner İçin Erişim Denetimi bölümlerine bakın.

  3. Veritabanınıza istediğiniz erişim düzeyi için izne sahip olan bir hizmet hesabınız varsa 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. Uzantıyı yapılandırma referansını kullanarak 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 işlemleri 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şlıyorsanız Cloud Spanner belgelerindeki hızlı başlangıç kılavuzu, iyi bir başlangıç noktasıdır.

Sana Özel

Aşağıdaki örnekler, ExtensionDestination politikası kullanılarak Cloud Spanner uzantı işlemleri için desteğin nasıl yapılandırılacağını göstermektedir.

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>

Verileri al

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

İlk olarak, bir assignMessage politikası, sorgu WHERE yan tümcesinde kullanılmak üzere bir postal.code.value değişkeni atar. Bu bir örnektir. Politikanız bu değeri muhtemelen istemci isteği 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 ExtensionExtension politikası, WHERE yan tümcesindeki postal.code.value değişkeninin içeriğini kullanarak veritabanına 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>

Aşağıdaki assignMessage politikası, daha sonra uzantının istemciye döndürülmesi olarak spanner.userdata.retrieved değişkeninde depolanan 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 biçiminde döndürülür.

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

Verileri güncelle

Bu örnekte <Input> öğesi, tablonun birincil anahtarı olan username öğesini ve email sütunu için yeni bir değer 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 Gerekli
tableName Satırların ekleneceği, veritabanındaki tablo. Dize Yok. Evet.
satırlar Eklenecek satırlar bir rows JSON nesnesinde dizi olarak ifade edilir. Dizi Yok. Evet.

Yanıt

Yok.

querySQL

Belirtilen parametrelerle SQL ifadesini kullanarak veritabanını sorgular. Parametreler, SQL deyiminde başına @ eklenmiş adlarla verilir. Parametre değerleri, bu işlemin params parametresinde belirtilir.

Cloud Spanner sorgu söz dizimiyle ilgili ayrıntılar için Sorgu Söz Dizimi bölümüne bakın.

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 ayarlanmış 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 Gerekli
sql Yürütülecek SQL sorgusu. Parametreleri, başına @ eklenmiş parametre adları ile belirtebilirsiniz. Söz konusu 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 nesnedir. Burada birden fazla parametre listeleyebilirsiniz. Nesne Yok. Hayır

Yanıt

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

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

update

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

Söz dizimi

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

Örnek

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

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

İstek parametreleri

Parametre Açıklama Tür Varsayılan Gerekli
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 kimlik (birincil anahtar gibi) değerini içermelidir. Dizi Yok. Evet.

Yanıt

Yok.

Yapılandırma Referansı

Bu uzantıyı API proxy'lerinde kullanmak üzere yapılandırırken ve dağıtırken aşağıdakileri kullanın. Apigee konsolunu kullanarak uzantı yapılandırma adımları için Uzantı ekleme ve yapılandırma bölümüne bakın.

Sık kullanılan 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ı paketinin özellikleri

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

Özellik Açıklama Varsayılan Gerekli
projectId 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 aracılığıyla gönderildiğinde, hizmet hesabı anahtar dosyasından oluşturulan base64 kodlu bir değerdir. Yok. Evet.