Datastream의 스트림은 이전 데이터를 백필하고 진행 중인 변경사항을 대상으로 스트리밍할 수 있습니다. 스트림을 만들 때 스트림의 소스 데이터베이스에 대한 정보가 구성되었습니다.
이전 데이터 백필 체크박스를 선택한 경우 Datastream이 데이터 변경사항 외에도 모든 기존 데이터를 소스에서 대상으로 스트리밍합니다.
이 체크박스를 선택하지 않았으면 Datastream이 데이터의 변경사항만 스트리밍합니다. Datastream이 모든 기존 데이터의 스냅샷을 소스에서 대상으로 스트리밍하도록 하려면 이 데이터가 포함된 객체에 대해 백필을 시작해야 합니다. 객체는 데이터베이스 스키마, 테이블, 열의 형태입니다.
소스와 대상 사이에 데이터가 동기화되지 않은 경우에도 객체 백필을 시작해야 합니다. 예를 들어 사용자가 실수로 대상에서 데이터를 삭제하여 데이터가 손실될 수 있습니다. 이 경우 객체의 백필을 시작하면 모든 데이터가 한 번에 대상으로 스트리밍되므로 재설정 메커니즘으로 작동합니다. 그 결과 소스와 대상 사이에 데이터가 동기화됩니다.
객체에 대해 백필을 시작한 후에는 백필을 중지할 수 있습니다. 위의 예에서 사용자가 데이터베이스 스키마를 수정하면 스키마 또는 데이터가 손상됩니다. 이 스키마 또는 데이터가 대상으로 스트리밍되지 않아야 하므로 객체에 대해 백필을 중지합니다.
또한 부하 분산 목적으로 객체 백필을 중지할 수도 있습니다. Datastream은 여러 백필을 병렬로 실행할 수 있습니다. 그러면 소스에 추가 부하가 발생할 수 있습니다. 부하가 상당한 경우 객체의 백필을 중지하고 하나씩 객체에 대해 백필을 시작합니다.
객체 상태
객체의 백필을 시작하고 중지하는 수명 주기의 다양한 상태는 다음과 같습니다.
상태 없음 (UI에
-로 표시됨): 객체가 이 상태를 수신하는 이유는 다음과 같습니다.- 스트림이 시작되지 않았습니다.
- 이전 데이터 백필 체크박스가 선택되지 않았습니다 (따라서 백필이 수동으로 정의됨).
- 객체가 자동 백필에서 명시적으로 제외되었습니다.
- 스트림은 향후 테이블을 포함하도록 구성됩니다. 이 경우 소스에 새 테이블이 추가되면 새 테이블에는 일반적으로 백필할 이전 데이터가 없으므로 새 테이블에 대해 생성되는 자동 백필 작업이 없습니다.
Pending: 객체의 백필이 아직 시작되지 않았습니다.Active: 객체의 백필이 진행 중입니다.Completed: 객체의 백필이 완료되었습니다.Stopped: 객체의 백필이 중지됩니다. 객체에 대해 백필이 다시 시작되면 Datastream이 객체와 연결된 모든 기존 데이터를 소스에서 대상으로 스트리밍합니다.Failed: 객체의 백필이 실패했으며 백필을 다시 시작해야 합니다.
백필 시작
Google Cloud 콘솔에서 스트림 페이지로 이동합니다.
백필을 시작할 객체가 포함된 스트림을 클릭합니다.
객체 탭을 클릭합니다.
백필을 시작할 각 객체에 대해 체크박스를 선택합니다.
백필 시작을 클릭합니다.
객체를 하나만 선택했으면 대화상자에서 객체 백필 시작을 클릭합니다. 그렇지 않고 여러 객체를 선택했으면 여러 객체 백필 선택을 클릭합니다.
Datastream이 선택한 객체에 대해 백필을 시작하고 각 객체의 상태가
Pending에서Active및Completed로 변경됩니다. 객체 상태가Completed이면 Datastream이 객체의 모든 데이터를 읽었지만 데이터가 아직 대상에 로드되고 있을 수 있다는 의미입니다.
부분 백필 시작
전체 백필 외에도 부분 백필을 실행하여 소스의 특정 데이터 하위 집합을 대상으로 로드할 수 있습니다. 이렇게 하려면 SQL WHERE 절을 맞춤 필터로 제공합니다.
Datastream은 다음 소스의 부분 백필을 지원합니다.
- SQL Server
- Spanner
- Oracle
- PostgreSQL
- MySQL
부분 백필을 시작하려면 다음 단계를 따르세요.
Google Cloud 콘솔에서 스트림 페이지로 이동합니다.
백필을 시작할 객체가 포함된 스트림을 클릭합니다.
객체 탭을 클릭합니다.
백필을 시작할 객체를 선택합니다.
백필 시작을 클릭합니다.
표시되는 패널에서 맞춤 필터 사용 설정 체크박스를 선택합니다.
SQL
WHERE절을 입력합니다. 예를 들면product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'입니다.백필 시작을 클릭합니다.
Datastream에서 필터의 유효성을 검사합니다. 유효성 검사에 실패하면 편집기 위에 오류 메시지가 표시됩니다. 유효성 검사에 성공하면 Datastream이 백필 작업을 시작합니다.
지원되는 맞춤 필터 문법
맞춤 필터를 제공하면 Datastream은 SQL WHERE 절 구문의 기본 하위 집합을 지원합니다. 지원되는 요소는 다음과 같습니다.
- 논리 연산자:
AND,OR - 비교 연산자:
=,<,>,<=,>=,!= - 조건:
IN,NOT IN,IS NULL,IS NOT NULL - 그룹화: 조건 그룹을 정의하는 괄호
() 값:
- 문자열: 작은따옴표로 묶인 텍스트(예:
'value') - 숫자: 정수 (
123), 소수 (123.45), 음수(-10), 지수가 있는 숫자 (1.2e3) - 불리언 값: 대소문자를 구분하는 키워드
TRUE또는FALSE
- 문자열: 작은따옴표로 묶인 텍스트(예:
식별자:
- 자격: 점을 사용하여 스키마나 테이블을 지정하여 열 이름을 정규화할 수 있습니다(예:
myColumn,myTable.myColumn,mySchema.myTable.myColumn). - 따옴표가 없는 식별자: 문자, 숫자, 밑줄을 포함할 수 있으며 문자 또는 밑줄로 시작해야 합니다. 열 또는 테이블 이름의 대소문자 구분은 대상 데이터베이스에 따라 다릅니다.
- 큰따옴표로 묶인 식별자: 큰따옴표 (
")로 묶어야 합니다.
- 자격: 점을 사용하여 스키마나 테이블을 지정하여 열 이름을 정규화할 수 있습니다(예:
부분 백필 제한사항
특정 문, 연산자, 키워드는 명시적으로 금지되어 있으며 이를 사용하면 오류가 발생합니다. 예를 들면 다음과 같습니다.
--또는/* */과 같은 주석- 함수(예:
UPPER(column),NOW()) - 산술 표현식(예:
column + 1 > 10) LIKE연산자LIKE에서는%또는_과 같은 와일드 카드가 지원되지 않습니다.BETWEEN연산자 대신>=및<=를 사용하세요.- 하위 쿼리(예:
WHERE절 내의(SELECT ...)) CASE문(예:CASE WHEN ... END)column1 = column2과 같은 열 비교 비교는 리터럴을 대상으로 해야 합니다.DATE및TIME특정 유형 또는 함수- 배열 또는 JSON 관련 연산자입니다.
- 명시적 캐스팅: 예를 들어
CAST(column AS INT)
백필 중지
Google Cloud 콘솔에서 스트림 페이지로 이동합니다.
백필을 중지할 객체가 포함된 스트림을 클릭합니다.
객체 탭을 클릭합니다.
백필을 중지할 각 객체에 대해 체크박스를 선택합니다.
백필 중지를 클릭합니다.
객체를 하나만 선택했으면 대화상자에서 객체 백필 중지를 클릭합니다. 그렇지 않고 여러 객체를 선택했으면 객체 백필 중지를 클릭합니다.
Datastream이 선택한 객체에 대해 백필을 중지하고 각 객체의 상태가
Stopped로 변경됩니다.객체가 이 상태이면 객체에 대해 백필이 중지됩니다. 객체에 대해 백필이 다시 시작되면 Datastream이 객체와 연결된 모든 기존 데이터를 소스에서 대상으로 스트리밍합니다.
다음 단계
- 스트림에 관한 자세한 내용은 스트림 수명 주기를 참고하세요.
- 스트림 정보를 확인하는 방법은 스트림 보기를 참고하세요.
- 스트림을 수정하는 방법은 스트림 수정을 참고하세요.
- 스트림을 모니터링하는 방법은 스트림 모니터링을 참고하세요.
- 실패한 스트림을 복구하는 방법은 스트림 복구를 참고하세요.