자습서: Snowflake Native SDK for Connectors Java Connector 예

소개

Snowflake Native SDK for Connectors 를 사용하여 구축한 커넥터 예에 대한 자습서에 오신 것을 환영합니다. 이 가이드에서는 예시 커넥터를 빌드, 배포, 설치 및 구성하는 방법을 설명합니다.

제공된 예시 애플리케이션은 GitHub API 에 연결하여 지정된 리포지토리에서 문제에 대한 정보를 가져와서 GitHub 문제 데이터를 수집합니다.

이 자습서에서는 다음에 대해 설명합니다.

  • 원본에서 예시 커넥터 빌드하기

  • 새 애플리케이션 패키지 및 버전 배포하기

  • 새 애플리케이션 인스턴스 설치하기

  • 데이터를 수집하도록 커넥터 인스턴스 구성하기

전제 조건

시작하기 전에 다음 요구 사항을 충족하는지 확인합니다.

  • Java에 대한 기본 지식

  • Snowflake Native Apps 에 대한 기본 지식

  • Streamlit UI 에 대한 기본 지식

  • ACCOUNTADMIN 역할이 있는 Snowflake 계정에 액세스하기

  • GitHub 앱 을 만들 수 있는 GitHub 계정

  • 프로젝트를 빌드하고 배포 스크립트를 실행하기 위한 MacOS 또는 Linux 머신

로컬 환경 준비하기

계속 진행하기 전에 컴퓨터에 필요한 모든 소프트웨어가 설치되어 있는지 확인하고 예시 커넥터 리포지토리를 복제본으로 만들어야 합니다.

Java 설치

Snowflake Native SDK for Connectors 에는 Java LTS (장기 지원) 버전 11 이상이 필요합니다. 컴퓨터에 최소 요구 사항인 Java 버전이 설치되어 있지 않은 경우 Oracle Java 또는 OpenJDK 를 설치해야 합니다.

Oracle Java

최신 LTS 릴리스(JDK)는 Oracle NFTC 에서 무료로 다운로드하여 사용할 수 있습니다. 다운로드 및 설치 관리 지침은 Oracle 페이지 에서 확인할 수 있습니다.

OpenJDK

OpenJDK 는 Java의 오픈 소스 구현입니다. 다운로드 및 설치 관리 지침은 openjdk.orgjdk.java.net 에서 확인할 수 있습니다.

서드 파티 OpenJDK 버전(예: Eclipse Temurin 또는 Amazon Corretto)을 사용할 수도 있습니다.

리포지토리 복제

connectors-native-sdk 리포지토리를 컴퓨터에 복제합니다.

Snowflake CLI 구성

커넥터를 빌드, 배포 및 설치하려면 Snowflake CLI 도구가 필요합니다. 컴퓨터에 Snowflake CLI 가 설치되어 있지 않은 경우 여기 의 지침에 따라 설치하십시오.

도구가 설치된 후 구성 파일 에서 Snowflake에 대한 연결을 구성해야 합니다.

구성된 연결이 없는 경우 native_sdk_connection 이라는 이름의 연결을 새로 만듭니다. deployment/snowflake.toml 파일에서 연결 예시를 찾을 수 있습니다.

이미 연결이 구성되어 있고 커넥터와 함께 사용하려는 경우 이 자습서에서 이 연결을 사용할 때마다 native_sdk_connection 대신 해당 이름을 사용하십시오.

프로젝트 구조

Snowflake Native SDK for Connectors 프로젝트는 몇 가지 주요 요소로 구성됩니다.

Connectors Native SDK Java

connectors-native-sdk-java 디렉터리에는 SDK 구성 요소에 대한 단위 및 통합 테스트와 함께 모든 Snowflake Native SDK for Connectors Java 코드가 포함되어 있습니다. Snowflake 내부의 Native Apps의 특성상 이는 Java 코드뿐만 아니라 작동하는 애플리케이션을 만드는 데 필요한 SQL 코드도 의미합니다. 데이터베이스 오브젝트의 정의는 src/main/resources 디렉터리에서 확인할 수 있습니다. 이러한 파일은 애플리케이션을 만들 때 애플리케이션 내에서 사용할 수 있는 오브젝트를 사용자 지정하는 데 사용됩니다. 예시 커넥터에서는 사용 가능한 모든 함수에 대한 오브젝트를 생성하는 all.sql 파일을 사용합니다. 이 파일은 애플리케이션 인스턴스의 설치 프로세스 중에 실행됩니다.

Connectors Native SDK Test Java

connectors-native-sdk-test-java 디렉터리에는 단위 테스트에 사용되는 도우미 라이브러리의 원본 코드(예: 특정 구성 요소, 사용자 지정 어설션 등을 모의하는 데 사용되는 오브젝트)가 포함되어 있습니다. 이러한 파일은 커넥터 애플리케이션의 일부가 아닙니다.

예시 Java GitHub 커넥터

실제 예시 커넥터는 examples/connectors-native-sdk-example-java-github-connector 디렉터리 내에 있습니다. app/ 디렉터리에는 Native App을 실행하는 데 필요한 모든 파일이 포함되어 있습니다.

  • app/streamlit/ 디렉터리에는 커넥터의 Streamlit UI 를 실행하는 데 필요한 원본 파일이 들어 있습니다.

  • setup.sql 파일은 애플리케이션 설치 중에 실행되며 필요한 데이터베이스 오브젝트를 생성하는 역할을 합니다. 이 파일은 앞서 언급한 all.sql 파일과 일부 사용자 지정 SQL 코드를 실행합니다.

  • manifest.yml 파일은 Native App의 매니페스트입니다. 애플리케이션 패키지를 생성한 다음 애플리케이션 인스턴스 자체를 생성해야 합니다. 이 파일은 애플리케이션 속성과 애플리케이션에 필요한 권한을 지정합니다.

또한 examples/connectors-native-sdk-example-java-github-connector 디렉터리에는 src/ 하위 디렉터리가 있으며, 여기에는 요구 사항 클래스 구현 및 기본 SDK 구성 요소의 사용자 지정과 같은 사용자 지정 커넥터 로직이 포함되어 있습니다.

Connectors Native SDK Template

Snowflake Native SDK for Connectors 를 종속성으로 사용하여 새 커넥터를 빠르게 빌드하는 데 도움이 되는 템플릿 Gradle Java 프로젝트입니다. 자세한 내용은 자습서: Snowflake Native SDK for Connectors Java Connector 템플릿 에서 확인할 수 있습니다.

빌드, 배포 및 설치

다음 섹션에서는 예시 커넥터를 빌드, 배포 및 설치하는 방법을 설명합니다.

커넥터 빌드하기

Snowflake Native SDK for Connectors 를 사용하여 만든 커넥터를 빌드하는 것은 일반적인 Java 애플리케이션을 빌드하는 것과는 조금 다릅니다. 원본에서 .jar 아카이브를 빌드하는 것 외에도 수행해야 할 작업이 몇 가지 있습니다. 애플리케이션 구축은 다음 단계로 구성됩니다.

  1. 빌드 디렉터리에 사용자 지정 내부 구성 요소 복사하기

  2. SDK 구성 요소를 빌드 디렉터리에 복사하기

내부 구성 요소 복사하기

이 단계에서는 커넥터 .jar 파일을 빌드한 다음 UI, 매니페스트 및 설정 파일과 함께 sf_build 디렉터리로 복사합니다.

이 단계를 실행하려면 ./gradlew copyInternalComponents 명령을 실행합니다.

SDK 구성 요소 복사

이 단계에서는 SDK .jar 파일(커넥터 Gradle 모듈에 종속성으로 추가됨)을 sf_build 디렉터리로 복사하고 .jar 아카이브에서 번들된 .sql 파일을 추출합니다.

이러한 .sql 파일을 사용하면 애플리케이션 설치 중에 어떤 공급자 오브젝트가 생성될지 사용자 지정할 수 있습니다. 오브젝트를 생략하면 잘못하면 일부 기능이 작동하지 않을 수 있으므로 처음에는 사용자 지정을 권장하지 않습니다. 예시 커넥터 애플리케이션은 all.sql 파일을 사용하여 권장되는 모든 SDK 오브젝트를 생성합니다.

이 단계를 실행하려면 ./gradlew copySdkComponents 명령을 실행합니다.

커넥터 배포하기

Native App을 배포하려면 Snowflake 내에 애플리케이션 패키지를 만들어야 합니다. 그런 다음 sf_build 디렉터리에 있는 모든 파일을 Snowflake에 업로드해야 합니다.

참고 - 개발 목적의 버전 생성은 선택 사항이며, 스테이징된 파일에서 애플리케이션 인스턴스를 직접 생성할 수 있습니다. 이 접근 방식을 사용하면 버전과 애플리케이션 인스턴스를 다시 만들지 않고도 대부분의 커넥터 파일에서 변경 사항을 확인할 수 있습니다.

다음 작업이 수행됩니다.

  1. 아직 존재하지 않는 경우 새 애플리케이션 패키지 만들기

  2. 패키지 내부에 스키마 및 파일 스테이지 만들기

  3. sf_build 디렉터리에서 스테이지로 파일 업로드하기(이 단계는 다소 시간이 걸릴 수 있음)

커넥터를 배포하려면 snow app deploy --connection=native_sdk_connection 명령을 실행합니다.

snow app deploy 명령에 대한 자세한 내용은 snow app deploy 섹션을 참조하십시오.

생성된 애플리케이션 패키지는 이제 계정의 Snowflake UI 에서 Data products 카테고리의 App packages 탭에 표시됩니다.

앱 패키지 뷰

커넥터 설치하기

애플리케이션 설치가 프로세스의 마지막 단계입니다. 이전에 생성한 애플리케이션 패키지에서 애플리케이션을 생성합니다.

커넥터를 설치하려면 snow app run --connection=native_sdk_connection 명령을 실행합니다.

snow app run 명령에 대한 자세한 내용은 snow app run 섹션을 참조하십시오.

설치된 애플리케이션은 이제 계정의 Snowflake UI 에서 Data products 카테고리의 Installed apps 탭에 표시됩니다.

설치된 앱 뷰

커넥터 파일 업데이트하기

커넥터 파일을 수정하려는 경우 언제든지 애플리케이션 패키지 스테이지에 수정된 파일을 쉽게 업로드할 수 있습니다. 업로드 명령은 업데이트된 파일에 따라 달라집니다.

업데이트 명령을 실행하기 전에 ./gradlew copyInternalComponents 를 실행하여 sf_build 디렉터리에 커넥터의 새 파일을 복사해야 합니다.

UI .py 파일 또는 커넥터 .java 파일

snow app deploy --connection=native_sdk_connection 명령을 사용하면 현재 애플리케이션 인스턴스가 재설치 없이 새 파일을 사용합니다.

setup.sql 또는 manifest.yml 파일

snow app run --connection=native_sdk_connection 명령을 사용하면 새 파일이 스테이지에 업로드된 후 현재 애플리케이션 인스턴스가 다시 설치됩니다.

커넥터 흐름

데이터를 구성하고 데이터를 수집하기 전에 데이터가 실제로 어떻게 작동하는지 간단히 살펴볼 필요가 있습니다. 아래에서 이 자습서의 다음 단계에서 완료할 모든 단계를 확인할 수 있습니다. 시작은 전제 조건을 완료하고 마법사를 통과하는 것입니다.

커넥터의 마법사 스테이지에서는 커넥터에 필요한 모든 요구 사항 구성을 사용자에게 안내합니다. 일일 사용 스테이지에서는 사용자가 통계를 보고, 수집을 위한 리포지토리를 구성하고, 커넥터를 일시 중지/다시 시작할 수 있습니다.

커넥터 흐름 개요

구성 마법사

애플리케이션을 열면 마법사 UI 페이지가 열립니다. 커넥터는 데이터 수집을 시작하기 전에 사용자가 제공한 일부 정보가 필요합니다. 마법사는 애플리케이션 자체에서 요구되는 모든 단계를 안내할 뿐만 아니라 전체 Snowflake 계정과 때로는 수집된 데이터의 출처가 될 외부 시스템(이 경우 GitHub)에 대해서도 안내합니다. 이 모든 단계가 완료되면 커넥터가 데이터 수집을 시작할 준비가 된 것입니다.

전제 조건

마법사의 첫 번째 단계는 전제 조건입니다. 이 단계에서는 커넥터를 구성하기 전에 준비해야 할 사항의 목록을 제공합니다. 필수 요구 사항을 완료할 필요는 없지만 나중에 더 원활한 구성 프로세스를 위해 권장됩니다.

예시 GitHub 커넥터의 경우 더 진행하기 전에 처리해야 할 두 가지 사항이 있습니다.

  1. GitHub 계정 준비하기

  2. 수집하려는 GitHub 리포지토리에 대한 액세스 확인하기

전제 조건

커넥터 구성

마법사의 다음 단계는 커넥터 구성입니다. 이 단계를 통해 사용자는 다음을 수행할 수 있습니다.

  • Native Apps 권한 SDK 를 사용하여 요청되는 애플리케이션 권한 부여

  • 수집 작업을 예약할 때 참조할 웨어하우스 선택

  • 수집할 데이터의 대상 데이터베이스와 스키마 선택

권한

애플리케이션은 CREATE DATABASEEXECUTE TASK 를 수행하려면 두 개의 계정 수준 권한이 필요합니다.

수집된 데이터의 대상 데이터베이스를 만들려면 첫 번째 권한이 필요합니다. 이 데이터베이스는 애플리케이션 외부에 생성해야 애플리케이션이 제거되더라도 수집된 데이터를 그대로 유지할 수 있습니다. 그러나 이 예에서는 이 기능을 지원하지 않으며 항상 새 데이터베이스가 생성됩니다.

두 번째 권한은 GitHub 에서 데이터를 가져와 대상 데이터베이스에 저장하는 주기적인 작업을 예약하는 데 필요합니다.

이러한 권한을 부여하려면 보안 탭을 사용하거나 커넥터 구성 화면에서 Grant privileges 버튼을 누르면 됩니다. 후자를 선택하면 화면에 팝업이 나타납니다.

권한

웨어하우스 참조

커넥터를 실행하고 수집 작업을 예약하려면 웨어하우스가 필요합니다. 애플리케이션은 참조 를 통해 웨어하우스를 사용합니다. 웨어하우스 참조는 manifest.yml 파일에 정의되어 있습니다.

references:
  - WAREHOUSE_REFERENCE:
      label: "Warehouse used for ingestion"
      description: "Warehouse which will be used to schedule ingestion tasks"
      privileges: [USAGE]
      object_type: WAREHOUSE
      register_callback: PUBLIC.REGISTER_REFERENCE
Copy

참조는 위의 권한과 동일한 보안 탭을 사용하거나 Choose warehouse 버튼을 눌러 설정할 수 있습니다.

웨어하우스 참조

대상 데이터베이스 및 스키마

앞서 언급했듯이 커넥터는 수집된 데이터를 저장하기 위해 데이터베이스가 필요합니다. 이 데이터베이스는 이후 단계에서 사용자가 지정한 스키마로 생성됩니다. 데이터베이스의 이름은 제공된 데이터베이스가 이미 존재하지 않는 한 사용자에게 달려 있습니다.

완성된 커넥터 구성 화면은 다음과 비슷하게 표시됩니다.

커넥터 구성 화면

연결 구성

마법사의 다음 단계는 연결 구성입니다. 이 단계에서는 사용자가 외부 데이터 원본에 대한 연결을 설정할 수 있습니다. 가급적 사용자/비밀번호 또는 일반 텍스트 토큰 대신 OAuth2 인증을 사용하는 것이 좋습니다.

GitHub 는 현재 두 가지 OAuth2 인증 방법, 즉 OAuth 앱과 GitHub 앱을 지원합니다. OAuth 앱은 설정 및 사용이 조금 더 쉽지만 동일한 수준의 권한 제어 세분성을 제공하지는 않습니다. 이 예에서는 GitHub 앱을 사용하는 것이 좋지만 OAuth 앱을 사용하려는 경우에도 커넥터는 의도한 대로 작동합니다.

권한 SDK 설정

OAuth2 인증을 위해서는 사용자 계정에 보안 통합, 시크릿 및 외부 액세스 통합을 만들어야 합니다. 커넥터는 Native Apps 권한 SDK 를 사용하여 해당 오브젝트의 생성을 요청합니다.

커넥터에 필요한 외부 액세스 통합 및 시크릿에 대한 참조는 manifest.yml 파일에 정의되어 있습니다.

references:
  - GITHUB_EAI_REFERENCE:
      label: "GitHub API access integration"
      description: "External access integration that will enable connection to the GitHub API using OAuth2"
      privileges: [USAGE]
      object_type: "EXTERNAL ACCESS INTEGRATION"
      register_callback: PUBLIC.REGISTER_REFERENCE
      configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
  - GITHUB_SECRET_REFERENCE:
      label: "GitHub API secret"
      description: "Secret that will enable connection to the GitHub API using OAuth2"
      privileges: [READ]
      object_type: SECRET
      register_callback: PUBLIC.REGISTER_REFERENCE
      configuration_callback: PUBLIC.GET_REFERENCE_CONFIG
Copy

또한 setup.sql 파일에 특별한 프로시저를 추가해야 합니다. 위에 제시된 각 참조에 대한 configuration_callback 속성에서 참조됩니다.

CREATE OR REPLACE PROCEDURE PUBLIC.GET_REFERENCE_CONFIG(ref_name STRING)
    RETURNS STRING
    LANGUAGE SQL
    AS
        BEGIN
            CASE (ref_name)
                WHEN 'GITHUB_EAI_REFERENCE' THEN
                    RETURN OBJECT_CONSTRUCT(
                        'type', 'CONFIGURATION',
                        'payload', OBJECT_CONSTRUCT(
                            'host_ports', ARRAY_CONSTRUCT('api.github.com'),
                            'allowed_secrets', 'LIST',
                            'secret_references', ARRAY_CONSTRUCT('GITHUB_SECRET_REFERENCE')
                        )
                    )::STRING;
                WHEN 'GITHUB_SECRET_REFERENCE' THEN
                    RETURN OBJECT_CONSTRUCT(
                        'type', 'CONFIGURATION',
                        'payload', OBJECT_CONSTRUCT(
                            'type', 'OAUTH2',
                            'security_integration', OBJECT_CONSTRUCT(
                                'oauth_scopes', ARRAY_CONSTRUCT('repo'),
                                'oauth_token_endpoint', 'https://github.com/login/oauth/access_token',
                                'oauth_authorization_endpoint', 'https://github.com/login/oauth/authorize'
                            )
                        )
                    )::STRING;
                ELSE
                    RETURN '';
            END CASE;
        END;
Copy

프로시저에서 제공하는 외부 액세스 통합 참조:

  • host_ports - 수집 중에 액세스할 외부 데이터 원본의 호스트 이름

  • secret_references - OAuth 시크릿에 대한 참조 이름으로 구성된 배열

  • allowed_secrets - secret_references 필드에서 지정된 시크릿을 사용하도록 Permission SDK 에 지시하는 LIST

프로시저에서 제공하는 시크릿 참조:

  • type - 시크릿의 경우 OAUTH2

  • security_integration - 생성된 보안 통합의 속성:

    • oauth_scopes - 커넥터가 요청한 OAuth 범위의 목록(GitHub 앱을 사용하는 경우 - 이 필드는 선택 사항임)

    • oauth_token_endpoint - 새로 고침 및 액세스 토큰을 획득할 엔드포인트

    • oauth_authorization_endpoint - 승인 요청이 전송될 엔드포인트

GitHub 앱 설정

다음 단계는 사용자 계정에 GitHub 앱을 설정하는 것입니다. 이 앱은 데이터를 수집할 수 있도록 계정에 대한 제한된 액세스 권한을 부여하는 데 사용됩니다.

첫 번째 단계는 커넥터 UI 에서 Request access 버튼을 누르는 것입니다.

OAuth 액세스 요청하기

첫 번째 화면에서는 외부 연결이 허용되는 엔드포인트를 검토할 수 있습니다.

EAI 엔드포인트 검토하기

Next 를 누르면 두 번째 화면이 표시됩니다. OAuth2 를 선택하여 새 통합 및 시크릿을 생성하고 제공된 리디렉션 URL (조직 이름과 계정의 리전 포함)을 복사합니다.

OAuth 리디렉션 URL

다음으로, GitHub 계정 설정 페이지로 이동한 다음 Developer settings > GitHub Apps 로 이동하여 New GitHub App 버튼을 누릅니다.

  1. 앱의 이름과 홈페이지 URL 입력

  2. 복사한 리디렉션 URL 을 Callback URL 필드에 붙여넣기

  3. Expire user authorization tokens 옵션이 선택되어 있는지 확인

  4. Request user authorization (OAuth) during installation 이 선택되지 않았는지 확인

  5. 필요하지 않은 경우 - Webhook 섹션에서 Active 옵션 선택 취소

  6. 커넥터가 작동하는 데 필요한 권한 선택

    1. Read-only 액세스 권한을 가진 Repository permissions > Issues

    2. Read-only 액세스 권한을 가진 Repository permissions > Metadata

  7. 이 예시 커넥터를 사용하여 앱이 본인만 사용하는 경우 설치 액세스 섹션에서 Only on this account 를 선택하는 것이 가장 좋음

앱이 생성된 후 왼쪽 사이드바에서 Install app 옵션을 누르고 계정에 애플리케이션을 설치합니다. 앱(및 확장 프로그램인 커넥터)이 액세스할 수 있는 리포지토리를 선택할 수 있습니다. 이 설치가 없으면 커넥터는 공용 리포지토리에만 액세스할 수 있습니다.

OAuth 통합 설정

설치 후 GitHub 앱으로 돌아가서 새 클라이언트 시크릿을 생성합니다. 다시 표시되지 않으므로 즉시 복사하십시오. 커넥터의 OAuth 구성 팝업에 클라이언트 시크릿을 붙여넣습니다. 마지막으로 애플리케이션의 클라이언트 ID (앱이 아닌 ID)를 복사본으로 만들어 커넥터의 OAuth 구성 팝업에 붙여넣습니다.

OAuth 구성

Connect 를 누르면 GitHub 창이 나타나며 GitHub 계정에 대한 앱 승인을 요청합니다. 승인 후 - 커넥터 UI 로 자동 리디렉션됩니다. 승인에 성공하면(완료하고 팝업을 닫는 데 몇 초 정도 걸릴 수 있음) 외부 액세스 통합 및 시크릿 참조의 ID로 페이지가 채워집니다.

연결 구성 화면

Connect 버튼을 누르면 커넥터 내부의 TEST_CONNECTION 프로시저가 트리거됩니다. 이 프로시저는 GitHub API octocat 엔드포인트 에 접속하여 외부 연결이 올바르게 구성되었는지, OAuth 액세스 토큰이 올바르게 획득되었는지 확인합니다.

테스트에 성공하면 애플리케이션이 마무리 단계로 진행됩니다.

구성 마무리

마무리는 마법사의 마지막 단계입니다. 이 단계에서는 조직과 리포지토리 이름을 제공하라는 메시지가 표시됩니다. 이 리포지토리는 연결 구성 단계에서 얻은 OAuth 토큰으로 액세스할 수 있어야 합니다. 제공된 리포지토리는 연결 검증 목적으로만 사용됩니다.

TEST_CONNECTION 프로시저는 GitHub API 에 액세스할 수 있고 제공된 토큰이 유효한지 여부만 확인하므로 이전 단계와 약간 다릅니다.

마무리 단계에서는 사용자가 제공한 리포지토리에 제공된 GitHub API 토큰으로 액세스할 수 있는지 확인합니다. 토큰에 리포지토리에 액세스할 수 있는 요구 사항이 없는 경우 실패합니다. 비공개 리포지토리에서 데이터를 수집하려는 경우, 제대로 작동하는지 확인하기 위해 비공개 리포지토리를 사용하여 구성을 마무리하는 것이 좋습니다.

또한 이 단계에서 커넥터 구성 단계에서 지정한 데이터베이스와 스키마가 계정에 최종적으로 생성됩니다.

구성 완료 화면

매일 사용

구성 마법사가 성공적으로 완료되면 이제 예시 GitHub 커넥터를 사용할 수 있습니다.

다음 단계에서 설명합니다.

  • 데이터를 수집하도록 리소스를 구성하는 방법

  • 수집 프로세스의 작동 방식

  • 수집된 기록의 통계를 보는 방법

  • 수집된 데이터를 보는 방법

  • 커넥터 일시 중지 및 재개 방법

리소스 구성하기

리소스를 구성하려면 Data Sync 탭으로 이동합니다. 이 탭에는 이미 수집을 위해 구성된 리포지토리 목록이 표시됩니다. 처음 열면 목록이 비어 있습니다.

리소스를 구성하려면 지정된 필드에 조직 및 리포지토리 이름을 입력한 다음 Queue ingestion 버튼을 누릅니다. 예:

리소스 정의하기

새 리소스에 대한 정의가 저장되고 전역 일정에 따라 스케줄러가 이를 선택합니다. 데이터가 수집되어 싱크 테이블에 표시되기까지는 다소 시간이 걸립니다. 아래 테이블에서 그 내용을 볼 수 있습니다.

정의된 리소스 나열하기

수집 예약 및 상태

Data Sync 탭 상단에는 수집에 대한 일반 정보가 포함된 섹션이 있습니다. 이 섹션에서 사용자는 구성된 리소스가 수집될 전역 일정을 확인할 수 있습니다. 오른쪽 하단의 레이블에는 현재 수집 상태가 표시됩니다. 처음에는 첫 번째 리소스가 정의될 때까지 NOT SYNCING 상태가 표시됩니다. 그 후에는 SYNCING 으로 전환되며, 마지막으로 하나 이상의 리소스 수집이 성공적으로 완료되면 해당 수집의 완료 날짜가 표시됩니다.

동기화 상태

수집 프로세스

수집 프로세스는 Scheduler TaskTask Reactor 구성 요소를 사용하여 처리됩니다. 스케줄러는 전역 일정에 따라 정의된 리소스를 선택해 Work Items 로 큐에 제출합니다. 그러면 Dispatcher 라는 작업 리액터 구성 요소가 이를 픽업하여 정의된 작업자 수로 분할합니다. 각 워커는 수집 큐에서 가져온 모든 항목에 대해 실제 수집을 수행합니다.

리소스의 단일 수집은 GitHub API 의 엔드포인트에서 데이터를 가져온 다음 싱크 데이터베이스의 지정된 테이블에 저장하는 것으로 구성됩니다. 이 예에서는 모든 데이터를 실행할 때마다 가져오기 때문에 새 기록이 테이블에 추가되고 이전 기록이 업데이트됩니다. 또한 각 Work Item 의 실행에는 시작 및 종료 날짜, 수집된 행 수, 상태 등과 같은 데이터를 내부 커넥터 테이블에 로그하는 것이 포함되며, 이 데이터는 통계 목적으로 사용됩니다.

통계 보기

Home 화면에는 과거 수집 실행의 통계가 포함되어 있습니다. 데이터는 PUBLIC.AGGREGATED_CONNECTOR_STATS 뷰를 기반으로 합니다. 이 뷰는 수집된 행 수를 수집된 타임존을 기준으로 집계합니다. 이 뷰의 데이터는 워크시트에서 실행되는 SELECT 쿼리를 사용하여 검색할 수 있으므로 한 시간보다 큰 시간 범위를 기준으로 집계할 수도 있습니다.

워크시트를 통해 사용할 수 있는 또 다른 뷰 PUBLIC.CONNECTOR_STATS 가 있습니다. 이 데이터를 사용하면 상태, 시작 및 종료 날짜, 초당 평균 수집 행 수 및 데이터 수집과 관련된 기타 정보를 확인할 수 있습니다.

수집 통계 차트 예시:

수집 통계

수집된 데이터 보기

수집된 데이터는 UI 에서 볼 수 없지만 ADMIN 또는 DATA_READER 역할이 있는 사용자가 특정 테이블에서 데이터를 쿼리하여 뷰를 볼 수 있습니다. 데이터를 보려면 SQL 워크시트로 이동하여 대상 데이터베이스를 선택하기만 하면 됩니다. 대상 데이터베이스는 커넥터 구성 단계에서 정의한 이름과 스키마를 사용합니다. 다음에서 데이터를 SELECT 할 수 있습니다.

  1. ISSUES 테이블에는 다음과 같은 열이 포함되어 있습니다.

    • ORGANIZATION

    • REPOSITORY

    • RAW_DATA

  2. ISSUES_VIEW 뷰에는 다음과 같은 열이 포함되어 있습니다.

    • ID

    • ORGANIZATION

    • REPOSITORY

    • STATE

    • TITLE

    • CREATED_AT

    • UPDATED_AT

    • ASSIGNEE

ISSUES_VIEW 뷰에 표시되는 데이터는 ISSUES 테이블에 있는 raw_data 열에서 추출한 것입니다. 데이터를 보려면 다음 쿼리 중 하나를 사용할 수 있습니다.

SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES;

SELECT * FROM DEST_DATABASE.DEST_SCHEMA.ISSUES_VIEW;
Copy

일시 중지 및 재개하기

커넥터는 원하는 경우 언제든지 일시 중지했다가 다시 시작할 수 있습니다. Data Sync 탭에서 Pause 버튼을 누르면 됩니다. 일시 중지가 트리거되면 기본 예약 및 작업 실행 메커니즘이 비활성화됩니다. 그러나 모든 활동 중인 수집 작업은 커넥터가 실제로 PAUSED 상태가 되기 전에 완료됩니다. 이 때문에 커넥터가 완전히 일시 중지되는 데 최대 몇 분이 걸릴 수 있습니다.

커넥터를 다시 시작하려면 일시 중지 버튼 대신 표시되는 Resume 버튼을 누르기만 하면 됩니다. 그러면 예약 작업이 재개되어 새 Work Items 를 큐에 대기시키기 시작합니다.

커넥터 일시 중지

커넥터 설정

구성이 완료되면 Settings 탭을 하나 더 사용할 수 있습니다. 이 탭에서 사용자는 현재 커넥터 및 연결 구성을 볼 수 있습니다. 이 탭의 데이터는 기본 APP_CONFIG 구성 테이블에서 추출되며 읽기 전용입니다.

커넥터 구성 설정
연결 구성 설정

문제 해결하기

커넥터에 문제가 발생하면 계정에 테이블이 생성되고 설정된 경우 event table 로그에 표시됩니다.

event table, 이벤트 로깅 및 Native Apps의 이벤트 공유 활성화 및 사용에 대한 자세한 내용은 설명서 섹션을 참조하십시오.

정리

자습서가 완료되면 일상적인 사용 섹션에 설명된 대로 커넥터를 일시 중지하거나 명령을 사용하여 계정에서 커넥터를 완전히 제거할 수 있습니다.

snow app teardown --connection=native_sdk_connection --cascade --force

--cascade 옵션은 계정 관리자에게 소유권을 이전하지 않고 대상 데이터베이스를 제거하려면 필요합니다. 실제 커넥터에서는 수집된 데이터를 보존하기 위해 데이터베이스를 제거해서는 안 되며, 계정 관리자가 소유하거나 제거하기 전에 소유권을 이전해야 합니다.

정리 부분을 건너뛰면 수집을 위해 구성된 리포지토리가 없더라도 예시 커넥터는 일시 중지되거나 제거될 때까지 크레딧을 소비합니다!

사용자 지정

이 자습서에서는 Snowflake Native SDK for Connectors 를 사용하여 빌드한 커넥터 예를 보여드렸습니다. 커넥터를 사용자 지정하거나 처음부터 직접 만드는 방법에 대해 자세히 알아보려면 다음 섹션을 참조하십시오.