Rozszerzenie bazy danych Google Cloud Spanner

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info

Wersja 2.0.2

wykonywać 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 ramach serwera proxy interfejsu API za pomocą zasady ExtensionCallout, musisz:

  1. Utwórz instancję Cloud Spanner zgodnie z opisem w sekcji Tworzenie instancji i zarządzanie nimi, a następnie utwórz bazę danych.

  2. Gdy masz już instancję i bazę danych, przyznaj uprawnienia do 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 do Cloud Spanner.

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

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

Informacje o Cloud Spanner

Cloud Spanner to relacyjna baza danych, która jest przydatna w przypadku danych relacyjnych, strukturalnych i półstrukturalnych, które wymagają 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 samouczek wprowadzający w dokumentacji Cloud Spanner.

Przykłady

Poniższe przykłady pokazują, jak skonfigurować obsługę działań rozszerzeń 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>

Pobieranie danych

W tym przykładzie zapytanie pobiera wartości nazwy użytkownika i adresu e-mail z tabeli user.

Najpierw zasada AssignMessage przypisuje zmienną postal.code.value do użycia w klauzuli WHERE zapytania. To jest przykład. Zasady 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 zapisanej 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, jak poniżej.

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

Zaktualizuj dane

W tym przykładzie element <Input> zawiera element username, czyli klucz podstawowy tabeli, oraz nową wartość 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. Dodany zostanie jeden 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 w formie tablicy w obiekcie JSON rows. Tablica Brak. Tak.

Odpowiedź

Brak.

querySQL

Wysyła zapytanie 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.

Szczegółowe informacje o składni zapytań w 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 usernameemail 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. Parametry możesz określać za pomocą nazw parametrów poprzedzonych znakiem @. Nazwy tych parametrów muszą odpowiadać kluczom w parametrze params tego działania. Ciąg znaków Brak. Tak.
parametry Obiekt, którego klucze i wartości to nazwy i wartości parametrów użytych 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ść. Zaktualizowano 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.

Odwołanie do konfiguracji

Podczas konfigurowania i wdrażania tego rozszerzenia do użycia w proxy interfejsów API postępuj zgodnie z tymi instrukcjami. Instrukcje konfigurowania rozszerzenia za pomocą konsoli Apigee znajdziesz w artykule Dodawanie i konfigurowanie rozszerzenia.

Wspólne właściwości rozszerzeń

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

Określ wartości tych właściwości konfiguracji, które są specyficzne dla tego rozszerzenia.

Właściwość Opis Domyślny Wymagane
Identyfikator projektu Identyfikator projektu Google Cloud zawierającego bazę danych. Brak. Tak.
instanceId Identyfikator instancji Cloud Spanner w 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. W przypadku wysyłania za pomocą interfejsu Management API jest to wartość zakodowana w formacie base64 wygenerowana z pliku klucza konta usługi. Brak. Tak.