Google Cloud Spanner 데이터베이스 확장 프로그램

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

<ph type="x-smartling-placeholder">

버전 1.4.1

Cloud Spanner 데이터베이스에서 삽입, 쿼리, 업데이트 작업을 수행합니다.

이 콘텐츠는 이 확장 프로그램을 구성하고 사용하기 위한 참조를 제공합니다. API 프록시에서 확장 프로그램을 사용하기 전에 광고 확장 콜아웃 정책에 따라 다음과 같이 해야 합니다.

  1. 인스턴스 만들기 및 관리의 설명대로 Cloud Spanner 인스턴스를 만들고 데이터베이스를 만듭니다.

  2. 인스턴스와 데이터베이스가 있으면 확장 프로그램을 나타내는 GCP 서비스 계정에 데이터베이스에 액세스할 수 있는 권한을 부여합니다. 사용할 역할에 대한 자세한 내용은 Cloud Spanner 역할을 참조하세요. Cloud Spanner 액세스 제어에 대한 자세한 내용은 IAM 역할 적용Cloud Spanner 액세스 제어를 참조하세요.

  3. 원하는 데이터베이스에 대한 액세스 수준에 대한 권한이 있는 서비스 계정이 있는 경우 GCP 콘솔을 사용하여 서비스 계정의 키를 생성하세요. 이 확장 프로그램을 구성할 때 결과 키 JSON 파일의 콘텐츠를 사용합니다.

  4. 구성 참조를 사용하여 확장 프로그램을 추가 및 구성할 때 결과 키 JSON 파일의 콘텐츠를 사용합니다.

Cloud Spanner 정보

Cloud Spanner는 고가용성, strong consistency, 트랜잭션 읽기 및 쓰기가 필요한 관계형, 구조화된 데이터, 반정형 데이터에 유용한 관계형 데이터베이스 서비스입니다.

Cloud Spanner를 처음 시작하는 경우 Cloud Spanner 문서의 빠른 시작부터 시작하면 좋습니다.

샘플

다음 예는 Extension콜아웃 정책을 사용하여 Cloud Spanner 확장 프로그램 작업 지원을 구성하는 방법을 보여줍니다.

데이터 추가

다음 예에서 확장 프로그램의 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 정책은 쿼리 WHERE 절에서 사용할 postal.code.value 변수를 할당합니다. 이것은 예입니다. 정책에서 클라이언트 요청 매개변수를 기반으로 값을 설정할 가능성이 높습니다.

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

다음 Extension콜아웃 정책은 WHERE 절에 있는 postal.code.value 변수의 내용을 사용하여 데이터베이스에 쿼리를 실행합니다.

<?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> 요소에는 테이블의 기본 키인 usernameemail 열의 새 값이 포함되어 있습니다.

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

작업

<ph type="x-smartling-placeholder">

insert

지정된 행을 데이터베이스에 삽입합니다.

구문

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

다음 예에서 확장 프로그램의 insert 작업은 사용자 테이블에 신규 사용자를 추가합니다. 행 1개가 추가됩니다.

<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 행을 삽입해야 하는 데이터베이스의 테이블입니다. 문자열 없음 예.
rows JSON 객체에 배열로 표현되는 삽입할 행입니다. 배열 없음 예.

응답

없음

querySQL

지정된 매개변수와 함께 SQL 문을 사용하여 데이터베이스를 쿼리합니다. 매개변수는 SQL 문에서 앞에 @이 추가된 이름이 지정됩니다. 매개변수 값은 이 작업의 params 매개변수에 지정됩니다.

Cloud Spanner 쿼리 구문에 대한 자세한 내용은 쿼리 구문을 참조하세요.

구문

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

이 예시에서 쿼리는 user 테이블에서 usernameemail 열 값을 검색합니다. SQL 문은 흐름 변수 postal.code.value에서 설정된 postalCode 매개변수를 지정합니다.

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

요청 매개변수

매개변수 설명 유형 기본값 필수
sql 실행할 SQL 쿼리입니다. @이 앞에 추가된 매개변수 이름으로 매개변수를 지정할 수 있습니다. 이러한 매개변수 이름은 이 작업의 params 매개변수에 있는 키와 일치해야 합니다. 문자열 없음 예.
params 키와 값이 SQL 쿼리에 사용되는 매개변수 이름과 값인 객체입니다. 여기에 여러 매개변수를 나열할 수 있습니다. 객체 없음 아니요.

응답

쿼리에서 반환된 열 이름-값 쌍의 배열이 포함된 rows 객체입니다. 예를 들면 다음과 같습니다.

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

update

지정된 데이터로 데이터베이스의 행을 업데이트합니다.

구문

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

이 예에서는 username가 Liz456인 사용자의 이메일 주소가 새 값으로 업데이트됩니다. 행 1개가 업데이트되었습니다.

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

요청 매개변수

매개변수 설명 유형 기본값 필수
tableName 행을 업데이트해야 하는 데이터베이스의 테이블입니다. 문자열 없음 예.
업데이트할 행 데이터의 배열입니다. 배열의 각 항목에는 업데이트할 행의 고유 ID (예: 기본 키) 값이 있어야 합니다. 배열 없음 예.

응답

없음

구성 참조

API 프록시에서 사용하기 위해 이 확장 프로그램을 구성하고 배포할 때 다음을 사용하세요. Apigee 콘솔을 사용하여 확장 프로그램을 구성하는 단계는 확장 프로그램 추가 및 구성을 참조하세요.

일반적인 확장 속성

모든 확장 프로그램에는 다음과 같은 속성이 있습니다.

속성 설명 기본 필수
name 확장 프로그램의 구성에 지정할 이름입니다. 없음 지원됨
packageName Apigee Edge에서 제공하는 확장 프로그램 패키지 이름입니다. 없음 지원됨
version 확장 프로그램을 구성하는 확장 프로그램 패키지의 버전 번호입니다. 없음 지원됨
configuration 추가하는 확장 프로그램 관련 구성 값입니다. 이 확장 프로그램 속성의 속성을 참조하세요. 없음 지원됨

이 확장 프로그램의 속성

이 확장 프로그램과 관련된 다음 구성 속성의 값을 지정합니다.

속성 설명 기본값 필수
projectId 데이터베이스가 포함된 GCP 프로젝트의 ID입니다. 없음 예.
instanceId GCP 프로젝트에 있는 Cloud Spanner 인스턴스의 ID입니다. 없음 예.
데이터베이스 ID Cloud Spanner 데이터베이스의 ID입니다. 없음 예.
사용자 인증 정보 Apigee Edge 콘솔에 입력하면 서비스 계정 키 파일의 내용입니다. 관리 API를 통해 전송될 때는 서비스 계정 키 파일에서 생성되는 base64 인코딩 값입니다. 없음 예.