스트림 객체의 백필 관리

Datastream의 스트림은 이전 데이터를 백필하고 진행 중인 변경사항을 대상으로 스트림할 수 있습니다. 스트림을 만들 때 스트림의 소스 데이터베이스에 대한 정보가 구성되었습니다.

이전 데이터 백필 체크박스를 선택한 경우 Datastream이 데이터 변경사항 외에도 모든 기존 데이터를 소스에서 대상으로 스트리밍합니다.

이 체크박스를 선택하지 않았으면 Datastream이 데이터의 변경사항만 스트리밍합니다. Datastream이 모든 기존 데이터의 스냅샷을 소스에서 대상으로 스트리밍하도록 하려면 이 데이터가 포함된 객체에 대해 백필을 시작해야 합니다. 객체는 데이터베이스 스키마, 테이블, 열 형식입니다.

소스와 대상 사이에 데이터가 동기화되지 않은 경우에도 객체 백필을 시작해야 합니다. 예를 들어 사용자가 대상에서 데이터를 의도치 않게 삭제하여 데이터가 손실될 수 있습니다. 이 경우 객체 백필을 시작하면 모든 데이터가 한 번에 대상으로 스트리밍되기 때문에 객체 백필이 재설정 메커니즘과 같이 사용됩니다. 그 결과 소스와 대상 사이에 데이터가 동기화됩니다.

객체에 대해 백필을 시작한 후에는 백필을 중지할 수 있습니다. 위 예시에서는 사용자가 데이터베이스 스키마를 수정하고 스키마 또는 데이터가 손상됩니다. 이러한 스키마 또는 데이터가 대상으로 스트리밍되지 않아야 하므로 객체에 대해 백필을 중지합니다.

또한 부하 분산 목적으로 객체 백필을 중지할 수도 있습니다. Datastream은 여러 백필을 병렬로 실행할 수 있습니다. 그러면 소스에 추가 부하가 발생할 수 있습니다. 이러한 부하가 상당히 크면 객체 백필을 중지하고 하나씩 백필을 시작합니다.

객체 상태

객체에 대한 백필 시작 및 중지 수명 주기에는 다음과 같은 여러 상태가 포함됩니다.

  • 상태 없음 (UI에서 -로 표시됨): 객체에 이 상태가 수신되는 이유는 다음과 같습니다.

    • 스트림이 시작되지 않았습니다.
    • 이전 데이터 백필 체크박스가 선택되지 않았습니다 (따라서 백필이 수동으로 정의됨).
    • 객체가 자동 백필에서 명시적으로 제외되었습니다.
    • 스트림은 향후 테이블을 포함하도록 구성됩니다. 이 경우 새 테이블이 소스에 추가되면 일반적으로 새 테이블에 백필할 이전 데이터가 포함되지 않기 때문에 이에 대해 자동 백필 태스크가 생성되지 않습니다.
  • Pending: 객체에 대해 백필이 아직 시작되지 않았습니다.

  • Active: 객체에 대해 백필이 진행 중입니다.

  • Completed: 객체에 대해 백필이 완료되었습니다.

  • Stopped: 객체에 대해 백필이 중지되었습니다. 객체에 대해 백필이 다시 시작되었으면 Datastream이 객체와 관련된 모든 기존 데이터를 소스에서 대상으로 스트리밍합니다.

  • Failed: 객체에 대해 백필이 실패했고 백필을 다시 시작해야 합니다.

백필 시작

  1. 콘솔에서 스트림 페이지로 이동합니다. Google Cloud

    스트림 페이지로 이동

  2. 백필을 시작할 객체가 포함된 스트림을 클릭합니다.

  3. 객체 탭을 클릭합니다.

  4. 백필을 시작할 각 객체에 대해 체크박스를 선택합니다.

  5. 백필 시작 을 클릭합니다.

  6. 객체를 하나만 선택했으면 대화상자에서 객체 백필 시작 을 클릭합니다. 그렇지 않고 여러 객체를 선택했으면 여러 객체 백필 시작 을 클릭합니다.

    Datastream이 선택한 객체에 대해 백필을 시작하고 각 객체의 상태가 Pending에서 ActiveCompleted로 변경됩니다. 객체 상태가 Completed이면 Datastream이 객체의 모든 데이터를 읽었지만 데이터가 아직 대상에 로드되고 있을 수 있다는 의미입니다.

부분 백필 시작

전체 백필 외에도 부분 백필을 수행하여 소스에서 대상으로 특정 데이터 하위 집합을 로드할 수 있습니다. 이렇게 하려면 SQL WHERE 절을 커스텀 필터로 제공합니다.

Datastream은 다음 소스에 대해 부분 백필을 지원합니다.

  • SQL Server
  • Spanner
  • Oracle
  • PostgreSQL

부분 백필을 시작하려면 다음 단계를 따르세요.

  1. 콘솔에서 스트림 페이지로 이동합니다. Google Cloud

    스트림 페이지로 이동

  2. 백필을 시작할 객체가 포함된 스트림을 클릭합니다.

  3. 객체 탭을 클릭합니다.

  4. 백필을 시작할 객체를 선택합니다.

  5. 백필 시작 을 클릭합니다.

  6. 표시되는 패널에서 커스텀 필터 사용 설정 체크박스를 선택합니다.

  7. SQL WHERE 절을 입력합니다. 예를 들어 product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'입니다.

  8. 백필 시작 을 클릭합니다.

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) 비교는 리터럴을 기준으로 해야 합니다.
  • DATETIME 특정 유형 또는 함수
  • 배열 또는 JSON 특정 연산자
  • 명시적 캐스팅(예: CAST(column AS INT))

백필 중지

  1. 콘솔에서 스트림 페이지로 이동합니다. Google Cloud

    스트림 페이지로 이동

  2. 백필을 중지할 객체가 포함된 스트림을 클릭합니다.

  3. 객체 탭을 클릭합니다.

  4. 백필을 중지할 각 객체에 대해 체크박스를 선택합니다.

  5. 백필 중지 를 클릭합니다.

  6. 객체를 하나만 선택했으면 대화상자에서 객체 백필 중지 를 클릭합니다. 그렇지 않고 여러 객체를 선택했으면 여러 객체 백필 중지 를 클릭합니다.

    Datastream이 선택한 객체에 대해 백필을 중지하고 각 객체의 상태가 Stopped로 변경됩니다.

    객체가 이 상태이면 객체에 대해 백필이 중지됩니다. 객체에 대해 백필이 다시 시작되었으면 Datastream이 객체와 관련된 모든 기존 데이터를 소스에서 대상으로 스트리밍합니다.

다음 단계