Cloud Storage 대상 구성

API 사용 설정

대상 Cloud Storage 버킷이 Datastream과 동일한 프로젝트에 있으면 Datastream API를 사용 설정하면 충분합니다.

다른 프로젝트의 버킷에 작성하는 경우 Datastream과 연결된 서비스 계정에 이 버킷에 액세스할 수 있는 권한을 부여해야 합니다.

  1. 서비스 계정에 사용되는 이메일 주소를 가져옵니다. Google Cloud 콘솔 홈페이지에서 프로젝트 번호를 찾으면 됩니다. 서비스 계정의 이메일 주소는 service-[project_number]@gcp-sa-datastream.iam.gserviceaccount.com입니다.
  2. 이 이메일 주소에 대상 버킷에 쓸 수 있는 필수 권한(일반적으로 roles/storage.objectViewer, roles/storage.objectCreatorroles/storage.legacyBucketReader 권한)을 부여합니다.

대상 버킷 및 프리픽스 지정

데이터 쓰기 위치를 결정하기 위해 스트림 구성에 프로젝트 이름, 버킷 이름, 선택적인 파일 프리픽스를 제공합니다.

쓰기 동작

  • 특정 스트림의 데이터는 [bucket]/[prefix]/[object name]/yyyy/mm/dd/hh/mm/[filename(idempotent)]에 제공된 버킷 또는 파일 프리픽스에 기록됩니다.
  • 데이터베이스 소스 경로의 객체 이름은 스키마 이름 다음에 테이블 이름(밑줄 '_'로 구분됨)입니다.
  • 경로의 타임스탬프(hh/mm)는 이벤트 메타데이터의 소스 타임스탬프입니다.
    • 백필 이벤트의 경우 타임스탬프는 백필 태스크가 시작된 시간(일반적으로 스트림이 시작되었거나 백필이 수동으로 트리거된 시간)을 나타냅니다.
    • CDC 이벤트의 경우 타임스탬프는 소스에서 레코드가 변경된 시간을 나타냅니다.
  • 파일은 최대 파일 크기 또는 최대 제한 시간에 도달할 때마다 순환됩니다. Datastream API를 사용하여 최대 파일 크기 및 최대 제한 시간 값을 조정할 수 있습니다.
  • 또한 소스 스키마 변경이 감지될 때마다 파일이 순환됩니다(예: 새 열 추가).
  • 1분 동안 동일한 경로 내에 여러 파일이 있을 수 있습니다.
  • Cloud Storage API에 따라 데이터 소비가 가능합니다.
  • Cloud Storage로 데이터를 스트리밍할 때 최대 이벤트 크기는 30MB입니다.

경우에 따라 스트림 실행이 처음 시작될 때 백필과 CDC가 중복되어 이벤트가 중복될 수 있는 경우가 가장 많습니다. Datastream이 현재 데이터베이스 로그 파일(스트림이 시작되기 전에 생성)에서 읽기를 시작하면 이 로그 파일에는 백필에서 캡처하는 일부 이벤트도 포함됩니다. 이는 예상된 동작이며 필요한 경우 이벤트 메타데이터를 사용하여 중복 이벤트를 제거할 수 있습니다.