Rozszerzenie bazy danych Google Cloud Spanner

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

Wersja 2.0.1

Wykonuj operacje wstawiania, wysyłania zapytań i aktualizowania w bazie danych Cloud Spanner.

Te treści zawierają informacje o konfigurowaniu i używaniu tego rozszerzenia. Zanim zaczniesz korzystać z rozszerzenia w proxy interfejsu API za pomocą zasady ExtensionCallout, musisz:

  1. Utworzyć instancję Cloud Spanner zgodnie z opisem w artykule Tworzenie instancji i zarządzanie nimi oraz utworzyć bazę danych.

  2. Gdy masz już instancję i bazę danych, przyznaj uprawnienia dostępu do bazy danych kontu usługi Google Cloud, które reprezentuje Twoje rozszerzenie. Więcej informacji o roli, której należy użyć, znajdziesz w artykule Role Cloud Spanner. Więcej informacji o kontroli dostępu do Cloud Spanner znajdziesz w artykułach Stosowanie ról IAM i Kontrola dostępu w Cloud Spanner.

  3. Gdy masz konto usługi z uprawnieniami do poziomu dostępu do bazy danych, którego potrzebujesz, użyj konsoli Google Cloud, aby wygenerować klucz konta usługi. Podczas konfigurowania tego rozszerzenia użyj zawartości wynikowego pliku JSON z kluczem.

  4. Podczas dodawania i konfigurowania rozszerzenia za pomocą dokumentacji konfiguracyjnej użyj zawartości wynikowego pliku JSON z kluczem.

Informacje o Cloud Spanner

Cloud Spanner to usługa relacyjnej bazy danych, która jest przydatna w przypadku relacyjnych, uporządkowanych i częściowo uporządkowanych danych wymagających wysokiej dostępności, silnej spójności oraz odczytów i zapisów transakcyjnych.

Jeśli dopiero zaczynasz korzystać z Cloud Spanner, dobrym punktem wyjścia będzie przewodnik Szybki start w dokumentacji Cloud Spanner.

Przykłady

Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzenia Cloud Spanner za pomocą zasady ExtensionCallout.

Dodaj dane

W tym przykładzie działanie insert rozszerzenia dodaje nowego użytkownika do tabeli użytkowników.

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

Pobierz dane

W tym przykładzie zapytanie pobiera wartości nazw użytkowników i adresów e-mail z tabeli user.

Najpierw zasada AssignMessage przypisuje zmienną postal.code.value do użycia w klauzuli WHERE zapytania. To jest przykład. Twoja zasada prawdopodobnie ustawi wartość na podstawie parametrów żądania klienta.

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

Poniższa zasada ExtensionCallout wykonuje zapytanie w bazie danych, używając zawartości zmiennej postal.code.value w klauzuli 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>

Następnie zasada AssignMessage używa odpowiedzi rozszerzenia przechowywanej w zmiennej spanner.userdata.retrieved jako odpowiedzi zwracanej do klienta.

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

W tym przykładzie dane odpowiedzi są zwracane w formacie JSON, takim jak ten poniżej.

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

Zaktualizuj dane

W tym przykładzie element <Input> zawiera username – klucz podstawowy tabeli – oraz nową wartość kol2/} kolumny.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>

Działania

Insert

Wstawia określone wiersze do bazy danych.

Składnia

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

Przykład

W tym przykładzie działanie insert rozszerzenia dodaje nowego użytkownika do tabeli użytkowników. Dodawany jest 1 wiersz.

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

Parametry żądania

Parametr Opis Typ Domyślny Wymagane
nazwa tabeli Tabela w bazie danych, do której mają zostać wstawione wiersze. Ciąg znaków Brak. Tak.
wiersze Wiersze do wstawienia wyrażone jako tablica w obiekcie JSON rows. Tablica Brak. Tak.

Odpowiedź

Brak.

querySQL

Wysyła zapytania do bazy danych za pomocą instrukcji SQL z określonymi parametrami. Parametry są podawane w instrukcji SQL z nazwami poprzedzonymi znakiem @. Wartości parametrów są określane w parametrze params tego działania.

Więcej informacji o składni zapytań Cloud Spanner znajdziesz w artykule Składnia zapytań.

Składnia

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

Przykład

W tym przykładzie zapytanie pobiera wartości kolumn username i email z tabeli user. Instrukcja SQL określa parametr postalCode, który jest ustawiany na podstawie zmiennej przepływu postal.code.value.

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

Parametry żądania

Parametr Opis Typ Domyślny Wymagane
sql Zapytanie SQL do wykonania. Możesz określić parametry z nazwami poprzedzonymi znakiem @. Te nazwy parametrów muszą odpowiadać kluczom w parametrze params tego działania. Ciąg znaków Brak. Tak.
params Obiekt, którego klucze i wartości to nazwy i wartości parametrów używane w zapytaniu SQL. Możesz tu podać wiele parametrów. Obiekt Brak. Nie.

Odpowiedź

Obiekt rows zawierający tablicę par nazwa kolumny – wartość zwróconych przez zapytanie. Na przykład:

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

update

Aktualizuje wiersze w bazie danych za pomocą określonych danych.

Składnia

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

Przykład

W tym przykładzie adres e-mail użytkownika, którego username to Liz456, jest aktualizowany o nową wartość. Aktualizowany jest 1 wiersz.

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

Parametry żądania

Parametr Opis Typ Domyślny Wymagane
nazwa tabeli Tabela w bazie danych, w której należy zaktualizować wiersze. Ciąg znaków Brak. Tak.
wiersze Tablica danych wierszy do zaktualizowania. Każda encja w tablicy powinna zawierać unikalny identyfikator (np. klucz podstawowy) wiersza do zaktualizowania. Tablica Brak. Tak.

Odpowiedź

Brak.

Dokumentacja konfiguracyjna

Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w proxy interfejsu API postępuj zgodnie z tymi instrukcjami. Aby dowiedzieć się, jak skonfigurować rozszerzenie za pomocą konsoli Apigee, przeczytaj artykuł Dodawanie i konfigurowanie rozszerzenia.

Wspólne właściwości rozszerzenia

Dla każdego rozszerzenia dostępne są poniższe właściwości.

Usługa Opis Domyślnie Wymagany
name Nazwa nadana konfiguracji rozszerzenia. Brak Tak
packageName Nazwa pakietu rozszerzeń podana przez Apigee Edge. Brak Tak
version Numer wersji pakietu rozszerzenia, z którego konfigurujesz rozszerzenie. Brak Tak
configuration Wartość konfiguracji specyficzna dla dodawanego rozszerzenia. Zobacz Właściwości tego pakietu rozszerzeń Brak Tak

Właściwości tego pakietu rozszerzenia

Określ wartości tych właściwości konfiguracji specyficznych dla tego rozszerzenia.

Właściwość Opis Domyślny Wymagane
projectId Identyfikator projektu w chmurze Google zawierającego bazę danych. Brak. Tak.
instanceId Identyfikator instancji Cloud Spanner w Twoim projekcie Google Cloud. Brak. Tak.
databaseId Identyfikator bazy danych Cloud Spanner. Brak. Tak.
dane logowania Po wpisaniu w konsoli Apigee Edge jest to zawartość pliku klucza konta usługi . Po wysłaniu za pomocą interfejsu Management API jest to wartość zakodowana w formacie base64 wygenerowana na podstawie pliku klucza konta usługi. Brak. Tak.