Datastream API 사용

Datastream

개요

데이터 소스가 여러 개로 격리된 비즈니스의 경우에는 특히 실시간으로 조직 내 기업 데이터에 액세스하는 것이 어려울 수 있습니다. 그 결과 데이터 액세스가 느려지고 제한되어 조직의 자체 조사능력이 제한될 수 있습니다.

Datastream은 조직 데이터 액세스를 위해 다양한 온프레미스 및 클라우드 기반 데이터 소스로부터 데이터를 변경할 수 있도록 거의 실시간 액세스를 제공합니다. Datastream은 조직 내에서 이용 가능한 최신 엔터프라이즈 데이터에 대한 조직 액세스를 대중화하는 간단한 설정 환경과 통합 소비 API를 제공함으로써 거의 실시간의 통합 시나리오를 강화합니다.

이러한 시나리오 중 하나는 소스 데이터베이스의 데이터를 클라우드 기반 스토리지 서비스 또는 메시징 큐로 전송하고 이 데이터를 이 스토리지 서비스 또는 메시징 큐와 통신하는 다른 애플리케이션 및 서비스에서 판독 가능한 형식으로 변환하는 것입니다.

이 튜토리얼에서는 Datastream을 사용해서 소스 Oracle 데이터베이스의 스키마, 테이블, 데이터를 Cloud Storage 버킷의 폴더로 전송하는 방법을 알아봅니다. Cloud Storage는 Google Cloud에서 데이터를 저장하고 액세스하기 위한 웹 서비스입니다. 이 서비스는 Google 클라우드의 성능 및 확장성을 고급 보안 및 공유 기능과 결합합니다.

이 정보를 대상 Cloud Storage 버킷의 폴더로 전송할 때 Datastream은 이 정보를 Avro로 변환합니다. Avro는 자바스크립트 객체 표기법(JSON)으로 작성된 스키마로 정의됩니다. 이 변환을 수행하여 여러 데이터 소스의 데이터를 동일한 방식으로 읽을 수 있습니다.

목표

이 튜토리얼에서는 다음을 수행하는 방법을 알아봅니다.

  • 환경 변수를 설정합니다. 이러한 변수는 Datastream에 연결 프로필스트림 만들기 및 관리를 요청할 때 사용됩니다.
  • 소스 데이터베이스와 Cloud Storage의 대상 버킷에 대한 연결 프로필을 만들고 관리합니다. 이러한 연결 프로필을 만들면 소스 데이터베이스 및 대상 Cloud Storage 버킷에 대한 정보가 포함된 레코드가 생성됩니다. Datastream의 스트림은 연결 프로필의 정보를 사용해서 소스 데이터베이스의 데이터를 대상 버킷의 폴더로 전송합니다.
  • 스트림을 만들고 관리합니다. Datastream은 이 스트림을 사용해서 소스 데이터베이스의 데이터, 스키마, 테이블을 대상 버킷의 폴더로 전송합니다.
  • Datastream이 소스 Oracle 데이터베이스 스키마와 연결된 데이터 및 테이블을 대상 버킷의 폴더로 전송하고 이 데이터를 Avro 파일 형식으로 변환하는지 확인합니다.
  • 할당량을 차지하지 않고 이후 비용이 청구되지 않도록 Datastream에서 만든 리소스를 삭제합니다.

비용

이 문서에서는 비용이 청구될 수 있는 다음과 같은 Google Cloud 구성요소를 사용합니다.

  • Cloud Storage

프로젝트 사용량을 기준으로 예상 비용을 산출하려면 가격 계산기를 사용하세요. Google Cloud를 처음 사용하는 사용자는 무료 체험판을 사용할 수 있습니다.

시작하기 전에

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  4. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  5. Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다.

  6. Datastream API를 사용 설정합니다.

    API 사용 설정

  7. Datastream 관리자 역할이 사용자 계정에 할당되었는지 확인합니다.

    IAM 페이지로 이동

  8. Datastream이 액세스할 수 있는 소스 데이터베이스가 있는지 확인합니다. 이 튜토리얼에서는 Oracle 데이터베이스가 소스로 사용됩니다.
  9. Datastream 공개 IP 주소의 수신 연결을 허용하도록 소스 데이터베이스를 구성합니다. 모든 Datastream 리전 및 연관된 공개 IP 주소의 위치에 액세스하려면 IP 허용 목록 및 리전을 참조하세요.
  10. IP 허용 목록, 전달 SSH 터널, VPC 피어링 네트워크 연결 방법을 사용해서 Datastream이 액세스할 수 있는 대상 Cloud Storage 버킷이 구성되었는지 확인합니다.
  11. Datastream이 대상 Cloud Storage 버킷의 폴더로 전송할 수 있도록 소스 데이터베이스에 데이터, 테이블, 스키마가 있는지 확인합니다.
  12. Cloud Shell을 다운로드하고 설치합니다. 이 클라이언트 애플리케이션은 클라우드 리소스에 대한 명령줄 액세스를 제공합니다(Datastream 포함).
  13. jq 유틸리티를 설치하고 구성합니다. 이 유틸리티는 경량형의 유연한 명령줄 JSON 프로세서입니다. 이 프로세서를 사용하여 복잡한 cURL 명령어를 이해하기 쉬운 텍스트로 표시할 수 있습니다.

환경 변수 설정

이 절차에서는 다음 변수를 설정합니다.

  • $PROJECT: 이 변수는 Google Cloud 프로젝트와 연결되어 있습니다. 사용자가 할당하고 사용하는 모든 Google Cloud 리소스는 프로젝트에 속해야 합니다.
  • $TOKEN: 이 변수는 액세스 토큰과 연결되어 있습니다. 액세스 토큰은 Cloud Shell이 REST API를 통해 Datastream에서 태스크를 수행하기 위해 사용하는 세션을 제공합니다.
  1. Cloud Shell 애플리케이션을 시작합니다.

  2. Google 계정을 사용하여 애플리케이션에 인증한 후 gcloud auth login을 입력합니다.

  3. Do you want to continue (Y/n)? 프롬프트에서 Y를 입력합니다.

  4. 웹브라우저를 열고 URL을 브라우저에 복사합니다.

  5. Google 계정을 사용하여 Google Cloud SDK에 인증합니다. 로그인 페이지에 코드가 표시됩니다. 이 코드가 액세스 토큰입니다.

  6. 액세스 토큰을 복사하고, Cloud Shell 애플리케이션에서 Enter verification code: 매개변수에 붙여넣고, Enter를 누릅니다.

  7. 프롬프트에서 PROJECT="YOUR_PROJECT_NAME"을 입력하여 Google Cloud 프로젝트에 대해 $PROJECT 환경 변수를 설정합니다.

  8. 프롬프트에서 gcloud config set project YOUR_PROJECT_NAME을 입력하여 작업할 프로젝트를 Google Cloud 프로젝트로 설정합니다.

    명령어 프롬프트가 활성 프로젝트를 반영하도록 업데이트되어 USERNAME@cloudshell:~ (YOUR_PROJECT_NAME)$ 형식을 따릅니다.

  9. 프롬프트에서 TOKEN=$(gcloud auth print-access-token)을 입력하여 액세스 토큰을 가져오고 이를 변수로 저장합니다.

  10. 프롬프트에서 다음 명령어를 입력하여 $PROJECT$TOKEN 변수가 올바르게 설정되었는지 확인합니다.

    • echo $PROJECT
    • echo $TOKEN

이제 변수를 설정했으므로 연결 스트림 및 스트림을 모두 만들고 관리하도록 Datastream에 요청할 수 있습니다.

연결 프로필 만들기 및 관리

이 섹션에서는 소스 Oracle 데이터베이스 및 Cloud Storage의 대상 버킷에 대한 연결 프로필을 만들고 관리합니다.

이러한 연결 프로필을 만들 때는 소스 데이터베이스 및 대상 Cloud Storage 버킷에 대한 정보가 포함된 리소스를 만듭니다. Datastream은 연결 프로필의 정보를 사용해서 소스 데이터베이스의 데이터를 대상 버킷의 폴더로 전송합니다.

연결 프로필 만들기 및 관리에는 다음이 포함됩니다.

  • 소스 Oracle 데이터베이스 및 Cloud Storage의 대상 버킷에 대해 연결 프로필 만들기
  • 연결 프로필에서 정보 검색
  • 연결 프로필 수정
  • 소스 Oracle 연결 프로필에서 검색 API 호출을 수행합니다. 이 호출을 통해 데이터베이스 내부를 보고 이와 연결된 객체를 볼 수 있습니다. 이러한 객체에는 데이터베이스 데이터가 포함된 스키마 및 테이블이 포함되어 있습니다. Datastream을 사용하여 스트림을 구성할 때는 데이터베이스에서 모든 객체를 가져오는 대신 객체의 하위 집합(데이터베이스의 특정 테이블 및 스키마)를 가져와야 할 수 있습니다. 검색 API를 사용하여 가져오려는 데이터베이스 객체의 하위 집합을 찾거나 검색할 수 있습니다.

연결 프로필 만들기

이 절차에서는 2개의 연결 프로필을 만듭니다. 하나는 Oracle 데이터베이스에 대한 것이고 다른 하나는 Cloud Storage의 대상 프로필에 대한 것입니다.

  1. 소스 Oracle 데이터베이스에 대해 연결 프로필을 만듭니다. 프롬프트에서 다음 명령어를 입력합니다.
ORACLE="{\"displayName\":\"DISPLAY_NAME\",\"oracle_profile\":{\"hostname\":\"HOSTNAME\",\"username\":\"USERNAME\",\"password\":\"PASSWORD\",\"database_service\":\"DATABASE_SERVICE\",\"port\":"PORT_NUMBER\"},\"no_connectivity\":{}}"
  

소스 Oracle 데이터베이스의 매개변수 값을 이해하려면 다음 표를 참조하세요.

매개변수 값바꾸기
DISPLAY_NAME소스 데이터베이스에 대한 연결 프로필의 표시 이름입니다.
HOSTNAME소스 데이터베이스 서버의 호스트 이름입니다.
USERNAME소스 데이터베이스에 대한 계정의 사용자 이름입니다(예: ROOT).
PASSWORD소스 데이터베이스에 대한 계정의 비밀번호입니다.
DATABASE_SERVICE소스 데이터베이스가 보호 및 모니터링되게 해주는 서비스입니다. Oracle 데이터베이스의 경우 데이터베이스 서비스가 일반적으로 ORCL입니다.
PORT_NUMBER소스 데이터베이스에 대해 예약된 포트 번호입니다. Oracle 데이터베이스의 경우 포트 번호는 일반적으로 1521입니다.

  1. 프롬프트에서 echo $ORACLE | jq 명령어를 입력하여 생성된 소스 연결 프로필을 읽기 쉬운 텍스트로 확인합니다.

    {
      "displayName": "DISPLAY_NAME",
      "oracle_profile": {
        "hostname": "HOSTNAME",
        "username": "USERNAME",
        "password": "PASSWORD",
        "database_service": "DATABASE_SERVICE",
        "port": PORT_NUMBER
       },
      "no_connectivity": {}
    }
    
  2. 만들려는 Oracle 연결 프로필을 제출합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X POST -d $ORACLE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles?connection_profile_id=SOURCE_CONNECTION_PROFILE_ID
    

    이 명령어의 매개변수 값을 이해하려면 다음 표를 참조하세요.

    매개변수 값바꾸기
    DATASTREAM_API_VERSIONDatastream API의 현재 버전(예: v1).
    PROJECT_PATHGoogle Cloud 프로젝트의 전체 경로(예: projects/$PROJECT/locations/YOUR_PROJECT_LOCATION).
    SOURCE_CONNECTION_PROFILE_ID이 연결 프로필에 예약된 고유 식별자입니다(예: cp-1).
  3. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "datastream.googleapis.com/DATASREAM_VERSION/PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  4. Cloud Storage의 대상 버킷에 대한 연결 프로필을 만듭니다. 프롬프트에서 다음 명령어를 입력합니다.

    GOOGLECLOUDSTORAGE="{\"displayName\":\"DISPLAY_NAME\",\"gcs_profile\":{\"bucket_name\":\"BUCKET_NAME\",\"root_path\":\"/FOLDER_PATH\"},\"no_connectivity\":{}}"
    

    대상 버킷에 대한 매개변수 값을 이해하려면 다음 표를 참조하세요.

    매개변수 값바꾸기
    DISPLAY_NAME대상 버킷에 대한 연결 프로필의 표시 이름입니다.
    BUCKET_NAME대상 버킷의 이름입니다.
    FOLDER_PATHDatastream이 소스 데이터베이스의 데이터를 전송하는 대상 버킷의 폴더입니다(예: /root/path).
  5. 프롬프트에서 echo $GOOGLECLOUDSTORAGE | jq 명령어를 입력하여 생성된 대상 연결 프로필을 읽기 쉬운 텍스트로 확인합니다.

    {
      "displayName": "DISPLAY_NAME",
      "gcs_profile": {
        "bucket_name": "BUCKET_NAME",
        "root_path": "/FOLDER_PATH"
      },
      "no_connectivity": {}
    }
    
  6. 만들려는 Cloud Storage 연결 프로필을 제출합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X POST -d $GOOGLECLOUDSTORAGE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles?connection_profile_id=DESTINATION_CONNECTION_PROFILE_ID
    
  7. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID",
      "metadata": {
        "@type": "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "datastream.googleapis.com/DATASTREAM_VERSION/PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  8. 두 연결 프로필이 생성되었는지 확인합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles
    
  9. 각각 소스 및 대상 연결 프로필에 해당하는 2개의 결과가 반환되는지 확인합니다.

    {
      "connectionProfiles": [
        {
          "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
          "createTime": "DATE_AND_TIME_STAMP",
          "updateTime": "DATE_AND_TIME_STAMP",
          "displayName": "DISPLAY_NAME",
          "gcsProfile": {
            "bucketName": "BUCKET_NAME",
            "rootPath": "FOLDER_PATH"
          },
          "noConnectivity": {}
        },
       {
        "name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "createTime": "DATE_AND_TIME_STAMP",
        "updateTime": "DATE_AND_TIME_STAMP",
        "displayName": "DISPLAY_NAME",
        "oracleProfile": {
          "hostname": "HOSTNAME",
          "port": PORT_NUMBER,
          "username": "USERNAME",
          "databaseService": "DATABASE_SERVICE"
        },
        "noConnectivity": {}
        }
      ]
    }
    

연결 프로필 관리

이 절차에서는 소스 Oracle 데이터베이스와 Cloud Storage의 대상 버킷에 대해 만든 연결 문자열을 관리합니다. 여기에는 다음이 포함됩니다.

  • 대상 Cloud Storage 연결 프로필 정보 검색
  • 이 연결 프로필 수정. 이 튜토리얼에서는 대상 Cloud Storage 버킷의 폴더를 /root/tutorial로 변경합니다. Datastream은 소스 데이터베이스의 데이터를 이 폴더로 전송합니다.
  • 소스 Oracle 연결 프로필에서 검색 API 호출 수행
  1. 대상 Cloud Storage 연결 프로필에 대한 정보를 검색합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID
    
  2. 이 연결 프로필에 대해 정보가 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
      "createTime": "DATE_AND_TIME_STAMP",
      "updateTime": "DATE_AND_TIME_STAMP",
      "displayName": "DISPLAY_NAME",
      "gcsProfile": {
        "bucketName": "BUCKET_NAME",
        "rootPath": "FOLDER_PATH"
      },
      "noConnectivity": {}
    }
    
  3. 이 연결 프로필을 수정합니다. 이렇게 하려면 UPDATE 변수를 설정합니다. 이 변수에는 변경하려는 연결 프로필의 값이 포함되어 있습니다. 이 튜토리얼에서는 대상 버킷의 폴더를 /root/tutorial로 변경합니다.

    변수를 설정하려면 프롬프트에서 다음 명령어를 입력합니다.

    UPDATE="{\"gcsProfile\":{\"rootPath\":\"/root/tutorial\"}}"
  4. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID?update_mask=gcsProfile.rootPath
    
  5. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  6. 연결 프로필이 수정되었는지 확인합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID
    
  7. Cloud Storage 연결 프로필에 대한 대상 버킷의 폴더가 이제 /root/tutorial인지 확인합니다.

    {
      "name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
      "createTime": "DATE_AND_TIME_STAMP",
      "updateTime": "DATE_AND_TIME_STAMP",
      "displayName": "DISPLAY_NAME",
      "gcsProfile": {
        "bucketName": "BUCKET_NAME",
        "rootPath": "/root/tutorial"
      },
      "noConnectivity": {}
    }
    
  8. Datastream 검색 API를 사용하여 소스 Oracle 데이터베이스의 스키마 및 테이블을 검색합니다. Datastream은 소스 연결 프로필을 통해 이 데이터베이스에 액세스할 수 있게 해줍니다.

    1. Oracle 데이터베이스의 스키마를 검색합니다. 프롬프트에서 다음 명령어를 입력합니다.

      curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover
      
    2. Datastream이 데이터베이스의 모든 스키마를 검색하는지 확인합니다.

    3. 데이터베이스에서 스키마의 테이블을 검색합니다. 이 튜토리얼에서는 검색 API를 사용해서 ROOT 스키마의 테이블을 검색합니다. 하지만 데이터베이스에서 모든 스키마의 테이블을 검색할 수 있습니다.

      프롬프트에서 다음 명령어를 입력합니다.

    curl -X POST -d "{\"connection_profile_name\":\"projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID\", \"oracle_rdbms\":{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}}" -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles:discover
    
    1. Datastream이 지정된 스키마의 모든 테이블을 가져오는지 확인합니다(이 튜토리얼에서는 ROOT 스키마).

소스 Oracle 데이터베이스 및 Cloud Storage의 대상 버킷에 대한 연결 프로필을 만들고 관리했으므로, 이제 Datastream에서 스트림을 만들고 관리할 준비가 되었습니다.

스트림 만들기 및 관리

이 섹션에서는 스트림을 만들고 관리합니다. Datastream은 이 스트림을 사용해서 소스 데이터베이스의 데이터, 스키마, 테이블을 대상 Cloud Storage 버킷의 폴더로 전송합니다.

스트림 만들기 및 관리에는 다음이 포함됩니다.

  • 스트림을 검증해서 스트림이 성공적으로 실행되고 모든 검증 확인이 통과하는지 확인합니다. 확인 내용은 다음과 같습니다.
    • Datastream이 데이터를 스트리밍하도록 소스가 올바르게 구성되었는지 확인합니다.
    • 스트림이 소스 및 대상에 모두 연결할 수 있는지 확인합니다.
    • 스트림의 엔드 투 엔드 구성을 확인합니다.
  • 다음 목록으로 스트림을 만듭니다.
    • 허용 목록. 이 목록은 Datastream이 Cloud Storage의 대상 버킷에 포함된 폴더로 전송할 수 있는 소스 데이터베이스의 테이블 및 스키마를 지정합니다. 이 튜토리얼에서는 /root/tutorial 폴더입니다.
    • 거부 목록. 이 목록은 Datastream이 Cloud Storage 대상 버킷의 폴더로 전송하지 못하도록 제한된 소스 데이터베이스의 테이블 및 스키마입니다.
  • 스트림에 대한 정보 검색
  • 스트림 수정
  • Datastream이 소스 데이터베이스의 데이터, 스키마, 테이블을 대상 Cloud Storage 버킷의 폴더로 전송할 수 있도록 스트림을 시작합니다.
  • 오류 가져오기 API를 사용해서 스트림과 연결된 오류를 감지합니다.
  • 스트림을 일시 중지합니다. 스트림을 일시 중지하면 Datastream이 새 데이터를 소스 데이터베이스에서 대상 버킷으로 가져오지 않습니다.
  • Datastream이 대상 버킷으로 데이터를 계속 전송할 수 있도록 일시 중지된 스트림을 재개합니다.

스트림 만들기

이 절차에서는 소스 Oracle 데이터베이스에서 대상 Cloud Storage 버킷의 폴더로 스트림을 만듭니다. 만든 스트림에는 허용 목록 및 거부 목록이 모두 포함됩니다.

  1. SCHEMAS 변수를 설정합니다. 이 변수는 Datastream이 소스 데이터베이스에서 가져와 Cloud Storage 대상 버킷의 /root/tutorial 폴더로 전송할 데이터 및 테이블이 포함된 스키마를 정의합니다. 이 튜토리얼에서는 ROOT 스키마와 연결되는 SCHEMAS 변수를 설정합니다.

    프롬프트에서 다음 명령어를 입력합니다.

    SCHEMAS="{\"oracleSchemas\":[{\"schema\":\"ROOT\"}]}"
    
  2. 프롬프트에서 echo $SCHEMAS | jq 명령어를 입력하여 이 변수에 대해 정의한 ROOT 스키마를 읽기 쉬운 텍스트로 확인합니다.

  3. 스트림을 만듭니다. 프롬프트에서 다음 명령어를 입력합니다.

    STREAM="{\"display_name\":\"DISPLAY_NAME\",\"source_config\":{\"source_connection_profile_name\":\"PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",\"oracle_source_config\":{\"allowlist\":$SCHEMAS,\"rejectlist\":{}}},\"destination_config\":{\"destination_connection_profile_name\":\"PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID\",\"gcs_destination_config\":{\"file_rotation_mb\":5,\"file_rotation_interval\":{\"seconds\":15},\"avro_file_format\":{}},\"backfill_all\":{}}}"
    
  4. 프롬프트에서 echo $STREAM | jq 명령어를 입력하여 생성된 스트림을 읽기 쉬운 텍스트로 확인합니다.

    {
      "display_name": "DISPLAY_NAME",
      "source_config": {
        "source_connection_profile_name": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "oracle_source_config": {
          "allowlist": {
            "oracleSchemas": [
              {
                "schema": "ROOT"
              }
            ]
          },
          "rejectlist": {}
        }
      },
      "destination_config": {
        "destination_connection_profile_name": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
        "gcs_destination_config": {
          "file_rotation_mb": 5,
          "file_rotation_interval": {
            "seconds": 15
          },
          "avro_file_format": {}
        }
      },
      "backfill_all": {}
    }
    

    스트림의 다음 매개변수를 이해하려면 다음 표를 참조하세요.

    매개변수설명
    allowlist소스 데이터베이스에서 Cloud Storage 대상 버킷의 폴더로 전송되는 테이블 및 데이터가 포함된 스키마입니다. 이 튜토리얼에서는 ROOT 스키마(그리고 오직 이 스키마만)의 모든 테이블 및 데이터가 대상 버킷의 /root/tutorial 폴더로 전송됩니다.
    rejectlistCloud Storage 대상 버킷의 폴더로 전송되지 않는 테이블 및 스키마를 포함한 모든 스키마입니다. 이 튜토리얼에서 {} 값은 소스 데이터베이스의 테이블 및 데이터가 대상 버킷으로 전송되지 않음을 나타냅니다.
    file_rotation_mb소스 데이터베이스에서 Cloud Storage 대상 버킷의 폴더로 전송되는 데이터가 포함된 파일 크기(MByte)입니다. 이 튜토리얼에서는 데이터가 소스 데이터베이스에서 검색되므로, 5MB 파일로 기록됩니다. 데이터가 이 크기를 초과할 경우 데이터가 여러 개의 5MB 파일로 분할됩니다.
    file_rotation_intervalDatastream이 Cloud Storage 대상 버킷의 폴더에서 기존 파일을 닫고 소스 데이터베이스에서 전송되는 파일을 포함하도록 다른 파일을 열기까지 경과되는 시간(초)입니다. 이 튜토리얼에서는 파일 순환 간격이 15초로 설정됩니다.
    avro_file_format

    Datastream이 소스 데이터베이스에서 Cloud Storage 대상 버킷의 폴더로 전송하는 파일의 형식입니다. 이 튜토리얼에서는 파일 형식이 Avro입니다.

    backfill_all

    이 매개변수는 내역 백필과 연결됩니다. 이 매개변수를 빈 사전({})으로 설정하면 Datastream이 다음 항목을 백필합니다.

    • 지속적인 데이터 변경사항 외에도 소스 데이터베이스에서 대상으로의 내역 데이터
    • 소스에서 대상으로의 스키마 및 테이블
  5. 스트림을 검증해서 스트림이 성공적으로 실행되고 모든 검증 확인이 통과하는지 확인합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" "https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id=STREAM_ID&validate_only=true"
    
  6. 코드의 {} 줄을 확인합니다. 스트림이 모든 검증 검사를 통과했고 스트림과 연관된 오류가 없음을 나타냅니다.

  7. 만들려는 스트림을 제출합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X POST -d $STREAM -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams?stream_id=STREAM_ID
    
  8. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/streams/STREAM_ID",
        "verb": "create",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  9. 스트림이 생성되는지 확인합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams
    
  10. 생성된 스트림에 대한 결과가 반환되는지 확인합니다.

    {
      "streams": [
        {
          "name": "PROJECT_PATH/streams/STREAM_ID",
          "createTime": "DATE_AND_TIME_STAMP",
          "updateTime": "DATE_AND_TIME_STAMP",
          "displayName": "DISPLAY_NAME",
          "sourceConfig": {
            "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
            "oracleSourceConfig": {
              "allowlist": {
                "oracleSchemas": [
                  {
                    "schema": "ROOT"
                  }
                ]
              },
              "rejectlist": {}
            }
          },
          "destinationConfig": {
            "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
          "gcsDestinationConfig": {
              "fileRotationMb": 5,
              "fileRotationInterval": "15s"
              "avroFileFormat": {}
            }
          },
          "state": "CREATED",
          "backfillAll": {}
        }
      ]
    }
    

스트림 관리

이 절차에서는 이전에 만든 스트림을 사용해서 소스 Oracle 데이터베이스의 데이터를 Cloud Storage 대상 버킷의 폴더로 전송합니다. 여기에는 다음이 포함됩니다.

  • 스트림에 대한 정보 검색
  • 스트림 수정
  • 스트림 시작
  • 오류 가져오기 API를 사용해서 스트림과 연결된 오류를 감지합니다.
  • 스트림 일시중지 및 재개
  1. 스트림에 대한 정보를 검색합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID
    
  2. 이 스트림에 대한 정보가 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/streams/STREAM_ID",
      "createTime": "DATE_AND_TIME_STAMP",
      "updateTime": "DATE_AND_TIME_STAMP",
      "displayName": "DISPLAY_NAME",
      "sourceConfig": {
        "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "oracleSourceConfig": {
          "allowlist": {
            "oracleSchemas": [
              {
                "schema": "ROOT"
              }
            ]
          },
          "rejectlist": {}
         }
        },
        "destinationConfig": {
          "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
          "gcsDestinationConfig": {
            "fileRotationMb": 5,
            "fileRotationInterval": "15s"
            "avroFileFormat": {}
          }
        },
        "state": "CREATED",
        "backfillAll": {}
      }
    
  3. 이 스트림을 수정합니다. 이렇게 하려면 UPDATE 변수를 설정합니다. 이 변수에는 변경하려는 스트림의 값이 포함됩니다. 이 튜토리얼에서는 소스 데이터베이스에서 Cloud Storage 대상 버킷의 폴더로 전송되는 데이터가 포함된 파일 크기(MByte)를 5MByte에서 100MByte로 변경합니다. 데이터가 소스 데이터베이스에서 검색되면 이제 100MB 파일로 기록됩니다. 데이터가 이 크기를 초과할 경우 데이터가 여러 개의 100MB 파일로 분할됩니다.

    변수를 설정하려면 프롬프트에서 다음 명령어를 입력합니다.

    UPDATE="{\"destination_config\":{\"gcs_destination_config\":{\"file_rotation_mb\":100}}}"
    
  4. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X PATCH -d $UPDATE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID/?update_mask=destination_config.gcs_destination_config.file_rotation_mb
    
  5. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/streams/STREAM_ID",
        "verb": "update",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  6. 스트림이 수정되었는지 확인합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID
    
  7. Cloud Storage 연결 프로필에 대해 fileRotationMb 매개변수 값이 이제 100인지 확인합니다.

    {
      "name": "PROJECT_PATH/streams/STREAM_ID",
      "createTime": "DATE_AND_TIME_STAMP",
      "updateTime": "DATE_AND_TIME_STAMP",
      "displayName": "DISPLAY_NAME",
      "sourceConfig": {
        "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "oracleSourceConfig": {
          "allowlist": {
            "oracleSchemas": [
              {
                "schema": "ROOT"
              }
            ]
          },
          "rejectlist": {}
         }
        },
        "destinationConfig": {
          "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
          "gcsDestinationConfig": {
            "fileRotationMb": 100,
            "fileRotationInterval": "15s"
            "avroFileFormat": {}
          }
        },
        "state": "CREATED",
        "backfillAll": {}
      }
    
  8. 스트림을 시작합니다. 다음 안내를 따르세요.

    1. UPDATE 변수를 변경합니다. 프롬프트에서 다음 명령어를 입력합니다.

      UPDATE="{\"state\":\"RUNNING\"}"
      
    2. 그런 후 다음 명령어를 입력합니다.

      curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID?updateMask=state
      
  9. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/streams/STREAM_ID",
        "verb": "start",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  10. 몇 분 후 스트림 정보를 검색하여 시작되었는지 확인합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID
    
  11. 스트림 상태가 CREATED에서 RUNNING으로 변경되었는지 확인합니다.

    {
      "name": "PROJECT_PATH/streams/STREAM_ID",
      "createTime": "DATE_AND_TIME_STAMP",
      "updateTime": "DATE_AND_TIME_STAMP",
      "displayName": "DISPLAY_NAME",
      "sourceConfig": {
        "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "oracleSourceConfig": {
          "allowlist": {
            "oracleSchemas": [
              {
                "schema": "ROOT"
              }
            ]
          },
          "rejectlist": {}
        }
      },
      "destinationConfig": {
        "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
        "gcsDestinationConfig": {
          "fileRotationMb": 100,
          "fileRotationInterval": "15s"
          "avroFileFormat": {}
        }
      },
      "state": "RUNNING",
      "backfillAll": {}
    }
    
  12. 오류 가져오기 API를 사용해서 스트림과 연결된 오류를 검색합니다.

    1. 프롬프트에서 다음 명령어를 입력합니다.

      curl -X POST -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID:fetchErrors
      
    2. 다음 코드 줄이 표시되는지 확인합니다.

        {
          "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID",
          "metadata": {
            "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
            "createTime": "DATE_AND_TIME_STAMP",
            "target": "PROJECT_PATH/streams/STREAM_ID",
            "verb": "fetchErrors",
            "requestedCancellation": false,
            "apiVersion": "DATASTREAM_API_VERSION"
          },
          "done": false
        }
        

    3. 프롬프트에서 다음 명령어를 입력합니다.

      curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID
      
    4. 다음 코드 줄이 표시되는지 확인합니다.

        {
          "name": "PROJECT_PATH/operations/operation-FETCH_ERRORS_OPERATION_ID",
          "metadata": {
            "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
            "createTime": "DATE_AND_TIME_STAMP",
            "endTime": "DATE_AND_TIME_STAMP",
            "target": "PROJECT_PATH/streams/STREAM_ID",
            "verb": "fetchErrors",
            "requestedCancellation": false,
            "apiVersion": "DATASTREAM_API_VERSION"
          },
          "done": true,
          "response": {
            "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.FetchErrorsResponse"
          }
        }
        

  13. 스트림을 일시중지합니다. 다음 안내를 따르세요.

    1. UPDATE 변수를 변경합니다. 프롬프트에서 다음 명령어를 입력합니다.

      UPDATE="{\"state\":\"PAUSED\"}"
      
    2. 그런 후 다음 명령어를 입력합니다.

      curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID?updateMask=state
      
  14. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/streams/STREAM_ID",
        "verb": "start",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  15. 스트림에 대한 정보를 검색하여 일시중지되었는지 확인합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID
    
  16. 스트림 상태가 RUNNING에서 PAUSED으로 변경되었는지 확인합니다.

    {
      "name": "PROJECT_PATH/streams/STREAM_ID",
      "createTime": "DATE_AND_TIME_STAMP",
      "updateTime": "DATE_AND_TIME_STAMP",
      "displayName": "DISPLAY_NAME",
      "sourceConfig": {
        "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "oracleSourceConfig": {
          "allowlist": {
            "oracleSchemas": [
              {
                "schema": "ROOT"
              }
            ]
          },
          "rejectlist": {}
        }
      },
      "destinationConfig": {
        "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
        "gcsDestinationConfig": {
          "fileRotationMb": 100,
          "fileRotationInterval": "15s"
          "avroFileFormat": {}
        }
      },
      "state": "PAUSED",
      "backfillAll": {}
    }
    
  17. 일시중지된 스트림을 재개합니다. 다음 안내를 따르세요.

    1. UPDATE 변수를 변경합니다. 프롬프트에서 다음 명령어를 입력합니다.

      UPDATE="{\"state\":\"RUNNING\"}"
      
    2. 그런 후 다음 명령어를 입력합니다.

      curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID?updateMask=state
      
  18. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/streams/STREAM_ID",
        "verb": "start",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  19. 몇 초 후 스트림 정보를 검색하여 다시 실행되는지 확인합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID
    
  20. 스트림 상태가 PAUSED에서 RUNNING으로 다시 변경되었는지 확인합니다.

    {
      "name": "PROJECT_PATH/streams/STREAM_ID",
      "createTime": "DATE_AND_TIME_STAMP",
      "updateTime": "DATE_AND_TIME_STAMP",
      "displayName": "DISPLAY_NAME",
      "sourceConfig": {
        "sourceConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "oracleSourceConfig": {
          "allowlist": {
            "oracleSchemas": [
              {
                "schema": "ROOT"
              }
            ]
          },
          "rejectlist": {}
        }
      },
      "destinationConfig": {
        "destinationConnectionProfileName": "projects/YOUR_PROJECT_NUMBER/locations/YOUR_PROJECT_LOCATION/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
        "gcsDestinationConfig": {
          "fileRotationMb": 100,
          "fileRotationInterval": "15s"
          "avroFileFormat": {}
        }
      },
      "state": "RUNNING",
      "backfillAll": {}
    }
    

스트림을 생성 및 관리하고 스트림과 관련된 오류가 없으며 스트림 상태가 RUNNING인지 확인했으므로, 이제 소스 데이터베이스의 데이터를 Cloud Storage 대상 버킷의 폴더로 전송할 수 있는지 확인할 준비가 되었습니다.

스트림 확인

이 절차에서는 Datastream을 확인합니다.

  • 소스 Oracle 데이터베이스의 ROOT 스키마와 연관된 모든 테이블의 데이터를 Cloud Storage 대상 버킷의 /root/tutorial 폴더로 전송합니다.
  • 데이터를 Avro 파일 형식으로 변환합니다.
  1. Cloud Storage에서 Storage 브라우저 페이지로 이동합니다.

    스토리지 브라우저 페이지로 이동

  2. 버킷이 포함된 링크를 클릭합니다.

  3. OBJECTS 탭이 활성화되지 않았으면 클릭합니다.

  4. root 폴더를 클릭한 다음 tutorial 폴더를 클릭합니다.

  5. 소스 Oracle 데이터베이스의 ROOT 스키마 테이블을 나타내는 폴더가 표시되는지 확인합니다.

  6. 테이블 폴더 중 하나를 클릭하고 테이블과 연결된 데이터가 표시될 때까지 드릴다운합니다.

  7. 데이터를 나타내는 파일을 클릭하고 DOWNLOAD를 클릭합니다.

  8. 이 파일을 Avro 도구(예: Avro Viewer)로 열고 콘텐츠를 읽을 수 있는지 확인합니다. 이렇게 해서 Datastream에서 데이터가 Avro 파일 형식으로 변환되었는지 알 수 있습니다.

삭제

이 튜토리얼을 완료한 후에는 할당량을 차지하지 않고 이후에 요금이 청구되지 않도록 Datastream에서 만든 리소스를 삭제할 수 있습니다. 다음 섹션에서는 이러한 리소스를 삭제 또는 해제하는 방법을 설명합니다.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.

프로젝트를 삭제하는 방법은 다음과 같습니다.

  1. Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.

    리소스 관리로 이동

  2. 프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
  3. 대화상자에서 프로젝트 ID를 입력한 후 종료를 클릭하여 프로젝트를 삭제합니다.

Cloud Storage 대상 버킷 삭제

  1. Cloud Storage의 왼쪽 탐색 창에서 브라우저 항목을 클릭합니다.

  2. 버킷 왼쪽의 체크박스를 선택하고 삭제를 클릭합니다.

  3. 버킷을 삭제하시겠어요? 창에서 텍스트 필드에 버킷 이름을 입력하고 확인을 클릭합니다.

스트림 삭제

  1. Cloud Shell 애플리케이션이 활성 상태인지 확인합니다.

  2. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams/STREAM_ID
    
  3. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-STREAM_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/streams/STREAM_ID",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  4. 스트림이 삭제되었는지 확인합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/streams
    
  5. null {} 값이 반환되는지 확인합니다. 이 값은 Datastream에 더 이상 스트림이 없고 사용자가 만든 스트림이 삭제되었음을 나타냅니다.

연결 프로필 삭제

  1. 소스 Oracle 데이터베이스에 대한 연결 프로필을 삭제합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID
    
  2. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-SOURCE_CONNECTION_PROFILE_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/connectionProfiles/SOURCE_CONNECTION_PROFILE_ID",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  3. Cloud Storage에서 대상 버킷에 대한 연결 프로필을 삭제합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -X DELETE -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID
    
  4. 다음 코드 줄이 표시되는지 확인합니다.

    {
      "name": "PROJECT_PATH/operations/operation-DESTINATION_CONNECTION_PROFILE_OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.datastream.DATASTREAM_API_VERSION.OperationMetadata",
        "createTime": "DATE_AND_TIME_STAMP",
        "target": "PROJECT_PATH/connectionProfiles/DESTINATION_CONNECTION_PROFILE_ID",
        "verb": "delete",
        "requestedCancellation": false,
        "apiVersion": "DATASTREAM_API_VERSION"
      },
      "done": false
    }
    
  5. 두 연결 프로필이 삭제되었는지 확인합니다. 프롬프트에서 다음 명령어를 입력합니다.

    curl -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" https://datastream.googleapis.com/DATASTREAM_API_VERSION/PROJECT_PATH/connectionProfiles
    
  6. null {} 값이 반환되는지 확인합니다. 이 값은 Datastream에 더 이상 연결 프로필이 없고 사용자가 만든 프로필이 삭제되었음을 나타냅니다.

다음 단계

  • Datastream에 대해 자세히 알아보기
  • 다른 Google Cloud 기능을 직접 사용해보세요. 가이드 참조