Snowflake Data Clean Rooms: 설치된 객체에 대해 알아봐요.
Snowflake Data Clean Rooms: 설치된 객체에 대해 알아봐요.
지원 종료 안내
기존 Provider 및 Consumer Data Clean Rooms는 지원이 중단될 예정이에요. 날짜와 마이그레이션 안내는 지원 종료 타임라인을 확인해 주세요.
이 항목에서는 clean room 환경을 설치할 때 계정에 생성되는 객체에 대한 정보를 제공해요.
출처: 문서
본문
상위 개요
다음 다이어그램은 provider 및 consumer 계정에 설치되는 주요 객체의 높은 수준의 구성을 보여줘요.
-
Clean rooms UI: clean rooms UI를 사용하여 clean room에 액세스하는 사용자는 clean room 설치 관리자가 계정당 한 번 구성하는 서비스 사용자 계정을 거쳐 clean rooms API에 도달해요.
-
API 사용자: API 사용자와 clean rooms UI는 동일한 clean rooms API를 사용해요. 이 API는 계정의 로컬 DB에 의해 정의돼요.
-
로컬 DB: clean rooms API를 정의해요. 계정마다 로컬 DB가 하나씩 있으며(clean room마다가 아니라), 이 객체의 실제 이름은 SAMOOHA_BY_SNOWFLAKE_LOCAL_DB예요.
-
Clean room 애플리케이션 패키지: provider가 clean room을 만들 때 provider의 계정에 생성돼요. clean room마다 패키지가 하나씩 있으며 이름은
SAMOOHA_CLEANROOM_{cleanroom name}이에요. 이 패키지는 consumer가 설치하는 clean room 앱을 생성해요. -
백 셰어: provider는 consumer로부터 provider로 메시지와 데이터를 받기 위해 백 셰어를 마운트해야 해요. Native apps는 provider에서 consumer로의 데이터 흐름만 지원하므로, consumer에서 provider로 데이터가 흐르게 하려면 백 셰어를 마운트해야 해요. provider 계정에는 두 개의 백 셰어가 마운트돼요. 하나는 provider 실행 및 provider 활성화 데이터를 저장하는 거버넌스 백 셰어이고, 다른 하나는 consumer 맞춤 템플릿 요청이나 provider 실행 요청에 대한 consumer 승인과 같은 consumer에서 provider로의 메시지와 응답을 저장하는 요청 로그 백 셰어예요. (셰어 자체는 consumer의 계정에 있어요.)
-
설치된 앱: 애플리케이션 패키지에 의해 생성되며, 설치된 앱은 consumer 쪽에서 clean room을 정의해요. 설치된 앱의 이름은
SAMOOHA_CLEANROOM_APP_*cleanroom_name*명명 규칙을 따라요. -
Consumer DB: consumer 계정에 등록된 데이터셋의 읽기 전용 뷰를 포함해요. consumer는 데이터셋을 clean room에 연결할 때 이러한 뷰를 만들어요. consumer 계정에는 clean room마다 consumer DB가 하나씩 있으며 이름은
SAMOOHA_CLEANROOM_CONSUMER_{clean room ID}예요. -
Clean room: clean room은 크게 보면 provider 쪽의 애플리케이션 패키지와 백 셰어, 그리고 consumer 쪽의 설치된 앱과 consumer DB로 구성된다고 볼 수 있어요.
애플리케이션 패키지
계정에 설치할 수 있는 애플리케이션 패키지는 다음과 같아요.
SAMOOHA_CLEANROOM_{cleanroom name}
provider 계정에 설치되며, 생성된 clean room마다 하나의 애플리케이션 패키지가 있어요. 이 패키지에는 provider가 만든 clean room의 모든 핵심 애플리케이션 로직이 포함돼요. 또한 clean room과 데이터를 공유하는 데 사용되는 보안 뷰와 clean room 상태를 저장하는 여러 테이블도 포함돼요. 여기에는 consumer의 현재 차등 프라이버시 예산, 열 및 조인 정책, clean room에 연결된 테이블 이름을 기록하는 테이블이 포함돼요.
애플리케이션
계정에 설치할 수 있는 애플리케이션은 다음과 같아요.
SAMOOHA_CLEANROOM_APP_*cleanroom_name*
consumer가 clean room을 설치(참여)할 때 consumer 계정에 설치돼요.
데이터베이스
Snowflake Data Clean Rooms는 다음 데이터베이스를 설치해요.
SAMOOHA_BY_SNOWFLAKE
이 데이터베이스에는 clean room을 만들고 관리하는 데 사용되는 모든 핵심 기능과 애플리케이션 로직이 포함돼요. 이 데이터베이스에는 다음과 같은 스키마가 있어요.
ADMIN 스키마
이 스키마에는 다음과 같은 앱 수준 세부 정보가 포함돼요.
-
적용된 패치(버전, 명령).
-
버전 정보(번호).
APP_SCHEMA 스키마
이 스키마에는 모든 clean room 흐름을 원활하게 지원하는 데 필요한 함수와 프로시저가 포함돼요. 주요 세부 정보는 다음과 같아요.
-
암호화 및 복호화 함수.
-
개발자 API 및 clean rooms UI와 함께 사용하여 clean room을 만들고, 설치하고, 작업하는 clean room 프로시저.
TEMPLATES 스키마
이 스키마에는 Snowflake가 제공하는 SQL Jinja 템플릿이 포함돼요.
이 미리 만들어진 템플릿은 Snowflake Data Clean Rooms 내에서 안전한 데이터 협업을 위해 바로 사용할 수 있는 SQL 쿼리를 제공해요. Jinja 템플릿을 활용하여 사용자 지정할 수 있으므로 특정 데이터 공유 시나리오에 맞게 쿼리를 조정할 수 있어요.
SAMOOHA_BY_SNOWFLAKE_LOCAL_DB
이 데이터베이스는 Snowflake 설치 과정에서 clean rooms UI에 의해 생성돼요. 계정에 로컬로 존재하며, 애플리케이션은 아니지만 애플리케이션 로직을 포함해요.
이 데이터베이스에는 두 가지 유형의 데이터가 있어요.
-
사용자와 clean rooms UI가 clean room을 만들고 관리하는 데 사용하는 개발자 API.
-
ID 해석(identity resolution)과 같은 흐름 중 PUBLIC 스키마에 저장되는 사용자 소유의 중간 데이터셋. 예를 들어 LiveRamp의 해석 및 트랜스코딩 프로세스에서 생성된 출력 테이블은 PUBLIC 스키마에 저장되고, clean rooms UI가 clean room에 연결하는 뷰에 조인돼요.
이 데이터베이스에는 다음과 같은 스키마가 있어요.
ADMIN 스키마
이 스키마에는 계정과 연결된 특정 clean room 기능을 운영하는 데 필요한 정보가 포함돼요. 예를 들면 다음과 같아요.
-
Cross-Cloud Auto-Fulfillment를 사용하여 지역 또는 클라우드 플랫폼 간에 협업할 수 있어요.
-
개발자 API에서 clean rooms UI로 clean room을 등록하는 데 필요한 clean room 메타데이터 업데이트에요.
-
Snowflake 계정에서 clean rooms UI의 작동과 관련된 현재 프로시저의 버전 관리에요.
-
협업자로부터 다시 공유되는 clean room 공유 세트의 변경 사항을 수신하고, 변경 사항에 따라 필요에 따라 clean room을 활성화/비활성화하는 태스크와 스트림이에요.
CONSUMER 스키마
이 스키마에는 consumer API 프로시저의 정의와 몇 가지 일반적인 consumer 태스크가 포함되어 있어요.
INFORMATION_SCHEMA 스키마
모든 Snowflake 데이터베이스와 마찬가지로 이 데이터베이스에는 INFORMATION_SCHEMA 스키마("데이터 사전")가 포함되어 있어요. 이 스키마는 계정에서 생성된 객체에 대한 광범위한 메타데이터 정보를 제공하는 시스템 정의 뷰와 테이블 함수 집합으로 구성되어 있죠.
LIBRARY 스키마
이 스키마에는 library 네임스페이스 API 프로시저의 정의와 provider와 consumer 모두가 사용하는 몇 가지 일반적인 태스크 및 프로시저가 포함되어 있어요.
PROVIDER 스키마
이 스키마에는 provider API 프로시저의 정의와 몇 가지 일반적인 provider 태스크가 포함되어 있어요.
PUBLIC 스키마
이 스키마에는 사용자와 clean rooms UI가 clean room을 생성하고 관리하는 데 사용하는 개발자 API가 포함되어 있어요. 또한 ID 해석(identity resolution)과 같은 흐름 중에 PUBLIC 스키마에 저장되는, 전적으로 사용자가 소유한 중간 데이터셋도 포함되어 있죠. 예를 들어 LiveRamp의 해석 및 트랜스코딩 프로세스의 출력 테이블은 PUBLIC 스키마에 저장되고, clean rooms UI가 clean room에 연결하는 뷰에 조인되어요.
이 스키마에는 다음 테이블이 있어요:
-
CLEANROOM_RECORD: 이 테이블에는 clean room의 상태(생성됨, 삭제됨)와 마지막 업데이트의 사용자 및 타임스탬프가 포함되어 있어요. 업데이트가 clean rooms UI에서 수행된 경우 사용자는 서비스 계정 사용자예요. Snowsight에서 개발자 API를 사용하여 업데이트된 경우 사용자는 API를 호출한 실제 사용자예요. clean room 데이터베이스 이름은 이 테이블에서 사용자 지정할 수 있어요.
-
CONNECTOR_CONFIGURATION: 이 테이블은 계정에 구성된 커넥터 목록이에요.
-
REPORTS: 이 테이블에는 consumer가 clean rooms UI에 저장한 보고서 목록이 포함되어 있어요. 표준 보고서의 최상위 결과가 이 테이블에 저장되죠.
-
HORIZONTAL_ANALYSIS_
: SQL Query 템플릿과 clean rooms UI에서 실행된 사용자 지정 템플릿으로 실행된 분석의 출력이에요. -
CONSUMER_ACTIVATION_SUMMARY: Consumer 활성화 결과예요.
-
PROVIDER_ACTIVATION_SUMMARY: Provider 활성화 결과예요.
이 데이터베이스에서는 다음과 같은 세 가지 공유가 생성되어요:
-
SAMOOHA_INTERNAL_GOVERNANCE_SUMMARY_SHARE_NAV2: 이 공유에는 PUBLIC 스키마의 (CONSUMER_/PROVIDER_)GOVERNANCE_SUMMARY 및 (CONSUMER_/PROVIDER_)ACTIVATION_SUMMARY 테이블에 대한 뷰가 포함되어 있어요. 이 공유는 이 계정이 설치한 clean room을 생성한 모든 provider와 공유되며, 거버넌스 정보와 provider 활성화를 다시 공유하는 데 사용되죠.
-
SAMOOHA_INTERNAL_LOGS_SHARE_NAV2: 이 공유는 LOG_EVENTS 테이블에 대한 것으로, 주로 ID 해석 프로시저가 어떻게 진행되고 있는지에 대한 로그를 Snowflake로 다시 공유하는 데 사용돼요. 이 프로시저는 타사 네이티브 앱을 사용하기 때문이죠. PII나 데이터가 다시 공유되는 일은 절대 없으며, 트랜스코딩/해석에 사용된 타사 앱 API의 성공/실패 여부만 공유되어요.
-
SAMOOHA_INTERNAL_PROVIDER_METADATA_NAV2: 이 공유는 두 개의 테이블, 즉 API에서 UI로 등록 요청을 보내는 데 사용되는 ADMIN.METADATA_UPDATE_REQUESTS와 관리 계정에서만 사용량을 기록하는 데 사용되는 ADMIN.RESOURCE_MONITOR_USAGE에 대한 것이에요.
``
SAMOOHA_CLEANROOM_{cleanroom ID}
게시된(creator로서) 또는 설치된(consumer로서) 각 clean room에는 설치된 템플릿, 요청 로그, LAF 상태 등 해당 clean room의 모든 세부 정보가 포함된 연결된 데이터베이스가 있어요. 이 데이터베이스에는 다음 스키마가 포함되죠:
-
Admin: 암호화 키, 개인 정보 보호 예산, 요청 로그, provider 분석 요청 등이에요.
-
Shared_schema: 조인 정책, LAF 상태, 연결된 테이블 및 버전이에요.
-
Templates: 이 clean room의 활성화 템플릿, 사용자 지정 템플릿 및 템플릿 체인 목록이에요.
``
SAMOOHA_CLEANROOM_REQUESTS_{clean room ID}
이것은 provider 측의 데이터베이스이자 consumer 측의 공유예요. consumer clean room 설치 프로세스의 일부로 consumer가 clean room의 provider에게 다시 보내는 공유에 해당하죠. 이 데이터베이스에는 consumer가 clean room에 대해 제기한 모든 요청에 대한 정보가 포함되어 있으며, consumer의 차등 개인 정보 보호 예산 사용량을 추적하는 데 사용되어요.
``
SAMOOHA_CLEANROOM_CONSUMER_{clean room ID}
이 데이터베이스는 consumer 계정에만 설치되어요. consumer 데이터의 보안 뷰와 같은 객체를 clean room에 공유하고, 적용된 경우 consumer 열/조인 정책을 공유하는 데 사용되죠. 다음 테이블이 있어요:
SAMOOHA_CLEANROOM_CONSUMER_{clean room ID}.SHARED.REQUESTS. 이 테이블은 consumer에게 정확히 어떤 쿼리가 실행을 시도했는지 보여주며, 여기서 PROPOSED_QUERY는 consumer의 템플릿에서 렌더링된 쿼리예요.
SAMOOHA_SAMPLE_DATABASE
이 데이터베이스에는 테스트 데이터로 사용할 수 있는 DEMO.CUSTOMERS 및 DEMO.CUSTOMERS_2라는 샘플 데이터셋이 포함되어 있어요.
참고
CUSTOMERS_2 테이블은 2025년 9월에 추가되었어요. 그 이전에 clean rooms 환경을 설치했다면 이 샘플 테이블이 설치되어 있지 않을 수 있어요. CUSTOMERS_2가 설치되어 있는지 확인하려면 다음 SQL 코드를 실행하면 돼요:
SHOW TABLES LIKE 'CUSTOMERS_2' IN SCHEMA SAMOOHA_SAMPLE_DATABASE.DEMO;
응답에 행이 없으면, 사용자 본인이나 ACCOUNTADMIN 역할을 가진 사람이 다음 명령을 실행해서 샘플 테이블을 설치해야 해요:
USE ROLE ACCOUNTADMIN;
EXECUTE IMMEDIATE FROM @SAMOOHA_BY_SNOWFLAKE.APP_SCHEMA.MOUNT_CODE_STAGE/dcr_loader.sql;
작업
다음은 clean rooms에서 사용되며 사용자 환경에서 실행 중인 것을 볼 수 있는 작업들이에요.
특정 작업에 대한 자세한 내용은 다음 프로시저를 실행해서 확인할 수 있어요:
CALL SAMOOHA_BY_SNOWFLAKE_LOCAL_DB.DCR_HEALTH.DCR_TASKS_HEALTH_CHECK();
작업 및 웨어하우스 사용 비용을 확인하는 방법 알아보기.
Clean room 작업
**
`**```
``
``
``
``
``
``
**
``
``
``
``
**``**
**
``
``
``
``
``
| 작업 이름 | 설명 | 웨어하우스 | 엔터티 수준 |
|---|---|---|---|
| AUTO_RUN_warehouse | 각 웨어하우스에 대한 예약된 보고서를 실행해요. 보고 대상 웨어하우스를 사용해요. 기본 일정: 1일. | DCR_WH_warehouse | clean room 보고서당 |
| AUTO_RUN_TASK | 자동 실행으로 설정된 보고서를 실행해요. 기본 일정: 1일. | 사용자가 선택한 웨어하우스. | 계정당 |
| COMPUTE_DATA_STATS_FOR_ACCOUNT_{consumer locator} | 조인된 clean room의 기준 메트릭을 계산해요. 기본 일정: 3시간. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| COMPUTE_DATA_STATS_FOR_ACCOUNT_{provider locator} | 생성된 clean room의 기준 메트릭을 계산해요. 기본 일정: 3시간. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| DISTINCT_COLUMN_VALUES_TASK | clean room에 연결된 데이터셋의 고유 값을 계산해서 필터 드롭다운을 사용할 수 있게 해요. 기본 일정: 1일. | SAMOOHA_TASK_WAREHOUSE | clean room당 |
| EXPECTED_VERSION_TASK | 새 버전이 릴리스되면 네이티브 앱을 자동으로 업그레이드해요. 기본 일정: 요청 시 트리거됨. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| LISTEN_TO_REQUESTS | 계정에서 차등 프라이버시가 활성화된 경우 협업자로부터 들어오는 공유를 마운트, 복구, 검증해요. DP가 활성화되면 분석이 과도하게 실행되는 것을 방지하기 위해 더 높은 빈도로 동일한 작업이 추가돼요. 이 작업은 하루에 약 6크레딧이 소요돼요. 기본 일정: 1분. | Serverless | 계정당 |
| LISTEN_TO_REQUESTS_NODP | 협업자로부터 들어오는 공유를 마운트, 복구, 검증해요. 기본 일정: 30분. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| LISTEN_TO_REQUESTS_1_COLLABORATOR | 소비자에서 공급자로 다시 스트리밍되는 반환 요청에 대한 리스너를 설정해요. clean room이 활성화되었는지 확인해요. 기본 일정: 요청 시 트리거됨. | SAMOOHA_TASK_WAREHOUSE | 협업자당 |
| MONITORING_SUMMARY_CRON_TASK | 내부 사용용. 기본 일정: 30분. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| MOUNT_PROVIDER_ACTIVATIONS_TASK | 각 소비자에 대한 활성화를 위해 들어오는 공유를 마운트해요. 기본 일정: 15분. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| PRIVACY_AND_SECURITY_SCANNER | 각 공급자의 clean room에 있는 각 템플릿에서 프라이버시 및 보안 문제를 검사해요. 기본 일정: 30분. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| PROCESS_ACTIVATIONS | 소비자가 다시 보낸 활성화 데이터를 복호화해요. 기본 일정: 요청 시 트리거됨. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| PROCESS_PROVIDER_ANALYSIS_REQUESTS | 실제 공급자 분석을 실행해요. 기본 일정: 요청 시 트리거됨. | PROVIDER_RUN_UUID | clean room당 |
| PROCESS_REQUESTS_BUDGET_COLLABORATOR_1 | clean room의 차등 프라이버시 예산을 처리해요. 기본 일정: 요청 시 트리거됨. | SAMOOHA_TASK_WAREHOUSE | 협업자당 |
| PROCESS_TEMPLATE_REQUESTS_COLLABORATOR | clean room의 템플릿 요청을 처리해요. 기본 일정: 요청 시 트리거됨. | SAMOOHA_TASK_WAREHOUSE | 협업자당 |
| RESET_PRIVACY_BUDGET | 모든 clean room의 프라이버시 예산을 재설정해요. 기본 일정: 1일. | SAMOOHA_TASK_WAREHOUSE | clean room당 |
| SAMOOHA_INTERNAL_UID_OUTPUT_TABLE_REFRESH_TABLE_DATA_TASK | 테이블당 한 번 생성돼요. 기본 일정: 1일. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| SETUP_AUTO_RUN | 자동 실행 보고서를 설정해요. 기본 일정: 60분. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
| SETUP_PROVIDER_ANALYSIS_REQUESTS | 공급자 분석 인프라를 설정하고 공급자 분석 요청을 처리해요. 기본 일정: 요청 시 트리거됨. | SAMOOHA_TASK_WAREHOUSE | clean room당 |
| TRIGGER_REFRESH_FOR_LAF_CLEANROOMS | Cross-Cloud Auto-Fulfillment가 활성화된 clean room의 데이터 새로 고침을 트리거해요. 기본 일정: 30분. | SAMOOHA_TASK_WAREHOUSE | 계정당 |
웨어하우스
Snowflake Data Clean Rooms는 사용자 계정에 다음 웨어하우스를 설치해요. 필요에 따라 어떤 웨어하우스의 크기든 변경할 수 있어요. 일반적인 clean room 편집, 생성 또는 삭제 명령에는 XS 웨어하우스를 사용하는 것이 좋아요. 머신러닝 워크로드와 같은 대규모 분석을 실행할 때는 더 큰 웨어하우스 또는 Snowpark 최적화 웨어하우스를 사용하는 것을 고려해 보세요.
| Warehouse name | Notes |
|---|---|
| APP_WH | XSMALL 웨어하우스는 API에 액세스하고, 새 클린 룸을 설정하며, 권한과 데이터 공유를 관리합니다. |
| DCR_WH_SMALL | 일반 SMALL 웨어하우스 |
| DCR_WH_Medium | 일반 MEDIUM 웨어하우스 |
| DCR_WH_Large | 일반 LARGE 웨어하우스 |
| DCR_WH_XLarge | 일반 XLARGE 웨어하우스 |
| DCR_WH_2XLARGE | 일반 XXLARGE 웨어하우스 |
| DCR_WH_4XLarge | 일반 X4LARGE 웨어하우스 |
| DCR_WH_OPT_XLarge | Snowpark-Optimized, XLARGE 웨어하우스 |
| DCR_WH_OPT_2XLarge | Snowpark-Optimized, XXLARGE 웨어하우스 |
| DCR_WH_OPT_4XLarge | Snowpark-Optimized, X4LARGE 웨어하우스 |
| PROVIDER_RUN_<cleanroom_identifier> | 프로바이더가 실행하는 분석을 수행하는 컨슈머 계정의 웨어하우스입니다. |
| SAMOOHA_TASK_WAREHOUSE | 개인 정보 및 보안 검사, 자동 실행 보고서 처리, 데이터 통계 계산, 컨슈머 템플릿 요청 처리 등 다양한 용도로 사용되는 XSMALL 웨어하우스입니다. |
| DCR_ACTIVATION_WAREHOUSE | 프로바이더에게 전송된 활성화 결과를 복호화하는 데 사용됩니다. 기본 크기는 XL이지만, provider.update_activation_warehouse를 호출하여 크기를 수정할 수 있습니다. |
기타 개체
Snowflake Data Clean Room은 다음과 같은 추가 개체를 설치합니다.
- SAMOOHA_SERVICE_ACCOUNT_USER_ACCESS: 서비스 사용자가 클린 룸 UI를 활성화하는 데 사용하는 사용자 수준 네트워크 정책입니다.