Openflow Connector for SQL Server 설정

참고

이 커넥터에는 `Snowflake Connector 약관<https://www.snowflake.com/legal/snowflake-connector-terms/>`_이 적용됩니다.

이 항목에서는 |Sqlserver|를 설정하는 방법에 대해 설명합니다.

증분 로드 프로세스에 대한 내용은 :doc:`증분 복제<incremental-replication>`를 참조하세요.

전제 조건

커넥터를 설정하기 전에 다음 전제 조건을 완료했는지 확인합니다.

  1. Openflow Connector for SQL Server 정보 을 검토했는지 확인합니다.

  2. 지원되는 SQL 서버 버전 을 검토했는지 확인합니다.

  3. 런타임 배포를 설정했는지 확인합니다. 자세한 내용은 다음 항목을 참조하십시오.

  4. |OFSFSPCS-plural|를 사용하는 경우 필수 도메인 구성</user-guide/data-integration/openflow/setup-openflow-spcs-sf-allow-list>`을 검토했는지와 :ref:`label-openflow_domains_used_by_openflow_connectors_sqlserver 커넥터의 필수 도메인에 대한 액세스 권한을 부여했는지 확인합니다.

SQL Server 인스턴스 설정하기

커넥터를 설정하기 전에 SQL Server 환경에서 다음 작업을 수행합니다.

참고

이러한 작업은 데이터베이스 관리자로 수행해야 합니다.

  1. 다음 SQL Server 예제에서와 같이 복제하려는 `데이터베이스<https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/enable-and-disable-change-tracking-sql-server?view=sql-server-ver16#enable-change-tracking-for-a-database>`_`테이블<https://learn.microsoft.com/en-us/sql/relational-databases/track-changes/enable-and-disable-change-tracking-sql-server?view=sql-server-ver16#enable-change-tracking-for-a-table>`_에서 변경 내용 추적을 활성화합니다.

    ALTER DATABASE <database>
      SET CHANGE_TRACKING = ON
      (CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON);
    
    ALTER TABLE <schema>.<table>
      ENABLE CHANGE_TRACKING;
    
    Copy

    참고

    복제하려는 모든 데이터베이스와 테이블에 대해 이러한 명령을 실행합니다.

    커넥터를 사용하려면 복제를 시작하기 전에 데이터베이스와 테이블에서 변경 내용 추적을 활성화해야 합니다. 복제하려는 모든 테이블에서 변경 내용 추적이 활성화되어 있는지 확인합니다. 커넥터가 실행되는 동안 추가 테이블에서 변경 내용 추적을 활성화할 수도 있습니다.

  2. SQL Server 인스턴스에 대한 로그인을 생성합니다.

    CREATE LOGIN <user_name> WITH PASSWORD = '<password>';
    
    Copy

    이 로그인은 복제하려는 데이터베이스의 사용자를 생성하는 데 사용됩니다.

  3. 각 데이터베이스의 SQL Server 명령을 실행하여 복제 중인 각 데이터베이스에 대한 사용자를 생성합니다.

    USE <source_database>;
    CREATE USER <user_name> FOR LOGIN <user_name>;
    
    Copy
  4. 복제 중인 각 데이터베이스에 대한 SELECT 및 VIEW CHANGE TRACKING 권한을 사용자에게 부여합니다.

    GRANT SELECT ON <database>.<schema>.<table> TO <user_name>;
    GRANT VIEW CHANGE TRACKING ON <database>.<schema>.<table> TO <user_name>;
    
    Copy

    복제하려는 모든 테이블에 대해 각 데이터베이스에서 이러한 명령을 실행합니다. 이러한 권한은 이전 단계에서 생성한 각 데이터베이스의 사용자에게 부여되어야 합니다.

  5. (선택 사항) 사용자 정의 데이터 타입(UDDT)에 대한 VIEW DEFINITION 권한을 부여합니다.

    테이블에 사용자 정의 데이터 타입(UDDT)을 사용하는 열이 포함되어 있고 커넥터 사용자가 아닌 다른 사용자가 UDDT를 소유한 경우, 다음 SQL Server 예제에서와 같이 커넥터 사용자에게 VIEW DEFINITION 권한을 부여해야 합니다.

    GRANT VIEW DEFINITION TO <user_name>;
    
    Copy

    이 권한이 없으면 UDDT를 사용하는 열이 복제에서 자동으로 제외됩니다.

  6. (선택 사항) SSL 연결을 구성합니다.

    SSL 연결을 사용하여 SQL Server에 연결하는 경우 데이터베이스 서버의 루트 인증서를 만듭니다. 이는 커넥터를 구성할 때 필요합니다.

Snowflake 환경 설정하기

Snowflake 계정 관리자는 다음 작업을 수행합니다.

  1. Snowflake에 대상 데이터베이스를 생성하여 복제된 데이터를 저장합니다.

    CREATE DATABASE <destination_database>;
    
    Copy
  2. Snowflake :ref:`서비스 사용자<label-user-type-property>`를 생성합니다.

    CREATE USER <openflow_user>
      TYPE = SERVICE
      COMMENT='Service user for automated access of Openflow';
    
    Copy
  3. 커넥터에 대한 Snowflake 역할을 생성하고 필요한 권한을 부여합니다.

    CREATE ROLE <openflow_role>;
    GRANT ROLE <openflow_role> TO USER <openflow_user>;
    GRANT USAGE ON DATABASE <destination_database> TO ROLE <openflow_role>;
    GRANT CREATE SCHEMA ON DATABASE <destination_database> TO ROLE <openflow_role>;
    
    Copy

    이 역할을 사용하여 Snowflake 데이터베이스에 대한 커넥터의 액세스를 관리합니다.

    대상 데이터베이스에 오브젝트를 생성하려면 액세스를 관리하는 데 사용되는 역할에 데이터베이스에 대한 :ref:`USAGE 및 CREATE SCHEMA 권한<label-database_privileges>`을 부여해야 합니다.

  4. 커넥터에 대한 Snowflake 웨어하우스를 생성하고 필요한 권한을 부여합니다.

    CREATE WAREHOUSE <openflow_warehouse> WITH
      WAREHOUSE_SIZE = 'XSMALL'
      AUTO_SUSPEND = 300
      AUTO_RESUME = TRUE;
    GRANT USAGE, OPERATE ON WAREHOUSE <openflow_warehouse> TO ROLE <openflow_role>;
    
    Copy

    Snowflake는 XSMALL 웨어하우스 크기로 시작한 후 복제되는 테이블 수와 전송되는 데이터의 양에 따라 크기를 실험할 것을 권장합니다. 테이블 수가 많은 경우 일반적으로 더 큰 규모의 웨어하우스보다는 멀티 클러스터 웨어하우스에서 확장이 더 쉽습니다. 자세한 내용은 :doc:`멀티 클러스터 웨어하우스</user-guide/warehouses-multicluster>`를 참조하세요.

  5. 키 페어 인증을 위한 공개 키와 개인 키를 설정합니다.

    1. 한 쌍의 보안 키(공개 및 비공개)를 생성합니다.

    2. 커넥터의 구성에 제공할 파일에 사용자의 개인 키를 저장합니다.

    3. Snowflake 서비스 사용자에게 공개 키를 할당합니다.

      ALTER USER <openflow_user> SET RSA_PUBLIC_KEY = 'thekey';
      
      Copy

      자세한 내용은 키 페어 인증 및 키 페어 순환 섹션을 참조하십시오.

커넥터 설치하기

커넥터를 설치하려면 데이터 엔지니어로서 다음을 수행합니다.

  1. Openflow 개요 페이지로 이동합니다. Featured connectors 섹션에서 :ui:`View more connectors`를 선택합니다.

  2. Openflow Connector 페이지에서 커넥터를 찾아 Add to runtime 을 선택합니다.

  3. Select runtime 대화 상자의 Available runtimes 드롭다운 목록에서 런타임을 선택하고 :ui:`Add`를 클릭합니다.

    참고

    커넥터를 설치하기 전에 커넥터가 수집한 데이터를 저장할 수 있도록 Snowflake에서 데이터베이스와 스키마를 생성했는지 확인하십시오.

  4. Snowflake 계정 자격 증명으로 배포를 인증하고 런타임 애플리케이션이 Snowflake 계정에 액세스할 수 있도록 허용할지 묻는 메시지가 표시되면 Allow 를 선택합니다. 커넥터 설치 프로세스를 완료하는 데 몇 분 정도 걸립니다.

  5. Snowflake 계정 자격 증명으로 런타임에 인증합니다.

커넥터 프로세스 그룹이 추가된 Openflow 캔버스가 표시됩니다.

커넥터 구성

커넥터를 구성하려면 데이터 엔지니어로서 다음을 수행합니다.

  1. 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 :ui:`Parameters`를 선택합니다.

  2. :ref:`label-of_sqlserver_flow_parameters`에 설명된 대로 필수 매개 변수 값을 채웁니다.

플로우 매개 변수

SQLServer 소스 매개 변수 컨텍스트의 매개 변수를 설정한 다음 SQLServer 대상 매개 변수 컨텍스트의 매개 변수를 설정합니다. 이 작업이 완료되면 커넥터를 활성화할 수 있습니다. 커넥터는 SQLServer 및 Snowflake 모두에 연결하고 실행을 시작합니다. 그러나 커넥터는 복제할 테이블이 구성에 명시적으로 추가될 때까지 데이터를 복제하지 않습니다.

복제를 위해 특정 테이블을 구성하려면 SQLServer 수집 매개 변수 컨텍스트를 편집합니다. SQLServer 수집 매개 변수 컨텍스트에 변경 사항을 적용하면 커넥터에 의해 구성이 선택되고 모든 테이블에 대해 복제 수명 주기가 시작됩니다.

SQLServer 소스 매개 변수 컨텍스트

매개 변수

설명

SQLServer 연결 URL

소스 데이터베이스에 대한 전체 JDBC URL.

예:

  • jdbc:sqlserver://example.com:1433;encrypt=false;

SQLServer JDBC 드라이버

Reference asset 확인란을 선택하여 SQL 서버 JDBC 드라이버 를 업로드합니다.

SQLServer Username

커넥터의 사용자 이름입니다.

SQLServer Password

커넥터의 비밀번호입니다.

SQLServer 대상 매개 변수 컨텍스트

매개 변수

설명

필수

대상 데이터베이스

데이터가 유지되는 데이터베이스입니다. Snowflake에 이미 존재해야 합니다. 이름은 대소문자를 구분합니다. 따옴표로 묶지 않은 식별자의 경우 이름을 대문자로 입력합니다.

Snowflake Authentication Strategy

사용하는 경우:

  • Snowflake Openflow Deployment 또는 BYOC: SNOWFLAKE_MANAGED_TOKEN을 사용합니다. 이 토큰은 Snowflake에서 자동으로 관리됩니다. BYOC 배포에서 SNOWFLAKE_MANAGED_TOKEN을 사용하도록 :ref:`런타임 역할<label-deployment_byoc_setup_runtime_role>`을 미리 구성했어야 합니다.

  • BYOC: 또는 BYOC에서 KEY_PAIR를 인증 전략의 값으로 사용할 수 있습니다.

Snowflake 계정 식별자

사용하는 경우:

  • Session Token Authentication Strategy: 비워 두어야 합니다.

  • KEY_PAIR: 데이터가 유지될 [organization-name]-[account-name] 형식의 Snowflake 계정 이름입니다.

Snowflake 연결 전략

KEY_PAIR를 사용하는 경우 Snowflake에 연결하기 위한 전략을 지정합니다.

  • **STANDARD**(기본값): 표준 공개 라우팅을 사용하여 Snowflake 서비스에 연결합니다.

  • PRIVATE_CONNECTIVITY: AWS PrivateLink와 같은 지원 클라우드 플랫폼과 연결된 개인 주소를 사용하여 연결합니다.

KEY_PAIR가 있는 BYOC에만 필요하며, 그렇지 않은 경우는 무시됩니다.

Snowflake 오브젝트 식별자 확인

Snowflake에서 스키마, 테이블, 열 이름과 같은 소스 오브젝트 식별자를 저장하고 쿼리하는 방법을 지정합니다. 이 설정은 SQL 쿼리에서 큰따옴표를 사용해야 하는지 여부를 결정합니다.

옵션 1: 기본값으로, 대/소문자를 구분하지 않습니다(권장).

  • 변환: 모든 식별자는 대문자로 변환됩니다. 예를 들어, ``My_Table``은 ``MY_TABLE``이 됩니다.

  • 쿼리: SQL 쿼리는 대문자와 소문자를 구분하지 않으며 SQL 큰따옴표가 필요합니다.

    예를 들어 ``SELECT * FROM my_table;``은 ``SELECT * FROM MY_TABLE;``과 동일한 결과를 반환합니다.

참고

데이터베이스 오브젝트 이름의 대문자와 소문자가 혼합되지 않을 것으로 예상되는 경우 이 옵션을 사용하는 것이 좋습니다.

중요

커넥터 수집이 시작된 후에는 이 설정을 변경하지 마세요. 수집이 시작된 후 이 설정을 변경하면 기존 수집이 중단됩니다. 이 설정을 변경해야 하는 경우 새 커넥터 인스턴스를 만드세요.

옵션 2: 대/소문자를 구분합니다.

  • 변환: 대문자와 소문자가 유지됩니다. 예를 들어, ``My_Table``은 ``My_Table``로 유지됩니다.

  • 쿼리: SQL 쿼리는 데이터베이스 오브젝트의 대문자 및 소문자와 정확히 일치하도록 큰따옴표를 사용해야 합니다. 예: SELECT * FROM "My_Table";.

참고

레거시 또는 호환성을 위해 소스의 대문자 및 소문자를 유지해야 하는 경우 이 옵션을 사용하는 것이 좋습니다. 예를 들어, 소스 데이터베이스에 MY_TABLE``my_table``과 같이 대/소문자만 다른 테이블 이름이 포함된 경우 대/소문자를 구분하지 않는 비교를 사용할 때 이름 충돌이 발생합니다.

Snowflake 개인 키

사용하는 경우:

  • Session Token Authentication Strategy: 비워 두어야 합니다.

  • KEY_PAIR: 인증에서 사용되는 RSA 개인 키여야 합니다.

    RSA 키는 PKCS8 표준에 따라 형식이 지정되어야 하며 표준 PEM 머리글 및 바닥글이 있어야 합니다. Snowflake 개인 키 파일 또는 Snowflake 개인 키를 정의해야 합니다.

아니요

Snowflake 개인 키 파일

사용하는 경우:

  • Session token authentication strategy: 개인 키 파일은 비워 두어야 합니다.

  • KEY_PAIR: PKCS8 표준에 따라 형식이 지정되고 표준 PEM 머리글과 바닥글을 포함하며 Snowflake 인증에 사용되는 RSA 개인 키를 포함하는 파일을 업로드합니다. 머리글 라인은 ``—–BEGIN PRIVATE``으로 시작합니다. 개인 키 파일을 업로드하려면 Reference asset 확인란을 선택합니다.

아니요

Snowflake 개인 키 비밀번호

사용하는 경우:

  • Session Token Authentication Strategy: 비워 두어야 합니다.

  • KEY_PAIR: Snowflake 개인 키 파일과 연결된 비밀번호를 입력합니다.

아니요

Snowflake 역할

사용하는 경우:

  • 세션 토큰 인증 전략: 런타임에 할당된 Snowflake 역할 또는 이 Snowflake 역할에 부여된 하위 역할을 사용합니다. 런타임에 대한 More Options [⋮] 버튼을 확장하고 :ui:`Set Snowflake role`을 선택하여 Openflow UI에서 런타임 Snowflake 역할을 찾을 수 있습니다.

  • KEY_PAIR Authentication Strategy: 서비스 사용자에 대해 구성된 유효한 역할을 사용합니다.

Snowflake 사용자 이름

사용하는 경우:

  • Session Token Authentication Strategy: 비워 두어야 합니다.

  • KEY_PAIR: Snowflake 인스턴스에 연결하는 데 사용되는 사용자 이름을 입력합니다.

Snowflake 웨어하우스

쿼리 실행에 사용되는 Snowflake 웨어하우스입니다.

SQLServer 수집 매개 변수 컨텍스트

매개 변수

설명

포함된 테이블 이름

데이터베이스와 스키마를 포함한 소스 테이블 경로의 쉼표로 구분된 목록입니다. 예를 들면 다음과 같습니다.

database_1.public.table_1, database_2.schema_2.table_2

포함된 테이블 Regex

데이터베이스 및 스키마 이름을 포함하여 테이블 경로와 일치시킬 정규식입니다. 식과 일치하는 모든 경로가 복제되며, 나중에 생성되는 패턴과 일치하는 새 테이블도 자동으로 포함됩니다. 예를 들면 다음과 같습니다.

database_name\.public\.auto_.*

필터 JSON

정규화된 테이블 이름 목록과 복제에 포함해야 하는 열 이름에 대한 정규식 패턴이 포함된 JSON 입니다.

다음 예제에는 my_db 데이터베이스의 공개 스키마에서 ``table1``의 ``name``으로 끝나는 모든 열이 포함됩니다.

[ {"database":"my_db", "schema":"public", "table":"table1", "includedPattern":".*name"} ]

작업 일정 CRON 병합하기

CRON 식은 저널에서 대상 테이블로의 병합 작업이 트리거되는 기간을 정의하는 식입니다. 연속 병합을 원하거나 웨어하우스 실행 시간을 제한하는 시간 예약을 하려면 * * * * * ? 로 설정하십시오.

예:

  • * 0 * * * ? 문자열은 1분 동안 전체 시간에 병합을 예약할 것을 나타냅니다

  • * 20 14 ? * MON-FRI 문자열은 매주 월요일부터 금요일까지 오후 2:20에 병합을 예약하려는 것을 나타냅니다.

추가 정보 및 예제는 Quartz 설명서 의 cron 트리거 자습서를 참조하십시오.

SQL Server 복제본 서버에서 테이블 복제

커넥터는 기본 서버, `트랜잭션 복제 <https://learn.microsoft.com/en-us/sql/relational-databases/replication/transactional/transactional-replication>`_를 사용하는 구독자 서버 또는 `Always On 가용성 그룹 <https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server>`_의 보존 복제본에서 데이터를 수집할 수 있습니다. SQL Server 복제본에 연결하도록 커넥터를 구성하기 전에 기본 노드와 복제본 노드 간의 복제가 올바르게 작동하는지 확인합니다. 커넥터의 데이터 누락 문제를 조사할 때 먼저 커넥터에서 사용하는 복제본 서버에 누락된 행 및 변경 추적 이벤트가 있는지 확인합니다.

연속성을 보장하려면 기본 서버와 복제본 서버 모두에서 동일한 연결 사용자를 사용할 수 있고 데이터 및 변경 내용 추적 테이블에 액세스할 수 있는지 확인합니다.

트랜잭션 복제

트랜잭션 복제 <https://learn.microsoft.com/en-us/sql/relational-databases/replication/transactional/transactional-replication>`_는 게시자에서 구독자로 데이터 변경 사항을 복사하는 데이터 배포 메커니즘입니다. 게시자가 아닌 구독자 서버에서 읽도록 커넥터를 구성하려면 :ui:`SQLServer Connection URL 매개 변수에 구독자 서버 URL을 지정합니다.

경고

복제가 시작된 후에는 데이터베이스 서버를 변경하지 마세요. 각 데이터베이스는 자체 변경 내용 추적 상태를 독립적으로 유지하므로 다른 서버로 전환하면 커넥터가 이미 처리된 변경 내용을 추적하지 못하게 되어 데이터가 손실될 수 있습니다.

Always On 가용성 그룹

Always On 가용성 그룹 <https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/overview-of-always-on-availability-groups-sql-server>`_은 장애 조치 목적으로 데이터베이스의 동기화된 복사본을 유지 관리하는 고가용성 재해 복구 솔루션입니다. 커넥터는 가용성 그룹의 보조 복제본에서 읽을 있습니다. 최상의 환경을 위해 `가용성 그룹 수신기 <https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/listeners-client-connectivity-application-failover>`_를 구성하고 :ui:`SQLServer Connection URL 매개 변수에 리스너 DNS 이름을 사용합니다.

테이블 복제 다시 시작

예를 들어 기본 키가 누락되거나 지원되지 않는 스키마 변경으로 인한 FAILED 상태의 테이블은 자동으로 다시 시작되지 않습니다. 테이블에 FAILED 상태가 입력되거나 처음부터 복제를 다시 시작해야 하는 경우, 다음 절차에 따라 테이블을 제거하고 복제에 다시 추가합니다.

참고

기본 키 누락과 같이 소스 테이블의 문제로 인해 실패가 발생한 경우 소스 데이터베이스에서 해당 문제를 해결한 후 계속 진행합니다.

  1. 흐름 매개 변수에서 테이블 제거: 수집 매개 변수 컨텍스트의 :ui:`Included Table Names`에서 테이블을 제거하거나 테이블이 더 이상 일치하지 않도록 :ui:`Included Table Regex`를 수정합니다.

  2. 테이블이 제거되었는지 확인:

    1. Openflow 런타임 캔버스에서 프로세서 그룹을 마우스 오른쪽 버튼으로 클릭하고 :ui:`Controller Services`를 선택합니다.

    2. 컨트롤러 서비스를 나열하는 테이블에서 Table State Store 행을 찾아 행의 오른쪽에 있는 세로 점 3개를 클릭한 다음 :ui:`View State`를 선택합니다.

    중요

    계속하기 전에 이 목록에서 테이블의 상태가 완전히 제거될 때까지 기다려야 합니다. 이 구성 변경이 완료될 때까지 계속 진행하지 마세요.

  3. 대상 정리: 테이블의 상태가 완전히 제거된 것으로 표시되면 Snowflake에서 대상 테이블을 수동으로 :doc:`DROP </sql-reference/sql/drop-table>`합니다. 커넥터는 스냅샷 단계 중에 기존 대상 테이블을 덮어쓰지 않습니다. 테이블이 여전히 존재하면 복제가 다시 실패합니다. 선택적으로, 저널 테이블과 스트림이 더 이상 필요하지 않은 경우 제거할 수도 있습니다.

  4. 테이블 다시 추가: Included Table Names 또는 Included Table Regex 매개 변수를 업데이트하여 테이블을 다시 포함합니다.

  5. 다시 시작 확인: 이전에 제공된 지침을 참조하여 :ui:`Table State Store`를 확인합니다. 테이블의 상태는 NEW 상태로 표시된 후 SNAPSHOT_REPLICATION으로 전환되고 마지막으로 INCREMENTAL_REPLICATION으로 표시되어야 합니다.

테이블에서 열의 하위 집합 복제하기

커넥터는 테이블별로 복제된 데이터를 구성된 열의 하위 집합으로 필터링합니다.

열에 필터를 적용하려면 복제 매개 변수 컨텍스트에서 열 필터 속성을 수정하여 필터를 적용하려는 모든 테이블에 대해 1개의 항목씩 구성 배열을 추가합니다.

이름이나 패턴에 따라 열을 포함하거나 제외합니다. 테이블당 단일 조건을 적용하거나 여러 조건을 결합할 수 있으며, 제외가 항상 포함보다 우선합니다.

다음 예제는 사용 가능한 필드를 보여줍니다. schematable 필드는 필수 입력 사항입니다. included, excluded, includedPattern, excludedPattern 중 하나 이상이 필요합니다.

[
    {
        "schema": "<source table schema>",
        "table" : "<source table name>",
        "included": ["<column name>", "<column name>"],
        "excluded": ["<column name>", "<column name>"],
        "includedPattern": "<regular expression>",
        "excludedPattern": "<regular expression>",
    }
]
Copy

테이블의 데이터 변경 사항 추적

커넥터는 소스 테이블 데이터의 현재 상태뿐만 아니라 모든 변경 집합 내 모든 행의 모든 상태도 복제합니다. 이 데이터는 대상 테이블과 동일한 스키마로 생성된 저널 테이블에 저장됩니다.

저널 테이블 이름은 <source_table_name>_JOURNAL_<timestamp>_<schema_generation> 형식입니다. 여기서 ``<timestamp>``는 소스 테이블이 복제에 추가된 시점(초)의 epoch 값이며, ``<schema_generation>``은 소스 테이블에서 스키마가 변경될 때마다 증가하는 정수입니다. 결과적으로, 스키마가 변경되는 소스 테이블에는 여러 저널 테이블이 있습니다.

복제에서 테이블을 제거한 후 다시 추가하면 <timestamp> 값이 변경되며 ``<schema_generation>``이 ``1``부터 다시 시작됩니다.

중요

Snowflake는 어떤 방식으로든 저널 테이블의 구조를 변경하지 않을 것을 권장합니다. 커넥터가 복제 프로세스의 일부로 대상 테이블을 업데이트하는 데 사용됩니다.

커넥터는 저널 테이블을 삭제하지 않으며, 복제된 모든 소스 테이블에 대해 최신 저널을 사용하여 저널 상단의 Append-only 스트림만 읽습니다. 저장소를 회수하려면 다음을 수행하면 됩니다.

  • 언제든지 모든 저널 테이블을 자를 수 있습니다.

  • 복제에서 제거된 원본 테이블과 관련된 저널 테이블을 삭제할 수 있습니다.

  • 능동적으로 복제된 테이블에 대한 최신 세대 저널 테이블을 제외한 모든 저널 테이블을 삭제할 수 있습니다.

예를 들어, 커넥터가 소스 테이블 orders 를 적극적으로 복제하도록 설정되어 있고 이전에 테이블 customers 를 복제에서 제거한 경우 다음과 같은 저널 테이블이 있을 수 있습니다. 이 경우 orders_5678_2제외하고 모두 삭제할 수 있습니다.

customers_1234_1
customers_1234_2
orders_5678_1
orders_5678_2

병합 작업 예약 구성하기

커넥터는 데이터 웨어하우스를 사용하여 변경 데이터 캡처(CDC) 데이터를 대상 테이블에 병합합니다. 이 작업은 MergeSnowflakeJournalTable 프로세서에 의해 트리거됩니다. 새로운 변경 사항이 없거나 MergeSnowflakeJournalTable 큐에 대기 중인 새 플로우 파일이 없는 경우 병합이 트리거되지 않고 웨어하우스가 자동 일시 중단됩니다.

웨어하우스 비용을 제한하고 예약된 시간에만 병합을 제한하려면 병합 작업 일정 CRON 매개 변수에서 CRON 식을 사용합니다. MergeSnowflakeJournalTable 프로세서로 수신 플로우 파일을 제한하고 병합은 전용 기간에만 트리거됩니다. 예약에 대한 자세한 내용은 `예약 전략<https://nifi.apache.org/docs/nifi-docs/html/user-guide.html#scheduling-strategy>`_을 참조하세요.

플로우 실행

  1. 평면을 마우스 오른쪽 버튼으로 클릭하고 Enable all Controller Services 를 선택합니다.

  2. 가져온 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Start 를 선택합니다. 커넥터가 데이터 수집을 시작합니다.