FAQ

개요

이 페이지에서는 Datastream 사용과 관련된 자주 묻는 질문(FAQ)의 답변을 확인할 수 있습니다. 이 FAQ에서 다루는 내용은 다음과 같습니다.

  • DataStream 및 변경 데이터 캡처(CDC)에 대한 일반적인 질문
  • 일반 소스 동작 및 제한사항
  • MySQL 소스 동작 및 제한사항
  • Oracle 소스 동작 및 제한사항
  • PostgreSQL 소스 동작 및 제한사항(PostgreSQL용 AlloyDB 포함)
  • SQL Server 소스 동작 및 제한사항
  • BigQuery 대상 동작
  • Cloud Storage 대상 동작
  • Datastream 사용의 일반적인 사용 사례
  • DataStream과 Google Cloud 데이터 서비스의 통합 방법
  • 보안 및 연결
  • DataStream 모니터링
  • 가격 책정
  • Datastream에 대한 추가 정보

DataStream 및 변경 데이터 캡처(CDC)에 대한 일반적인 질문

질문 답변
DataStream이란 무엇인가요?

Datastream은 사용하기 쉬운 서버리스 변경 데이터 캡처(CDC) 및 복제 서비스입니다. Datastream을 사용하면 PostgreSQL용 AlloyDB, PostgreSQL, MySQL, SQL Server, Oracle과 같은 관계형 데이터베이스 소스의 데이터를 BigQuery로 직접 원활하게 복제할 수 있습니다. Datastream은 현대 기업에 필요한 확장성, 속도, 보안, 단순성을 제공합니다. 서버리스 자동 확장 아키텍처를 통해 DataStream을 사용하면 지연 시간이 짧은 데이터 복제를 위한 ELT(Extract, Load, Transform) 파이프라인을 쉽게 설정하여 거의 실시간으로 유용한 정보를 얻을 수 있습니다.

DataStream은 이기종 데이터베이스 및 애플리케이션 간에 데이터 스트림을 최소한의 지연 시간으로 안정적으로 동기화할 수 있게 해 줍니다. 이 서비스는 Dataflow 템플릿과의 간소화된 통합을 제공하여 데이터베이스를 동기화하기 위해 데이터베이스를 Cloud SQL 또는 Spanner에 복제하거나, Cloud Storage에서 직접 이벤트 스트림을 활용하여 이벤트 기반 아키텍처를 실현합니다.

DataStream에서는 어떤 방법으로 데이터를 스트림하나요? DataStream은 다음 두 가지 방법 중 하나를 사용하여 소스에서 대상으로 데이터를 스트림합니다.
  • CDC: 소스의 진행 중인 변경사항을 실시간으로 캡처합니다.
  • 백필: 테이블에 있는 데이터의 이전 스냅샷을 제공합니다.
CDC란 무엇인가요?

CDC는 더 적은 시스템 리소스를 사용해 데이터를 빠르게 통합하고 분석할 수 있는 데이터 통합 방식입니다. 이 방법에서는 데이터 소스에서 최신 변경사항(업데이트, 삽입 또는 삭제)만 가져오며 주로 소스가 자체 내부 트랜잭션 무결성을 위해 유지하는 변경사항 로그를 읽습니다.

CDC는 운영 데이터 스토어 및 데이터 웨어하우스에 새 데이터를 로드할 때 소스에 미치는 영향을 제한하는 매우 효율적인 메커니즘으로서 데이터 대상으로 데이터 변경사항을 점진적으로 로드하거나 거의 실시간으로 스트리밍하도록 지원하여 일괄 로드 업데이트와 불편한 일괄 기간이 필요 없습니다.

CDC는 분석, 지리적으로 분산된 시스템 간 데이터 동기화, 이벤트 기반 아키텍처와 같이 데이터 변경에 대한 지속적인 액세스를 통해 가치를 도출하는 여러 사용 사례에 이용할 수 있습니다.

백필이란 무엇인가요?

지속적인 변경 외에도 DataStream은 백필을 사용하여 소스에서 모든 기존 데이터를 가져온 다음 데이터를 대상으로 스트림합니다. 즉, 대상이 소스의 모든 이전 데이터로 '백필'됩니다. 백필에는 두 가지 유형이 있습니다.

  • 증분: 테이블의 기본 백필 유형입니다. 증분 백필 중에 Datastream은 여러 배치의 행 범위에서 데이터를 가져오고 배치별로 데이터를 대상으로 스트리밍합니다.
  • 전체 덤프: 전체 덤프 백필 중에 Datastream이 모든 데이터를 한 번에 가져와 대상으로 스트리밍합니다.
백필을 수행할 때 고려해야 할 제한사항이 있나요?

백필 제약조건에 대한 자세한 내용은 각 소스 유형의 알려진 제한사항 페이지를 참조하세요.

CDC 및 백필 작업에 권장되는 순서는 무엇인가요? 대부분의 경우 이에 관해 특별히 고려해야 할 사항은 없습니다. 스트림에서 백필이 사용 설정되었으면 Datastream이 백필과 CDC를 동시에 수행합니다. Datastream을 사용하여 백필할 수 없는 매우 큰 테이블을 복제할 때 등 일부 특이 사례의 경우 스트림을 시작하기 전 BigQuery에 먼저 데이터를 로드해야 할 수 있습니다.
CDC 및 백필 작업의 상태를 모니터링할 수 있나요?

객체별로 백필 상태를 모니터링할 수 있습니다.

  1. Google Cloud 콘솔에서 스트림 페이지로 이동합니다.
  2. 모니터링할 스트림을 클릭합니다.
  3. 객체 탭을 클릭합니다.

CDC 상태는 실질적으로 스트림 상태입니다. CDC 작업이 실패하면 전체 스트림이 실패합니다.

추가 객체 수준 측정항목은 Cloud Monitoring에서 사용할 수 있습니다. 자세한 내용은 Cloud Monitoring 문서를 참조하세요.

변경 내역과 복제란 무엇인가요?

변경 내역은 Datastream에서 다운스트림 소비를 위해 대상으로 내보내는 이벤트 시퀀스입니다. 변경 내역을 Cloud Storage에 기록한 결과로 일정 기간 동안 특정 테이블의 변경 로그 이벤트가 포함된 파일 집합이 제공됩니다. 이벤트는 해당 테이블에 대한 삽입, 업데이트, 삭제를 나타내며 이벤트 기반 아키텍처와 같은 사용 사례를 위해 Dataflow와 같은 서비스에서 이벤트를 사용하여 Cloud Storage의 다운스트림으로 처리할 수 있습니다.

Datastream 컨텍스트에서 복제는 대상의 소스 테이블에 대한 1:1 최신 표현을 의미합니다. 예를 들어 변경사항이 BigQuery 테이블에 지속적으로 복제되는 Oracle의 테이블은 Oracle 테이블에서 스트리밍된 변경사항을 사용하여 최신 상태로 유지됩니다. 복제는 각 변경 이벤트를 소비하고 이를 사용하여 대상을 업데이트하는 방식으로 변경 내역을 활용합니다. Datastream은 BigQuery에 직접 복제할 수 있으며 Cloud Storage에서 변경 내역 이벤트를 가져오는 템플릿을 활용하고 그에 따라 대상 테이블을 업데이트하여 Dataflow와의 통합을 통해 Cloud SQL 및 Spanner와 같은 추가 대상을 지원합니다.

DataStream을 사용하려면 소스에 에이전트가 있어야 하나요? 소스에 에이전트를 설치할 필요가 없습니다. Datastream은 Oracle LogMiner와 같은 기존 인터페이스를 사용하여 소스에서 데이터를 가져옵니다.
단일 스트림에 테이블을 몇 개 포함할 수 있나요? DataStream은 단일 스트림으로 최대 10,000개의 테이블을 처리할 수 있습니다. PostgreSQL 소스에서 대규모 트랜잭션을 복제할 때와 같이 각기 다른 논리적 흐름에 대해 서로 다른 스트림을 사용해야 할 비즈니스적인 고려 사항이 있을 수 있더라도 데이터베이스를 여러 스트림으로 분할해야 할 기술적인 이유는 존재하지 않습니다. 하지만 각 스트림은 소스 데이터베이스에 부하를 더합니다. 이러한 부하는 CDC의 경우 무시할 수 있지만 백필에서는 큰 영향을 미칠 수 있습니다.
프로덕션 데이터베이스에서 DataStream을 사용할 경우 성능에 어떤 영향을 미치나요?

CDC는 대상 데이터 저장소 및 데이터 웨어하우스에 새 데이터를 로드할 때 소스에 미치는 영향을 제한하는 매우 효율적인 메커니즘입니다. CDC는 대상으로 데이터 변경사항을 점진적으로 로드하거나 거의 실시간으로 스트리밍하도록 지원하여 일괄 로드 업데이트와 불편한 일괄 기간도 필요 없습니다.

또한 Datastream은 동시 백필 태스크 수를 제한하고 백필할 객체와 백필 시점을 제어하는 기능을 제공하여 초기 백필의 영향을 최소화합니다.

소스의 로그 파일을 Google Cloud로 복사할 수 있나요? 아니요. DataStream은 데이터베이스 서버에서 직접 로그를 쿼리하며 지정된 테이블의 변경사항만 대상에 기록됩니다.
DataStream도 이전 데이터를 전송할 수 있나요? 예. 기본적으로 DataStream은 사용자가 지정한 소스의 데이터베이스 테이블에서 모든 이전 데이터를 CDC 스트림과 함께 가져옵니다. DataStream은 소스의 일부 또는 모든 데이터베이스 테이블에서 이전 데이터를 가져올 수 있는 유연성을 제공합니다. 또한 스트림을 구성할 때 이전 백필을 중지할 수도 있습니다.
DataStream은 정확한 1회 전송을 보장하나요? 아니요. DataStream은 최소 1회 전송입니다. DataStream이 각 이벤트에 쓰는 추가 메타데이터를 사용하여 중복 데이터를 삭제할 수 있습니다.
DataStream에서 암호화된 데이터베이스를 처리할 수 있나요? 예.
DataStream은 소스에서 특정 테이블과 열을 스트림할 수 있나요? 예. DataStream을 사용하면 소스 및 대상에서 원하는 데이터만 스트림되도록 테이블 및 스키마에 대한 포함 및 제외 목록을 지정할 수 있습니다. 포함 테이블의 경우, 테이블의 특정 열을 제외하여 대상으로 스트림할 데이터를 정확하게 미세 조정할 수 있습니다. 그러나 구체화된 뷰는 복제할 수 없습니다.
스트림을 다른 프로젝트나 리전으로 이동하려면 어떻게 해야 하나요?
  1. 기존 스트림과 동일한 구성을 사용하여 새 리전 또는 프로젝트에서 스트림을 만듭니다. 하지만 이전 데이터 백필 체크박스를 선택하지 않습니다.
  2. 생성된 스트림을 시작합니다.
  3. 생성된 스트림의 상태가 RUNNING이면 기존 스트림을 일시중지합니다.
  4. 필요한 경우 이전 데이터 백필 체크박스를 선택하여 새 스트림을 수정합니다. 이후에 스트림에 추가되는 테이블의 기존 데이터가 소스에서 대상으로 스트림됩니다.
DataStream은 데이터베이스 로그 파일에서 커밋되지 않은 트랜잭션을 어떻게 처리하나요? 데이터베이스 로그 파일에 커밋되지 않은 트랜잭션이 포함된 경우 트랜잭션이 롤백되면 데이터베이스에서 이를 로그 파일에 '역전' DML 작업으로 반영합니다. 예를 들어 롤백된 INSERT 작업에는 이에 해당하는 DELETE 작업이 있습니다. DataStream이 로그 파일에서 이러한 작업을 읽습니다.
DataStream의 사용 가능한 리전은 어디인가요?

DataStream을 사용할 수 있는 리전 목록을 보려면 IP 허용 목록 및 리전을 참조하세요.

일반 소스 동작 및 제한사항

질문 답변
Datastream은 어떤 소스를 지원하나요?

Datastream은 Oracle, MySQL, PostgreSQL, PostgreSQL용 AlloyDB, SQL Server 소스(클라우드 호스팅 및 자체 관리형 소스)의 데이터 스트리밍을 지원합니다. 소스별 버전에 대한 자세한 내용은 다음 페이지를 참조하세요.

DataStream에서 암호화된 데이터베이스를 처리할 수 있나요? 예.
DataStream은 소스에서 데이터를 어떻게 추출하나요?

MySQL의 경우 Datastream은 MySQL 바이너리 로그를 처리하여 변경 이벤트를 추출합니다.

Oracle의 경우 DataStream은 LogMiner 및 추가 로깅 설정을 사용하여 Oracle의 재실행 로그에서 데이터를 추출합니다.

PostgreSQL 및 PostgreSQL용 AlloyDB의 경우 Datastream은 PostgreSQL의 논리적 디코딩 기능을 사용합니다. 논리적 디코딩은 데이터베이스에 커밋된 모든 변경사항을 노출하고 이러한 변경사항을 사용하고 처리할 수 있게 해줍니다.

SQL Server의 경우 Datastream은 트랜잭션 로그를 사용하여 데이터 조작 언어(DML) 변경사항을 추적합니다.

소스의 로그 파일을 Google Cloud로 직접 복사할 수 있나요? DataStream은 로그 파일 전체를 복사하지 않지만 데이터베이스 서버에서 직접 로그 파일을 쿼리하며 지정된 테이블의 변경사항만 대상으로 복제합니다.
DataStream에서 처리할 수 있는 데이터에는 어떤 제한사항이 있나요?

특정 데이터베이스 소스에 적용되는 일반적인 제한사항 및 여러 제한사항이 있습니다.

일반적인 제한사항은 다음과 같습니다.

  • 이벤트 크기: Cloud Storage 대상의 경우 최대 행 크기가 30MB, BigQuery의 경우 최대 행 크기가 20MB로 제한됩니다.
  • 일부 데이터 정의 언어(DDL) 작업이 복제 중에 지원되지 않습니다. 예를 들면 다음과 같습니다.
    • 테이블 중간의 열 삭제: 값이 잘못된 열과 연결되어 데이터 불일치가 발생할 수 있습니다.
    • 열의 데이터 유형 변경: 데이터가 올바른 DataStream 통합 유형에 제대로 매핑되지 않아 데이터 불일치가 발생할 수 있으며 데이터가 손상될 수 있습니다.
    • 연속 삭제는 무시됩니다.
    • 테이블 잘림은 무시됩니다.

소스별 제한사항은 다음 페이지를 참조하세요.

DataStream에서 생성된 모든 이벤트에 포함되는 데이터는 무엇인가요? 삽입, 업데이트, 삭제 시 생성되는 각 이벤트에는 각 열의 데이터 유형 및 값과 함께 소스의 전체 데이터 행이 포함됩니다. 또한 각 이벤트에는 순서를 지정하고 정확히 1회 전송을 보장하는 데 사용할 수 있는 이벤트 메타데이터가 포함되어 있습니다.
DataStream에서 순서가 보장되나요? DataStream은 순서를 보장하지 않지만 각 이벤트에 추가 메타데이터를 제공합니다. 이 메타데이터를 사용하면 대상에서 eventual consistency를 보장할 수 있습니다. 변경사항의 소스, 비율, 빈도와 기타 매개변수에 따라 일반적으로 1시간 내에 eventual consistency를 달성할 수 있습니다.
DataStream은 정확한 1회 전송을 보장하나요? DataStream은 최소 1회 전송입니다. Datastream이 각 이벤트에 쓰는 추가 메타데이터를 사용하여 중복 데이터를 제거할 수 있습니다.
DataStream은 다운스트림 처리에 사용할 소스의 데이터 유형을 어떻게 표현하나요?

Cloud Storage와 같이 스키마가 없는 대상에 작성할 때 Datastream은 모든 소스의 데이터 유형을 정규화하여 소스 간 데이터 다운스트림 처리를 간소화합니다. Datastream은 원래의 소스 데이터 유형(예: MySQL 또는 PostgreSQL NUMERIC 유형 또는 Oracle NUMBER 유형)을 가져와 Datastream 통합 유형으로 정규화합니다.

통합 유형은 가능한 모든 소스 유형의 무손실 상위 집합을 나타내며, 정규화를 통해 다양한 소스의 데이터를 소스에 상관없이 쉽게 처리하고 다운스트림으로 쿼리할 수 있습니다.

DataStream에서 소스의 구조(스키마) 변경사항을 어떻게 처리하나요? DataStream은 주기적으로 소스에서 스키마를 가져옵니다. 스키마는 Datastream의 내부 스키마 레지스트리에 저장되며, 각 이벤트에서 생성 시점에 스키마를 참조합니다. 이를 통해 Datastream은 스키마 변경사항을 추적하고 이러한 변경사항을 기반으로 조정하여 모든 데이터가 대상에 올바르게 스트리밍 및 로드되도록 보장합니다. 하지만 다음 번 스키마를 가져오기 전에 감지되지 않은 일부 스키마 변경사항이 있을 경우 데이터 불일치가 발생할 수 있습니다.
소스 데이터베이스에서 열을 삭제했지만 대상 위치에 계속 표시됩니다. 왜일까요? Datastream은 대상에서 열을 삭제하지 않습니다. 열을 수동으로 삭제해야 합니다. 삭제된 열을 대상에 유지하는 것이 좋은 경우도 있으므로 이는 의도적인 동작입니다. 예를 들어 Datastream은 소스의 열 이름을 변경하면 열을 삭제하고 다른 열을 추가하는 것으로 해석합니다. 이 경우 대상의 원래 열을 잃고 싶지 않을 것입니다.
검증 실패로 인해 스트림이 시작되지 않지만, 이는 오류로 생각되거나 그래도 스트림을 실행하고자 합니다. 이 검증을 통과하려면 어떻게 해야 하나요? force=true 플래그를 추가하고 검증 확인을 건너뛰어 API를 사용하여 스트리밍을 시작할 수 있습니다. 검증을 건너뛰어도 스트리밍이 실행될 수 있다고 보장할 수 없으며 데이터베이스에 필요한 구성 또는 권한이 누락된 경우에도 실패할 수 있습니다.
실패한 스트림을 다시 시작할 수 있나요?

Datastream에서 보고된 오류를 해결하여 Failed 상태의 스트림을 수정할 수 있습니다. 자세한 내용은 스트림 문제 해결을 참조하세요.

Failed permanently 상태의 스트림을 복구할 수도 있습니다. 자세한 내용은 스트림 복구를 참조하세요.

Datastream에서 데이터베이스 테이블을 잠그나요?

아니요. Datastream에서 테이블을 잠글 필요가 없습니다.

각 소스의 제한사항 페이지에서는 스트림에 최대 10,000개의 테이블을 포함할 수 있도록 지정합니다. 그럼 DataStream은 10,000개가 넘는 테이블에 대해 CDC 작업을 동시에 실행할 수 있는 건가요? 아니요. 언급된 한도는 스트림별입니다. 총 테이블 수가 10,000개를 초과하는 스트림을 여러 개 가질 수 있습니다.

MySQL 소스 동작 및 제한사항

질문 답변
DataStream은 MySQL에서 데이터를 어떻게 가져오나요? DataStream은 MySQL의 바이너리 로그를 사용하여 MySQL에서 변경 이벤트를 추출합니다.
DataStream은 MySQL용 Cloud SQL 읽기 복제본 인스턴스를 지원하나요?

예. DataStream은 MySQL용 Cloud SQL 버전 5.7 및 8.0의 읽기 복제본 인스턴스를 지원합니다.

이러한 인스턴스에서 바이너리 로깅을 사용 설정하면 됩니다. 이를 사용 설정하려면 다음 gcloud 명령어를 실행합니다.

gcloud sql instances patch INSTANCE_NAME -- enable-bin-log

자세한 내용은 읽기 복제본의 바이너리 로깅을 참조하세요.

Datastream이 소스 MySQL 데이터베이스에서 데이터를 복제하는 데 필요한 최소 권한은 무엇인가요?

MySQL 데이터베이스에서 데이터를 복제하려면 Datastream 사용자에게 다음 권한을 부여해야 합니다.

  • SELECT
  • REPLICATION SLAVE
  • REPLICATION CLIENT
Datastream에서 바이너리 로그 압축을 지원하나요?

아니요. Datastream은 바이너리 로그 트랜잭션 압축을 통해 트랜잭션 이벤트를 압축하는 것을 지원하지 않습니다. Datastream에서 MySQL에 대한 변경 데이터 캡처 기능을 사용하려면 바이너리 로그 트랜잭션 압축을 사용 중지하세요.

조직에서 모든 테이블 및 데이터베이스에 대한 SELECT 권한 부여를 허용하지 않습니다. 여전히 Datastream을 사용할 수 있나요?

복제할 특정 테이블 또는 데이터베이스의 전체 스키마에 SELECT 권한을 부여할 수 있습니다. 이렇게 하려면 다음 명령어 중 하나를 실행하세요.

GRANT SELECT ON DATABASE_NAME.TABLE_NAME TO USER_NAME@'%';
또는
GRANT SELECT ON DATABASE_NAME.* TO USER_NAME@'%';

다음을 바꿉니다.

  • DATABASE_NAME: MySQL 데이터베이스의 이름입니다.
  • TABLE_NAME: SELECT 권한을 부여할 테이블의 이름입니다.
  • USER_NAME: SELECT 권한을 부여할 사용자의 이름입니다.

특정 호스트 이름으로 권한을 제한하려면 % 문자를 특정 IP 주소 또는 주소 범위로 바꿉니다.

Oracle 소스 동작 및 제한사항

질문 답변
DataStream은 Oracle에서 데이터를 어떻게 가져오나요? DataStream은 Oracle LogMiner를 사용하여 Oracle의 재실행 로그에서 데이터를 추출합니다.
DataStream을 사용하려면 Oracle의 GoldenGate 라이선스가 필요한가요? 아니요. Datastream은 Oracle LogMiner를 사용하여 데이터베이스의 재실행 로그에서 데이터를 읽기 때문에 GoldenGate 라이선스가 필요하지 않습니다.
Oracle LogMiner가 더 이상 지원되지 않으면 어떻게 되나요? Oracle LogMiner는 여전히 모든 Oracle 정식 버전에서 지원되며 Datastream은 이후 모든 출시 버전에서 계속 LogMiner를 지원합니다. Oracle에서 LogMiner CONTINUOUS_MINE 옵션의 지원을 중단했지만 이 옵션은 Datastream에서 사용되지 않으므로 이 지원 중단은 Datastream에 영향을 미치지 않습니다.
DataStream은 Oracle 데이터베이스에서 전송 중인 데이터의 암호화를 지원하나요?

DataStream은 Oracle Net Services를 기반으로 전송 중인 데이터의 암호화를 지원합니다. DataStream은 REQUESTED 모드에서 실행됩니다.

DataStream에서 보안 소켓 레이어(SSL) 및 전송 계층 보안(TLS) 암호화를 지원하나요?

예. Datastream은 Oracle 소스에 대한 SSL/TLS 암호화 연결에 대해 TCPS 프로토콜을 지원합니다.

DataStream은 Oracle 멀티 테넌트 아키텍처, 특히 컨테이너 데이터베이스(CDB)와 플러그인 가능한 데이터베이스(PDB)를 지원하나요? 예. Datastream은 Oracle 멀티 테넌트 아키텍처(CDB/PDB)를 지원하지만 스트림에서 플러그인 가능한 단일 데이터베이스만 복제할 수 있습니다.
조직에서 GRANT SELECT ANY TABLE 권한 부여를 허용하지 않습니다. 여전히 Datastream을 사용할 수 있나요?

GRANT SELECT ANY TABLE 권한을 부여할 수 없으면 다음 테이블 목록에 SELECT 권한을 부여할 수 있습니다.

  • ALL_COL_COMMENTS
  • ALL_CONS_COLUMNS
  • ALL_CONSTRAINTS
  • ALL_DB_LINKS
  • ALL_EXTERNAL_TABLES
  • ALL_IND_COLUMNS
  • ALL_INDEXES
  • ALL_LOG_GROUPS
  • ALL_MVIEWS
  • ALL_OBJECTS
  • ALL_PART_TABLES
  • ALL_SEQUENCES
  • ALL_SOURCE
  • ALL_SYNONYMS
  • ALL_TAB_COLS
  • ALL_TAB_COLUMNS
  • ALL_TAB_COMMENTS
  • ALL_TABLES
  • ALL_TRIGGERS
  • ALL_TRIGGER_COLS
  • ALL_TYPES
  • ALL_USERS
  • ALL_VIEWS
  • DATABASE_PROPERTIES
  • DBA_ROLE_PRIVS
  • DUAL
  • PRODUCT_COMPONENT_VERSION
  • ROLE_SYS_PRIVS
  • USER_ROLE_PRIVS
  • USER_TAB_PRIVS

Datastream을 사용하여 변경사항을 스트리밍하려면 스트림에 포함된 모든 테이블에 대한 읽기 액세스 권한도 필요합니다.

스트림을 시작하려면 API를 사용하여 검증을 우회합니다. 자세한 내용은 스트림 시작을 참조하세요.

Datastream은 Oracle 읽기 복제본 인스턴스의 복제를 지원하나요? 인스턴스가 구성 가이드라인에 따라 구성되어 있는 한 Datastream은 Oracle 읽기 복제본 인스턴스에서의 복제를 지원합니다.
Datastream에서 Oracle SCAN RAC 데이터베이스를 지원하나요? 예, 그렇습니다. 하지만 Datastream을 통해 Oracle Real Application Clusters(RAC) 환경에서 단일 클라이언트 액세스 이름(SCAN) 기능을 사용하여 데이터베이스에 대한 직접 연결을 지원할 수 없습니다. 이러한 제한을 해결하기 위해 노드 중 하나에 직접 연결하거나 Oracle 연결 관리자를 사용할 수 있습니다. HAProxy와 같은 리버스 프록시 솔루션을 사용하여 비공개 연결 구성을 만들 수도 있습니다.

PostgreSQL 소스 동작 및 제한사항

질문 답변
Datastream은 PostgreSQL에서 데이터를 어떻게 가져오나요? Datastream은 PostgreSQL의 논리적 디코딩 기능을 사용하여 PostgreSQL에서 변경 이벤트를 추출합니다.
Datastream은 PostgreSQL용 AlloyDB 또는 AlloyDB Omni 소스에서 복제를 지원하나요? 예. Datastream은 이러한 두 소스를 모두 지원합니다. 소스 PostgreSQL용 AlloyDB 데이터베이스 구성에 대한 자세한 내용은 PostgreSQL용 AlloyDB 데이터베이스 구성을 참조하세요. 소스 AlloyDB Omni 데이터베이스 구성에 대한 자세한 내용은 자체 관리형 PostgreSQL 데이터베이스 구성을 참조하세요.
Datastream은 PostgreSQL 읽기 복제본 인스턴스에서 복제를 지원하나요? 읽기 복제본 인스턴스는 PostgreSQL이 읽기 복제본에서 논리적 디코딩을 지원하지 않기 때문에 논리적 복제에 대한 게시자로 작동할 수 없습니다.
Datastream에서 행 수준 보안(RLS)을 지원하나요? Datastream은 RLS가 사용 설정된 테이블의 복제를 지원하지 않습니다. 하지만 BYPASSRLS 절을 사용하면 이 제한을 우회할 수 있습니다.
ALTER USER USER_NAME BYPASSRLS;

USER_NAME을 Datastream에서 데이터베이스 연결에 사용하는 사용자 및 RLS 정책을 우회할 사용자 이름으로 바꿉니다.

PostgreSQL 소스에서 복제할 때 DataStream은 동시 CDC 작업을 지원하나요?

아니요. PostgreSQL 복제는 복제 슬롯 개념을 사용하며 복제 슬롯은 동시 연결을 지원하지 않습니다. 복제 슬롯에서 한 번에 하나의 CDC 태스크만 읽을 수 있습니다. 예를 들어 소스 데이터베이스에서 많은 수의 레코드를 삭제하면 삭제 이벤트로 복제 슬롯이 과부하될 수 있습니다. 복제 슬롯 큐에 있는 기존의 삭제 이벤트가 처리될 때까지 소스에 대한 모든 후속 변경사항이 지연됩니다.

대규모 트랜잭션 데이터를 복제할 때의 권장 방법은 문제 진단을 참조하세요.

DataStream에서 보안 소켓 레이어(SSL) 및 전송 계층 보안(TLS) 암호화를 지원하나요?

DataStream은 클라이언트 인증서가 필요하지 않은 SSL/TLS로 암호화된 연결을 지원합니다.

SQL Server 소스 동작 및 제한사항

질문 답변
Datastream에서 지원되는 SQL Server 버전은 무엇인가요? Datastream은 변경 데이터 캡처를 지원하는 SQL Server 데이터베이스 버전을 지원합니다. 지원되는 SQL Server 버전의 전체 목록은 버전을 참조하세요.
SQL Server 소스에서 Datastream CDC 복제는 어떻게 작동하나요? Datastream 데이터 수집 프로세스에는 소스 구성에 따라 트랜잭션 로그 또는 변경 테이블이 사용됩니다. 자세한 내용은 소스 SQL Server 데이터베이스를 참조하세요.
Datastream이 소스 SQL Server 데이터베이스에서 데이터를 복제하는 데 필요한 최소 권한은 무엇인가요?

SQL Server 데이터베이스에서 데이터를 복제하려면 Datastream 사용자에게 다음 역할 및 권한을 부여해야 합니다.

변경 테이블 CDC 메서드의 경우:

  • db_owner
  • db_denydatawriter

트랜잭션 로그 CDC 메서드의 경우:

  • 데이터베이스 및 sys.fn_dblog 함수에 대한 SELECT 권한
  • dbo.sysjobs 테이블에 대한 SELECT 권한
  • VIEW SERVER STATE
  • 소스 구성에 대한 자세한 내용은 데이터베이스 유형의 해당 구성 페이지를 참조하세요.

트랜잭션 로그를 사용할 때 폴링 간격 변경 및 잘림 방지 설정과 같은 구성이 필요한 이유는 무엇인가요? 트랜잭션 로그를 사용하여 SQL Server 소스에서 데이터를 복제할 때 Datastream이 로그를 읽기 전에 로그가 잘리면 데이터 손실이 발생합니다. 폴링 간격 변경 및 잘림 방지 설정은 선택사항이지만 다운타임 또는 연결 문제 발생 시에도 Datastream이 데이터를 읽을 수 있도록 하는 추가 보호 레이어를 제공합니다. 자세한 내용은 소스 SQL Server 데이터베이스 구성을 참조하세요.
SQL Server 소스에서 복제할 때 어떤 CDC 메서드를 선택해야 하나요?

소스 SQL Server 데이터베이스 구성에 따라 사용 가능한 두 가지 CDC 방법 중 하나를 선택할 수 있습니다.

  • 트랜잭션 로그: 데이터베이스 로그에서 직접 변경사항을 처리하려면 이 메서드를 선택합니다. 이 메서드는 최적의 성능을 제공하며 보다 효율적이지만 데이터베이스에서 지원하지 않을 수도 있는 추가 구성 단계가 필요합니다.
  • 변경사항 테이블: 전용 변경 테이블의 변경사항을 처리하려면 이 메서드를 선택합니다. 이 방법은 구성하기 쉽고 제한사항이 적지만 처리량이 감소하고 데이터베이스 부하가 증가합니다.

자세한 내용은 SQL Server를 소스로 개요를 참조하세요.

BigQuery 대상 동작

질문 답변
Datastream과 BigQuery가 함께 작동하여 소스 데이터베이스의 변경사항을 복제하는 방법은 무엇인가요? Datastream은 소스 데이터베이스에서 변경 내역을 지속적으로 읽고 Storage Write API를 사용해서 BigQuery 대상 테이블로 삽입/업데이트(upsert) 및 삭제 이벤트를 스트리밍합니다. 그런 다음 BigQuery는 테이블 비활성 구성에 따라 테이블에 변경사항을 적용합니다.
BigQuery에서 DML(Data Manipulation Language) 작업이 어떻게 적용되나요?
  • 추가 전용 모드에서는 데이터가 BigQuery에 변경사항 스트림으로 추가되며 각 INSERT, UPDATE-INSERT, UPDATE-DELETE, DELETE 이벤트에 대해 별도의 행이 표시됩니다.
  • 병합 모드(기본값)에서는 Datastream은 BigQuery에서 테이블을 만들 때 소스에 정의된 기본 키에 따라 테이블에 기본 키를 설정합니다. BigQuery가 이벤트를 처리하고 소스 테이블의 기본 키를 기반으로 기본 BigQuery 테이블에 변경사항을 적용합니다. 소스 테이블에 기본 키가 없으면 추가 전용 모드가 사용된 것처럼 처리됩니다.
DataStream과 BigQuery는 이벤트 순서를 어떻게 처리하나요? BigQuery는 이벤트 메타데이터 및 내부 변경 시퀀스 넘버(CSN)를 사용하여 이벤트를 올바른 순서로 테이블에 적용합니다. 이벤트 메타데이터에 대한 자세한 내용은 이벤트 및 스트림을 참조하세요.
Datastream과 함께 사용할 경우 BigQuery 비용은 어떻게 계산되나요? BigQuery 비용은 Datastream과 별도로 계산되고 청구됩니다. BigQuery 비용을 관리하는 방법은 BigQuery CDC 가격 책정을 참조하세요.
Datastream에서 BigQuery로 데이터를 스트리밍할 때 지원되는 최대 행 크기는 얼마인가요? Datastream에서 지원되는 최대 행 크기는 20MB입니다.
BigQuery로 스트리밍할 때 테이블에 _ 프리픽스가 붙습니다. BigQuery의 테이블이 소스 데이터베이스의 테이블과 동일한 구조를 따르도록 이 동작을 변경할 수 있나요? BigQuery 대상의 데이터 세트를 구성할 때 각 스키마에 대한 데이터 세트 또는 모든 스키마에 대한 단일 데이터 세트를 만듭니다. 각 스키마의 데이터 세트를 만들면 소스의 각 스키마가 BigQuery의 데이터 세트에 매핑되고 소스 스키마의 모든 테이블은 데이터 세트의 테이블에 매핑됩니다. 모든 스키마 옵션에 단일 데이터 세트를 선택하는 경우 BigQuery의 테이블 이름 지정 규칙에 따라 테이블 이름에 _ 프리픽스가 붙습니다.
CDC는 소스 내 열 삽입 또는 삭제와 같은 소스 스키마 변경사항을 캡처할 수 있나요? 이러한 변경사항이 대상 BigQuery 데이터 세트의 이미 채워진 테이블에 자동으로 반영되나요? Datastream은 새 열을 자동으로 감지하고 대상 스키마에 추가하지만 이미 대상에 복제된 경우에는 추가하지 않습니다. 삭제된 열은 무시하고 Datastream은 대상에서 NULL 값으로 채웁니다. 그런 다음 BigQuery에서 이러한 열을 직접 삭제할 수 있습니다.

Cloud Storage 대상 동작

질문 답변
Cloud Storage에서 파일이 어떻게 생성되나요? DataStream은 각 테이블의 폴더를 만듭니다. DataStream은 각 폴더에서 크기 또는 시간이 사용자 정의 기준에 도달할 때마다 파일을 순환하거나 새 파일을 만듭니다. 또한 스키마 변경사항이 감지될 때마다 파일을 순환합니다. 파일 이름은 (스키마 해시를 기반으로 한) 고유한 스키마 키와 그 뒤에 나오는 파일의 첫 번째 이벤트에 대한 타임스탬프로 구성됩니다. 보안을 위해 이러한 파일 이름은 사용자가 읽거나 이해할 수 없습니다.
Cloud Storage의 데이터가 정렬되지 않은 경우 대상에 데이터를 로드하기 전에 이벤트 순서를 어떻게 바꿀 수 있나요?

각 이벤트에는 로그 파일의 행을 고유하게 식별하는 여러 메타데이터 필드가 포함되어 있으며, 해당 이벤트를 정렬할 수 있습니다. 이러한 필드는 다음과 같습니다.

Oracle 소스:

  • rs_id(레코드 모음 ID): 실제로 세 개의 값으로 구성됩니다(예: 0x0073c9.000a4e4c.01d0). rs_id는 재실행 로그 내에서 레코드를 고유하게 식별합니다.
  • ssn(SQL 시퀀스 넘버): 재실행 로그의 레코드가 너무 길 때 사용됩니다. 이 때문에 Oracle LogMiner는 레코드를 여러 행으로 분할합니다.

MySQL 소스:

  • log_file: Datastream이 CDC 복제에서 이벤트를 가져오는 위치입니다.
  • log_position: MySQL 바이너리 로그에서 레코드의 오프셋을 식별합니다.

PostgreSQL 소스:

  • source_timestamp: 소스에서 레코드가 변경된 타임스탬프입니다. 정렬하려는 이벤트의 source_timestamp 값이 동일하면 lsn 값을 비교합니다.
  • lsn(로그 시퀀스 넘버): WAL 로그 파일에서 레코드의 오프셋을 식별합니다.

메타데이터 필드에 대한 자세한 내용은 소스별 메타데이터를 참조하세요.

동일한 타임스탬프에 여러 파일이 생성되는 경우 어떤 순서로 처리되어야 하나요? 여러 파일 내의 순서 및 여러 파일 간의 순서가 보장되지 않으므로 소스 파일 처리 순서를 결정할 때는 모든 파일에서 특정 타임스탬프의 모든 이벤트를 가져온 후 이 섹션의 앞에서 언급한 메서드를 사용하여 순서를 적용하는 것이 가장 좋습니다.
기본 키 업데이트는 어떻게 처리되나요? 이벤트에 이전이후 정보가 있나요? 행의 기본 키가 변경되면 Datastream이 해당 변경사항 대해 UPDATE-DELETEUPDATE-INSERT의 두 가지 이벤트를 생성합니다. UPDATE-DELETE 이벤트는 업데이트 이전 데이터를 나타내고 UPDATE-INSERT는 업데이트 이후 데이터를 나타냅니다. 소스별 메타데이터에 대한 자세한 내용은 이벤트 및 스트림을 참조하세요.
Cloud Storage로 데이터를 스트리밍할 때 Datastream에서 지원되는 최대 행 크기는 얼마인가요? Datastream에서 지원되는 최대 행 크기는 30MB입니다.

사용 사례

질문 답변
DataStream을 사용하는 일반적인 사용 사례는 무엇인가요?

DataStream은 CDC 및 복제 서비스이므로 지속적인 변경 데이터 스트리밍을 이용하는 다양한 사용 사례에 유연하게 활용할 수 있습니다. Datastream의 가장 일반적인 사용 사례는 다음과 같습니다.

  1. 애널리틱스: BigQuery에 직접 데이터를 복제하여 BigQuery에서 최신 운영 데이터에 액세스할 수 있습니다. 고객은 BigQuery에서 지속적으로 업데이트되는 데이터를 사용하여 데이터에 대한 최신 대시보드를 빌드할 수 있습니다. 예를 들어 시스템을 모니터링하고 비즈니스 상태에 대한 최신 통계를 얻는 데 사용할 수 있습니다.
  2. 데이터베이스 복제 및 동기화 시나리오: Datastream을 Dataflow 템플릿과 통합하여 Cloud SQL 또는 Spanner에 데이터를 로드하면 해당 데이터베이스에서 소스 데이터의 최신 복제본을 얻을 수 있습니다. 소스에서 대상으로의 다운타임 적은 데이터베이스 마이그레이션 또는 소스와 대상이 다른 호스팅 환경에 상주하는 하이브리드 클라우드 구성을 위해 대상 데이터베이스에서 지속적으로 업데이트되는 데이터를 사용할 수 있습니다.
  3. 이벤트 기반 아키텍처: 최신 마이크로서비스 기반 아키텍처에서 조직 전체의 이벤트로 계속 업데이트되는 중앙 데이터 허브를 사용하면 이벤트를 기반으로 삼을 수 있습니다. BigQuery, Cloud Storage 등의 대상에 이벤트 데이터를 계속 기록하면 이러한 대상의 이벤트 데이터 사용을 기반으로 하는 이벤트 기반 아키텍처를 빌드할 수 있습니다.

통합

질문 답변
DataStream은 Google Cloud 데이터 서비스와 어떻게 통합되나요?

DataStream은 소스에서 다양한 Google Cloud 서비스로 CDC 데이터 복제를 제공하여 Google Cloud 데이터 제품군을 보완하고 개선합니다. DataStream은 이러한 서비스와 원활하게 통합되어 대규모 Google Cloud 생태계에 적합합니다.

DataStream은 다음 데이터 서비스와 통합됩니다.

  • BigQuery: Datastream은 BigQuery Write API를 사용해서 BigQuery와 직접 통합됩니다. Datastream이 변경 사항을 기존 데이터와 지속적으로 병합(UPSERT)하는 BigQuery 데이터 세트에 직접 변경 이벤트를 기록합니다.
  • Dataflow: Datastream은 Dataflow 템플릿을 사용하여 Dataflow와 통합됩니다. 이 템플릿은 Cloud Storage에서 데이터를 읽어 BigQuery, PostgreSQL용 Cloud SQL 또는 Spanner에 해당 데이터를 로드합니다. 이 템플릿의 목적은 대상에서 복제된 소스 테이블을 최신 상태로 유지하는 것입니다. 이 템플릿은 Dataflow UI에서 사용할 수 있으며, Datastream에서 생성한 파일을 즉시 처리할 수 있도록 제작되었습니다.
  • Cloud Storage: DataStream은 이를 변경 스트리밍 대상으로 작성하여 Cloud Storage와 통합됩니다.
  • Cloud SQL 및 Spanner: Datastream 및 Dataflow 템플릿을 사용하여 데이터베이스에서 복제된 최신 테이블을 유지할 수 있습니다.
Dataflow의 Datastream-BigQuery 템플릿에 데이터 조작 언어(DML) 작업 수에 대한 제한이 있나요? 아니요. 템플릿은 스트리밍 삽입 API를 사용하여 BigQuery에 데이터를 로드합니다. 따라서 DML 작업 수에는 제한이 없습니다. 하지만 몇 가지 할당량 제한사항이 적용됩니다.

보안 및 연결

질문 답변
DataStream은 민감한 정보에 적합한 안전한 서비스인가요? DataStream은 소스에서 대상으로 스트림될 때 전송 중 데이터를 보호하기 위한 여러 가지 안전한 비공개 연결 구성을 지원합니다. 데이터가 복제된 후 기본적으로 암호화되며 BigQuery 또는 Cloud Storage의 보안 제어를 활용합니다. DataStream에 의해 버퍼링된 데이터는 저장 상태에서 암호화됩니다.
소스를 DataStream에 연결할 때 어떤 연결 옵션을 사용할 수 있나요?

다음과 같은 3가지 유형의 연결 방법을 구성할 수 있습니다.

  • IP 허용 목록: 이 방법은 DataStream의 리전 IP 주소를 소스의 허용 목록에 추가하여 공개 연결을 제공합니다. 스트림을 만들면 DataStream에서 이러한 IP 주소를 UI에 표시합니다.
  • 정방향 SSH 터널: 이 방법은 리전 IP 주소를 허용 목록에 추가하는 것 외에도 고객 구성 SSH 배스천을 활용하여 공개 네트워크를 통한 보안 연결을 제공합니다.
  • VPC 피어링을 통한 비공개 연결: 이 방법을 사용하면 Google Cloud 내부 네트워크를 통해 Google Cloud 호스팅 데이터베이스에 연결하거나 DataStream의 비공개 네트워크와 조직의 Google Cloud VPC 간에 VPC 피어링을 설정하여 기존 VPN 또는 Interconnect를 활용할 수 있습니다.
DataStream의 민감한 정보 처리를 제한하려면 어떻게 해야 하나요?

DataStream에서는 대상으로 스트림할 소스의 특정 데이터 요소(스키마, 테이블, 열)와 스트리밍에서 제외할 요소를 지정할 수 있습니다.

데이터베이스 로그에는 스트림 정의에서 제외된 요소의 변경 데이터가 포함될 수 있습니다. 소스에서 이러한 요소를 필터링할 수는 없으므로 DataStream에서 해당 요소와 연결된 모든 데이터를 읽지만 이를 무시합니다.

DataStream은 데이터베이스 사용자 인증 정보를 어떻게 안전하게 보호하나요? 모든 사용자 메타데이터(데이터 소스에 액세스하는 데 사용된 사용자 이름 및 비밀번호 등)는 전송 중 및 저장 중에 암호화되며 Google은 이를 독점 스토리지 시스템에 저장합니다. 이 메타데이터에 대한 액세스가 추적되고 감사됩니다.
비공개 연결 구성 만들기 페이지에서 공유 VPC에 비공개 연결 구성을 만들려면 Datastream 서비스 계정에 roles/compute.networkAdmin 역할을 부여해야 한다고 표시되는 이유는 무엇인가요? networkAdmin 역할은 VPC 피어링을 만들 때만 필요합니다. 피어링이 설정되면 이 역할은 더 이상 필요하지 않습니다. 조직에서 Datastream 서비스 계정에 networkAdmin 역할 부여를 허용하지 않는 경우 다음과 같은 특정 권한을 사용하여 커스텀 역할을 만듭니다.

IP 범위를 동적으로 선택

  • compute.routes.get
  • compute.routes.list
  • compute.subnetworks.get
  • compute.subnetworks.list

피어링된 네트워크 만들기

  • compute.globalOperations.get
  • compute.networks.addPeering
  • compute.networks.removePeering
  • compute.networks.get

IP 주소 예약

  • compute.globalAddresses.get
  • compute.globalAddresses.create
  • compute.globalAddresses.createInternal
  • compute.globalAddresses.delete
  • compute.globalAddresses.deleteInternal
  • compute.networks.use
  • compute.networks.listPeeringRoutes
Private Service Connect를 사용하여 비공개 연결 구성을 만들 수 있나요? 아니요. Datastream은 Private Service Connect를 지원하지 않습니다.

Datastream 모니터링

질문 답변
모든 이전 데이터가 대상에 복사된 시점을 어떻게 알 수 있나요? DataStream은 로그 파일에 현재 상태에 대한 정보를 제공합니다. 테이블의 백필이 완료되었음을 나타내는 로그 항목이 생성됩니다.
지연 시간은 가끔 증가했다가 시간이 지남에 따라 점차 감소합니다. 예상 가능한 동작인가요? Datastream은 소스에서 생성된 이벤트 처리량이 증가하면 자동으로 확장됩니다. 하지만 소스 데이터베이스와 Datastream을 모두 보호하기 위해 Datastream에서 언제든지 열 수 있는 동시 연결 및 프로세스 수에 제한이 있습니다. 이벤트 처리량이 크게 증가하면 지연 시간이 일시적으로 급증할 수 있으며 이벤트 백로그가 처리됨에 따라 점진적으로 감소할 것으로 예상됩니다.

가격 책정

질문 답변
DataStream의 요금은 어떻게 책정되나요?

DataStream 요금은 소스에서 대상으로 처리된 데이터의 볼륨(GB)을 기준으로 책정됩니다.

DataStream 가격 책정 정보에 대한 자세한 내용은 가격 책정을 참조하세요.

데이터 크기는 어떻게 계산하나요? 청구는 Datastream에서 처리되는 데이터의 크기를 기준으로 계산됩니다. DataStream에서는 대상에 스트림된 데이터의 요금만 청구합니다.
BigQuery 또는 Dataflow에서 Datastream을 사용하는 경우 어떤 요금을 지불해야 하나요? 각 서비스의 가격은 별도로 책정되어 청구됩니다.

추가 정보

질문 답변
DataStream 사용과 관련된 추가 질문이 있거나 문제가 발생하면 어떻게 해야 하나요? DataStream 사용과 관련된 문제가 발생한 경우 Google 지원팀에서 지원해 드립니다. 문제 해결 가이드에서도 DataStream을 사용하는 동안 발생할 수 있는 일반적인 문제를 다루고 있습니다.

다음 단계