Java UDF 제한 사항¶
이 항목에서는 Java로 작성된 처리기에 적용되는 제한 사항에 대해 설명합니다.
이 항목의 내용:
일반 제한 사항¶
Java 메서드는 표준 Java 라이브러리의 클래스와 메서드를 사용할 수 있지만, Snowflake 보안 제약 조건으로 인해 파일에 쓰는 것과 같은 일부 기능이 비활성화됩니다. 자세한 내용은 우수한 보안 관행 따르기 섹션을 참조하십시오.
Java UDF는 공유할 수 없습니다. Java UDF를 사용하는 데이터베이스 오브젝트도 공유할 수 없습니다. 예를 들어, 사용자는 다음을 수행할 수 없습니다.
Java UDF를 직접 공유합니다.
Java UDF를 호출하는 뷰를 공유합니다.
Java UDF를 호출하는 함수를 공유합니다.
Java UDF를 호출하는 마스킹 또는 행 액세스 정책으로 테이블을 공유합니다.
Java UDF에 USAGE 권한을 부여하는 경우, 수신자는 해당 UDF에서 가져온 파일의 내용을 볼 수 있습니다. Java UDF에 대한 USAGE 권한을 역할에 부여하고 해당 역할이 해당 Java UDF를 호출하는 문을 실행하는 경우, 동일한 문에 있는 모든 Java UDF는 USAGE 권한을 부여받은 Java UDF에서 가져온 모든 파일의 내용을 읽을 수 있습니다.
복제 는 아직 외부 또는 내부 스테이지를 포함하지 않습니다. 기본 데이터베이스 역할을 하도록 보조 데이터베이스를 승격할 때, 스테이지 오브젝트를 다시 만들고 내부 스테이지에서 누락된 모든 파일을 다시 가져와야 합니다. 파일은 원래 기본 데이터베이스와 동일한 경로 및 파일 이름을 가져야 합니다.
Java UDF 출력 행의 최대 크기는 16MB입니다.
복제에 대한 제한 사항¶
Java UDF를 포함하는 데이터베이스 또는 스키마가 복제될 때 Java UDF를 복제할 수 있습니다. 복제하려면 Java UDF가 다음 조건을 충족해야 합니다.
Java UDF가 스테이지(예: UDF의 JAR 파일을 포함하는 스테이지)를 참조하는 경우, 해당 스테이지는 복제되는 스키마(또는 데이터베이스) 외부에 있어야 합니다.
다음과 같은 방법으로 Java UDF 및 해당 참조 스테이지를 별도의 스키마(및/또는 별도의 데이터베이스)에 보관할 수 있습니다.
Java UDF가 스테이지를 참조할 때마다, Java UDF의 스키마 또는 데이터베이스와는 다른 정규화된 스테이지 이름(예: “my_db.my_schema.my_stage()”)을 사용하십시오. 복제 작업이 데이터베이스를 복제하는 경우, 스테이지 참조에는 데이터베이스와 스키마가 포함되어야 합니다. 복제 작업이 스키마를 복제하는 경우, 스테이지 참조에는 스키마(및 필요에 따라 데이터베이스)가 포함되어야 합니다.
정규화되지 않은 스테이지 이름(현재 세션의 활성 데이터베이스 및 스키마를 암시적으로 사용)을 사용하여 참조 스테이지를 만들고, 세션의 현재 데이터베이스 및 스키마와 일치하지 않는 정규화된 이름을 사용하여 Java UDF를 만듭니다.
사용자의 스테이지를 참조 스테이지로 사용합니다(사용자의 스테이지는 데이터베이스의 스테이지 또는 스키마의 스테이지와는 별개입니다).
스키마 또는 데이터베이스에 있는 하나 이상의 Java UDF가 필수 조건을 충족하지 않는 경우, 스키마 또는 데이터베이스를 계속 복제할 수 있지만, 비호환 Java UDF는 오류 또는 경고 메시지 없이 복제본에서 생략됩니다.
복제된 각 Java UDF는 원본과 동일한 정의를 갖습니다. 해당 정의에는 스테이지에 대한 모든 참조가 포함됩니다. Java UDF의 스테이지 참조는 정규화되어야 하므로, 복제되는 스키마 또는 데이터베이스에 상대적이지 않고 절대적입니다. 원본과 복제본이 모두 동일 스테이지와 파일을 가리키기 때문에 다음과 같습니다.
스테이지를 삭제하거나 스테이지에서 필수 파일을 제거하면 원본 UDF와 복제된 UDF가 모두 비활성화됩니다.
스테이지 또는 스테이지의 파일을 변경하면(예: JAR 파일을 최신 JAR 파일로 교체) 원본 UDF와 복제된 UDF 모두에 영향을 줍니다.
복제에 대한 자세한 내용은 복제 고려 사항 을 참조하십시오.