Datastream에서 Cloud Storage로 데이터를 스트리밍하면 버킷이라는 객체 컨테이너 내부에 소스 변경 이벤트를 저장할 수 있습니다. Google Cloud Cloud Storage 버킷에 데이터를 복제하면 Datastream은 Cloud Storage API에서 사용할 수 있도록 객체 이름과 이벤트 타임스탬프별로 파일을 구성합니다.
대상을 구성하려면 Datastream API를 사용 설정하고 대상 버킷과 파일 프리픽스를 지정합니다. 버킷이 다른 프로젝트에 있는 경우 교차 프로젝트 서비스 계정 권한도 부여합니다.
API 사용 설정
대상 Cloud Storage 버킷이 Datastream과 동일한 프로젝트에 있으면 Datastream API를 사용 설정하면 충분합니다.
다른 프로젝트의 버킷에 작성하는 경우 Datastream과 연결된 서비스 계정에 이 버킷에 액세스할 수 있는 권한을 부여해야 합니다.
- 서비스 계정에 사용되는 이메일 주소를 가져옵니다. Google Cloud 콘솔 홈페이지에서 프로젝트 번호를 찾으면 됩니다. 서비스 계정의 이메일 주소는
service-[project_number]@gcp-sa-datastream.입니다. - 이 이메일 주소에 대상 버킷에 쓸 수 있는 필수 권한(일반적으로
roles/storage.objectViewer,roles/storage.objectCreator및roles/storage.legacyBucketReader권한)을 부여합니다.
대상 버킷 및 프리픽스 지정
스트림 구성에서 프로젝트 이름, 버킷 이름, 선택적 파일 프리픽스를 제공하여 데이터가 기록되는 위치를 결정합니다.
쓰기 동작
- 지정된 스트림에 대한 데이터는 제공된 버킷 또는 파일 프리픽스(
[bucket]/[prefix]/[object name]/yyyy/mm/dd/hh/mm/[filename(idempotent)])에 작성됩니다. - 데이터베이스 소스 경로의 객체 이름은 스키마 이름 다음에 테이블 이름(밑줄 '_'로 구분됨)입니다.
- 경로의 타임스탬프(hh/mm)는 이벤트 메타데이터의 소스 타임스탬프입니다.
- 백필 이벤트의 경우 타임스탬프는 소스에서 데이터를 가져온 시간을 나타냅니다. Salesforce 소스의 경우 타임스탬프는 레코드가 마지막으로 변경된 시간을 나타냅니다.
- CDC 이벤트의 경우 타임스탬프는 소스에서 레코드가 변경된 시간을 나타냅니다.
- 파일은 최대 파일 크기 또는 최대 제한 시간 중 먼저 도달하는 시점마다 순환됩니다. Datastream API를 사용하여 최대 파일 크기와 최대 제한 시간 값을 조정할 수 있습니다.
- 또한 소스 스키마 변경이 감지될 때마다 파일이 순환됩니다(예: 새 열 추가).
- 동일한 시간에 동일한 경로 내에 여러 파일이 있을 수 있습니다.
- 데이터는 Cloud Storage API에 따라 소비될 수 있습니다.
- Cloud Storage에 데이터를 스트리밍할 때 최대 이벤트 크기는 100MB입니다.
- 소스 열 이름의 영숫자 문자 아닌 각 문자는 대상 파일에서 밑줄 (
_)로 대체됩니다.
경우에 따라, 특히 스트림이 처음 실행될 때 백필과 CDC가 겹쳐 중복 이벤트가 발생할 수 있습니다. Datastream이 현재 데이터베이스 로그 파일(스트림이 시작되기 전에 생성)에서 읽기를 시작하면 이 로그 파일에는 백필에서 캡처하는 일부 이벤트도 포함됩니다. 이는 예상되는 동작이며 필요한 경우 이벤트 메타데이터를 사용하여 중복 이벤트를 제거할 수 있습니다.
다음 단계
- Datastream을 사용하여 거의 실시간으로 데이터 변경사항을 스트리밍하는 방법을 알아보세요.