Snowflake Native SDK for Connectors 시작하기¶
Snowflake Native SDK for Connectors 은 외부 데이터 소스에서 Snowflake로 데이터를 수집하는 Snowflake 네이티브 앱을 구축하는 데 사용할 수 있는 범용 구성 요소를 제공하는 라이브러리입니다. 제공되는 구성 요소는 커넥터 애플리케이션의 권장 흐름을 정의하고, 사용자 지정을 허용하며 수집 논리를 구축하기 위한 빌딩 블록을 제공합니다.
Snowflake Native SDK for Connectors 은 로컬에서 가져와 빌드할 수 있는 코드로 배포됩니다. 아래에서 SDK의 정형, 프로젝트에서 사용하는 방법, 애플리케이션을 배포 및 설치하는 방법, 개발 중에 사용하는 방법에 익숙해지는 데 도움이 되는 몇 가지 정보를 확인할 수 있습니다.
프로젝트 구조¶
Snowflake Native SDK for Connectors 은 여러 부분으로 구성되어 있으며, 각 부분에 대한 설명은 아래에 나와 있습니다.
connectors-native-sdk
이 디렉터리에는 실제 Snowflake Native SDK for Connectors 원본 코드와 테스트가 포함되어 있습니다. Snowflake 내부의 네이티브 앱의 특성상 원본 코드는 Java 코드뿐만 아니라 데이터베이스 오브젝트 정의가 포함된 번들 SQL 코드도 포함되어 있습니다.
Java 코드는 일반 Java 라이브러리와 마찬가지로 src/main
디렉터리 내부에 있습니다. src/test
내부에 있는 단위 테스트에도 동일합니다. 또한 src/
디렉터리에는 intTest
및 appTest
디렉터리가 있습니다. 이는 각각 통합 테스트와 애플리케이션 테스트입니다. 두 가지 테스트 유형 모두 Snowflake 계정에 연결해야 합니다. 전자는 독립 실행형 데이터베이스 오브젝트를 사용하여 SDK 구성 요소를 테스트하고, 후자는 실제 애플리케이션을 배포하고 이를 사용하여 테스트를 실행합니다.
SQL 원본 파일은 src/main/resources
디렉터리 내에 포함되어 있습니다. 이러한 파일은 Snowflake Native SDK for Connectors 을 빌드할 때 jar 아카이브에 포함됩니다. 이러한 파일을 사용하려면 jar에서 압축을 풀고 빌드 대상 디렉터리 내에 넣어야 하며, 이 디렉터리는 애플리케이션 패키지 내부의 Snowflake 스테이지에 복사됩니다.
connectors-native-sdk-test
이 디렉터리에는 Snowflake Native SDK for Connectors 을 기반으로 커넥터를 쉽게 단위 테스트할 수 있도록 설계된 도우미 라이브러리가 포함되어 있습니다. 일부 데이터베이스 오브젝트에 대한 모의 구현, 사용자 지정에 사용할 수 없는 코드의 일부를 덮어쓸 수 있도록 특별히 설계된 테스트 빌더 및 AssertJ 라이브러리 를 기반으로 하는 일부 사용자 지정 어설션을 제공합니다.
SDK 설치 및 사용¶
현재 Snowflake Native SDK for Connectors 을 설치 및 사용하려면 개발자가 몇 가지 수동 작업을 수행해야 합니다.
Snowflake Native SDK for Connectors 라이브러리는 Maven Central을 통해 제공됩니다.
repositories {
mavenCentral()
}
dependencies {
compileOnly 'com.snowflake:connectors-native-sdk:2.0.0'
testImplementation 'com.snowflake:connectors-native-sdk-test:2.0.0'
}
제공되는 SQL 파일에 액세스하려면 해당 파일을 네이티브 앱의 대상 디렉터리로 압축을 풀어야 합니다. 이를 위해 다음 gradle 작업 정의를 사용합니다(현재는 build.gradle
파일에 수동으로 복사해야 함).
String defaultBuildDir = './sf_build'
String defaultSrcDir = './app'
String libraryName = 'connectors-native-sdk'
project.tasks.register('copySdkComponents') {
it.group = 'Snowflake'
it.description = "Copies .sql files from ${sdkComponentsDirName} directory to the connector build file."
doLast {
copySdkComponents(libraryName, defaultBuildDir, sdkComponentsDirName)
}
}
private void copySdkComponents(String libraryName, String defaultBuildDir, String sdkComponentsDirName) {
TaskLogger.info("Starting 'copySdkComponents' task...")
def targetDir = getCommandArgument('targetDir', {defaultBuildDir})
try {
project.copy {
TaskLogger.info("Copying [${sdkComponentsDirName}] directory with .sql files to '${targetDir}'")
from project.zipTree(project.configurations.compileClasspath.find {
it.name.startsWith(libraryName)})
into targetDir
include "${sdkComponentsDirName}/**"
}
} catch (IllegalArgumentException e) {
Utils.exitWithErrorLog("Unable to find [${libraryName}] in the compile classpath. Make sure that the library is " +
"published to Maven local repository and the proper dependency is added to the build.gradle file.")
}
project.copy {
TaskLogger.info("Copying [${libraryName}] jar file to [${targetDir}]")
from configurations.runtimeClasspath.find {
it.name.startsWith(libraryName)
}
into targetDir
rename ("^.*${libraryName}.*\$", "${libraryName}.jar")
}
TaskLogger.success("Copying sdk components finished successfully.")
}
그런 다음 이 작업을 실행하려면:
./gradlew copySdkComponents
추출된 SQL 파일은 Native App용 setup.sql
을 실행하는 동안 실행할 수 있습니다.
배포 및 설치¶
Snowflake Native SDK for Connectors 은 Snowflake Native App Framework 와 함께 사용하도록 설계되었습니다. 즉, 배포 및 설치가 다른 Native App과 동일한 방식으로 이루어진다는 의미입니다. 즉, 먼저 애플리케이션 패키지를 생성하고 모든 파일을 스테이지에 업로드해야 하며, 애플리케이션 패키지 내에서 스테이지를 생성하는 것을 권장합니다. 위의 예제 스크립트를 사용한 경우 Snowflake Native SDK for Connectors 의 모든 필수 파일이 커넥터의 대상 빌드 디렉터리에 이미 있어야 합니다. 즉, 커넥터의 사용자 지정 코드와 Streamlit 파일도 있는지 확인하는 것은 개발자의 몫입니다. 자세한 내용은 애플리케이션 패키지 만들기 섹션을 확인합니다.
애플리케이션 패키지가 생성되고 파일이 스테이지에 업로드되면 애플리케이션의 version
이 생성됩니다. 애플리케이션 인스턴스는 등록된 버전을 사용하는 대신 스테이지의 파일에서 직접 생성할 수 있으므로 이 단계는 개발 중에 선택 사항입니다. 자세한 내용은 애플리케이션 오브젝트 만들기 섹션을 참조하십시오.
개발¶
Snowflake Native SDK for Connectors 은 각 커넥터 애플리케이션의 일반적인 사용 사례를 처리하는 오브젝트와 프로시저를 제공합니다. 여기에는 구성, 수명 주기, 수집 정의 등이 포함됩니다. 전체 기능 목록을 검토하려면 SDK 참조를 참조하십시오. 미리 정의된 기능 중 일부는 사용자 지정이 가능합니다. 자세한 내용은 저장 프로시저 및 핸들러 사용자 지정을 참조하십시오.
테스트하기¶
앞서 언급했듯이, Connectors Native SDK에는 다양한 유형의 테스트가 포함되어 있습니다. 여기에는 단위 테스트, 통합 테스트 및 소위 애플리케이션 테스트가 포함됩니다. 단위 테스트는 앞서 언급한 connectors-native-sdk-test
에서 제공하는 기능을 사용합니다. 통합 및 애플리케이션 테스트를 위해서는 Snowflake에 연결해야 합니다. 연결 세부 정보는 .env/snowflake_credentials
파일을 사용하여 정의할 수 있습니다. 애플리케이션 테스트 디렉터리에는 리소스에 빈 커넥터 애플리케이션도 포함되어 있습니다. 이 애플리케이션은 테스트 모음 실행 중에 배포됩니다.
추가 리소스:
사용자의 커넥터를 직접 구현해보고 싶다면 자습서: Native SDK for Connectors Java 템플릿 을 시도해 보십시오.