비공개 노트북¶
Snowsight 에서 사용자 소유의 비공개 노트북을 만들 수 있습니다. 이 개인 노트북은 개인 데이터베이스에 저장됩니다. 개인 노트북을 만들고 수정하고 관리할 수 있는 전용 작업 공간입니다. 역할 기반 소유권과 달리 개인 데이터베이스 내의 오브젝트는 개별 사용자가 소유권을 갖습니다. 다른 사람이 적절한 권한을 부여할 때까지 기다릴 필요 없이 개인 데이터베이스에 개인 노트북을 만들 수 있습니다.
참고
개인 데이터베이스의 수명 주기는 소유자와 직접 연결되어 있습니다. 사용자가 Snowflake 계정에서 삭제되면 해당 사용자의 개인 데이터베이스도 삭제됩니다. 따라서 Snowflake는 비즈니스 크리티컬 또는 프로덕션 워크로드에 개인 데이터베이스를 사용하지 않는 것을 권장합니다.
개인 데이터베이스의 이름은 USER$username
(예: USER$JOHNDOE
) 형식의 사용자 이름을 따서 지정합니다. USER$
라는 접두사를 사용하여 참조할 수도 있습니다. Data » Databases 에서 개인 데이터베이스에 대한 세부 정보를 볼 수 있습니다.
비공개 노트북에서는 다음과 같은 작업을 할 수 있습니다.
비공개로 대화형으로 코드를 개발하고 데이터 및 모델을 실험해 보십시오.
개인 데이터베이스에서 일반 비개인용 데이터베이스로 노트북을 복제해 이러한 프로젝트를 배포하십시오.
참고
사용자는 개인 데이터베이스에서 테이블이나 기타 오브젝트를 생성할 수 없습니다. 제한 및 제한 사항의 전체 목록은 제한 사항 섹션을 참조하십시오.
비공개 노트북 사용을 위한 전제 조건¶
비공개 노트북을 만들고 사용하기 전에 ACCOUNTADMIN 역할이 있는 관리자는 다음 작업을 완료해야 합니다.
- 계정 수준 또는 특정 사용자에 대해 개인 데이터베이스 기능을 사용 설정합니다.
개인 데이터베이스는 노트북이 개인 노트북처럼 작동할 수 있게 해주는 Snowflake 오브젝트입니다. 이 작업을 완료하는 방법에 대한 자세한 내용은 다음 섹션을 참조하십시오.
- 필요한 경우, 비공개 노트북을 만들 사용자를 위해 보조 역할을 적절히 설정하십시오.
최신 BCR 번들의 활성화 여부에 따라 달라질 수 있는 이 작업을 완료하는 방법에 대한 자세한 내용은 개인 노트북 사용자의 모든 보조 역할 활성화하기 섹션을 참조하십시오.
중요
관리자가 개인 데이터베이스를 활성화한 후 영향을 받는 사용자는 로그아웃했다가 다시 로그인해야 새 사용자 인터페이스 동작을 확인할 수 있습니다.
비공개 노트북 만들기에 대한 자세한 내용은 새로운 노트북 만들기 섹션을 참고하십시오.
개인 노트북 사용자의 모든 보조 역할 활성화하기¶
비공개 노트북을 생성하기 전에 모든 보조 역할을 활성화해야 합니다. 이는 개인 노트북의 주 역할이 아니라 사용자가 소유하고 있기 때문입니다.
사용자의 모든 보조 역할을 기본적으로 활성화하려면 사용자 또는 관리자가 ALTER USER 명령을 사용하여 DEFAULT_SECONDARY_ROLES 오브젝트 속성을 해제하거나 사용자에 대해 (‘ALL’)로 설정할 수 있습니다.
예:
ALTER USER my_user UNSET DEFAULT_SECONDARY_ROLES;
ALTER USER my_user SET DEFAULT_SECONDARY_ROLES = ('ALL');
사용자 또는 관리자가 위의 SQL 문을 실행한 후, 사용자는 Snowsight (프로젝트 » Notebooks)에서 또는 새 워크시트에서 SQL 명령을 실행하여 비공개 Notebooks을 만들 수 있습니다.
기존 워크시트에서 SQL 명령을 실행하려는 사용자는 비공개 노트북을 만들기 전에 다음 SQL 문을 실행해야 합니다.
USE SECONDARY ROLES ALL;
계정에 대해 비공개 노트북 사용 및 사용 안 함 설정하기¶
Snowflake 계정에서 비공개 노트북을 사용하거나 사용하지 않으려면 ENABLE_PERSONAL_DATABASE 매개 변수를 사용하십시오.
ENABLE_PERSONAL_DATABASE 의 속성:
- 타입:
사용자 — 계정에 대해 설정 가능 > 사용자
- 데이터 타입:
부울
- 설명:
사용자가 비공개 노트북에 액세스할 수 있는지 여부를 제어합니다.
- 값:
TRUE
: 사용자가 개인 데이터베이스에 액세스할 수 있도록 합니다.FALSE
: 사용자가 개인 데이터베이스에 액세스하지 못하도록 차단합니다.- 기본값:
FALSE
예¶
계정에 대해 비공개 노트북을 사용 설정하려면 ALTER ACCOUNT 명령을 사용해 ENABLE_PERSONAL_DATABASE 매개 변수를 TRUE 로 설정하십시오. 예:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = TRUE;
다른 계정은 변경할 수 없으며 현재 계정만 변경할 수 있습니다. 이 명령에 대한 자세한 내용은 ALTER ACCOUNT 섹션을 참조하십시오.
계정에 대해 비공개 노트북을 비활성화하려면 동일한 명령을 실행하되 매개 변수를 FALSE 로 설정합니다. 예:
ALTER ACCOUNT SET ENABLE_PERSONAL_DATABASE = FALSE;
ENABLE_PERSONAL_DATABASE 매개 변수의 현재 값을 확인하려면 다음 SHOW PARAMETERS 명령을 실행합니다.
SHOW PARAMETERS LIKE 'ENABLE_PERSONAL_DATABASE' IN ACCOUNT;
관리자가 계정에 매개 변수를 활성화한 후에는 사용자가 로그아웃했다가 다시 로그인해야 합니다. 그런 다음 사용자는 USE DATABASE 명령을 실행하여 개인 데이터베이스가 생성되었는지 확인할 수 있습니다.
USE DATABASE USER$;
USER$
접두사 뒤에 로그인 사용자 이름을 지정하여 현재 사용자의 이름을 명시적으로 지정할 수 있습니다. 예:
USE DATABASE USER$bobr;
이 명령은 현재 사용자의 개인 데이터베이스가 존재할 때 성공합니다. USE DATABASE 명령은 개인 데이터베이스가 존재하지 않거나(필수 작업이 완료되지 않았기 때문에) 현재 사용자의 개인 데이터베이스가 아닌 경우 오류를 반환합니다. 예를 들어, jlap
이 현재 사용자가 아닌 경우 다음 메시지가 표시됩니다.
USE DATABASE USER$jlap;
ERROR: Insufficient privileges to operate on database 'USER$JLAP'
참고
개인 데이터베이스에는 특정 소유자가 없으며 시스템 소유 오브젝트입니다.
개인 데이터베이스를 직접 만들 수는 없습니다. 계정이 비공개 노트북용으로 활성화되면 기존 사용자의 경우 백그라운드에서 ‘느리게’ 생성됩니다. 사용자가 명시적으로 USER$ 이름 확인을 사용하는 명령을 처음 실행하면 개인 데이터베이스가 생성됩니다. 예를 들어, USE DATABASE USER$ 명령을 실행하면 현재 사용자의 개인 데이터베이스가 지연 생성됩니다.
개별 사용자의 비공개 노트북 활성화 및 비활성화하기¶
관리자는 계정의 모든 사용자가 아닌 특정 사용자에게만 개인 데이터베이스 액세스 권한을 부여할 수 있습니다. 특정 사용자에 대한 액세스를 활성화하려면 ALTER USER 명령을 사용하여 해당 사용자에 대해 ENABLE_PERSONAL_DATABASE 매개 변수를 TRUE 로 설정합니다. 예를 들어, 세 명의 사용자에 대한 액세스를 사용 설정합니다.
ALTER USER bobr SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER amya SET ENABLE_PERSONAL_DATABASE = TRUE;
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = TRUE;
계정 수준에서 개인 데이터베이스를 사용하도록 설정한 경우 필요에 따라 개별 사용자의 개인 데이터베이스를 비활성화할 수 있습니다. 사용자를 비활성화하려면 동일한 명령을 실행하되 매개 변수를 FALSE 로 설정합니다. 예:
ALTER USER jlap SET ENABLE_PERSONAL_DATABASE = FALSE;
사용자가 jlap
명령에 USER$
접두사를 지정하면 개인 데이터베이스가 존재하지 않으므로 명령이 실패합니다.
NotebookSqlException: Failed to fetch a pandas Dataframe. The error is: 060109 (0A000): Personal Database is not enabled for user JLAP.
Please contact an account administrator to enable it and try again.
참고
특정 사용자에 대해 개인 데이터베이스를 활성화했다가 비활성화하면 사용자는 생성된 개인 데이터베이스에 액세스할 수 없게 되지만 데이터베이스는 계속 존재합니다.
비공개 노트북 생성하기¶
새 비공개 노트북을 생성할려면 다음 단계를 따르십시오.
Snowsight 에 로그인합니다.
왼쪽 탐색 메뉴에서 Projects » Notebooks 를 선택합니다.
+ Notebook 를 선택합니다.
Owner 목록에서 사용자 이름을 선택합니다.
노트북의 이름을 입력합니다.
참고
AWS 리전을 사용하는 경우, 노트북의 런타임 환경(Warehouse Runtime 또는 Container Runtime)을 지정할 수 있습니다.
Notebook location 을 선택합니다. 이는 노트북을 저장할 데이터베이스와 스키마입니다. 노트북을 만든 후에는 변경할 수 없습니다. 계정에 개인 데이터베이스를 활성화한 후 개인 노트북을 만들면 개인 데이터베이스가 Notebook location 에 기본적으로 미리 채워져 있습니다. 하지만 개인 노트북을 만들고 개인 데이터베이스에 스키마가 하나만 있는 경우, Notebook location 옵션을 사용할 수 없습니다.
참고
Create Notebook 대화 상자를 연 후에 생성한 데이터베이스는 Notebook location 드롭다운에 표시되지 않을 수 있습니다. 최근에 생성한 데이터베이스, 스키마 또는 웨어하우스를 찾을 수 없는 경우 브라우저 윈도우를 다시 로드해 보십시오.
노트북의 데이터 쿼리는 이 위치에 국한되지 않습니다. 노트북에서는 액세스 권한이 있는 모든 위치의 데이터를 쿼리할 수 있습니다. 위치를 지정하려면 USE WAREHOUSE 및 USE SCHEMA 를 실행합니다.
Python 환경으로 Run on warehouse 또는 Run on container 를 선택합니다.
선택 사항 Query warehouse 를 선택해 노트북에서 발행한 모든 SQL 및 Snowpark 쿼리를 실행합니다.
노트북별 작업을 실행하려면 Notebook warehouse 를 선택합니다. Snowflake는 노트북을 실행하기 위해 각 계정에 프로비저닝되어 있는 Snowflake 관리 웨어하우스인 SYSTEM$STREAMLIT_NOTEBOOK_WH 를 사용할 것을 권장합니다.
Create 를 선택해 노트북을 만들고 엽니다.
개인 노트북 조직하기¶
스키마를 만들어서 개인 노트북을 조직하는 수단으로 사용할 수 있습니다. 기본적으로 개인 데이터베이스에는 PUBLIC 및 INFORMATION_SCHEMA 라는 표준 스키마가 포함되어 있습니다.
일반적인 방법으로 새 스키마를 만들고 사용하되, 스키마를 만들 때 개인 데이터베이스를 사용하고 있는지 확인하십시오. 예:
USE DATABASE USER$bobr;
CREATE SCHEMA bobr_schema;
USE SCHEMA bobr_schema;
개인 데이터베이스의 스키마에 대해서는 ALTER SCHEMA 명령을 사용할 수도 있고, 개인 데이터베이스에 속한 스키마를 보려면 SHOW SCHEMAS 명령을 사용할 수도 있습니다. 예:
ALTER SCHEMA bobr_schema RENAME TO bobr_personal_schema;
SHOW TERSE SCHEMAS;
+-------------------------------+----------------------+------+---------------+-------------+
| created_on | name | kind | database_name | schema_name |
|-------------------------------+----------------------+------+---------------+-------------|
| 2024-10-28 19:33:18.437 -0700 | BOBR_PERSONAL_SCHEMA | NULL | USER$BOBR | NULL |
| 2024-10-29 14:11:33.267 -0700 | INFORMATION_SCHEMA | NULL | USER$BOBR | NULL |
| 2024-10-28 12:47:21.502 -0700 | PUBLIC | NULL | USER$BOBR | NULL |
+-------------------------------+----------------------+------+---------------+-------------+
개인 노트북을 일반 사용자가 사용할 수 있도록 설정하기¶
개발 중 어느 시점에 개인 데이터베이스 외부에서 노트북을 다시 만들고 싶을 수도 있습니다. 이 변경을 하려면 CREATE NOTEBOOK 명령을 사용해 원본 노트북을 복제합니다. 이렇게 하면 노트북이 다른 사용자들에게 공개됩니다.
예:
CREATE NOTEBOOK bobr_prod_notebook
FROM 'snow://notebook/USER$BOBR.PUBLIC.bobr_private_notebook/versions/version$1/'
QUERY_WAREHOUSE = 'PUBLIC_WH'
MAIN_FILE = 'notebook_app.ipynb'
COMMENT = 'Duplicated from personal database';
Notebook BOBR_PROD_NOTEBOOK successfully created.
프로덕션 데이터베이스에서 생성한 노트북에서 비공개 노트북을 만들 수도 있습니다.
참고
Snowsight 사용자 인터페이스를 통해서는 이 작업을 완료할 수 없으며, 명시적인 SQL 명령(예: 노트북의 SQL 셀 또는 워크시트)을 사용해야 합니다.
FROM 'source_location'
지정된 스테이지 위치에 있는
.ipynb
파일에서 노트북을 생성할도록 지정합니다.스테이지에 있는 파일로 노트북을 생성하려면
source_location
을 파일의 스테이지 위치로 설정하고 MAIN_FILE 매개 변수를 파일 이름으로 설정합니다.개인 노트북에서 노트북을 생성하려면(예를 들어, 개인 노트북을 공유 사용 가능으로 설정하려면) 이 매개 변수를 다음과 같이 설정합니다.
'snow://notebook/USER$username.schema.notebook/versions/version$1/'
여기서
username
은 사용자 이름입니다.schema
는 비공개 노트북이 포함된 스키마의 이름입니다.notebook
은 비공개 노트북의 이름입니다.
이 매개 변수를 지정하지 않으면 템플릿 노트북에서 노트북 오브젝트가 만들어집니다.
개인 노트북 및 개인 데이터베이스에 대한 정보 보기¶
개인 사용자는 Snowsight 에서 노트북에 대한 정보를 볼 수 있습니다. Projects » Notebooks 로 이동합니다. 노트북의 소유자가 사용자로 목록에 표시됩니다.
개인 데이터베이스를 포함한 데이터베이스에 대한 자세한 내용은 Data » Databases 섹션을 참조하십시오. USER$
접두사가 붙기 때문에 어떤 데이터베이스가 개인 데이터베이스인지 쉽게 알 수 있습니다.
관리자 표시 여부¶
MANAGE GRANTS 권한이 있는 역할은 개별 사용자가 소유한 개인 오브젝트를 포함하여 계정 내의 모든 오브젝트에 대한 가시성을 갖습니다. 예를 들어, ACCOUNTADMIN 같은 역할은 기본적으로 개인 데이터베이스를 포함한 모든 데이터베이스를 볼 수 있습니다. 이러한 역할은 개인 데이터베이스 내의 스키마 및 개인 노트북에 대한 세부 정보에도 액세스할 수 있습니다.
계정 내의 모든 개인 데이터베이스에 대한 세부 정보를 보려면 DATABASES Account Usage 뷰 를 쿼리하십시오.
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES;
관리자는 DESCRIBE NOTEBOOK 을 사용해 특정 비공개 노트북에 대한 속성을 볼 수 있습니다.
DESCRIBE NOTEBOOK USER$.PUBLIC.bobr_private_notebook;
Snowsight 의 Projects » Notebooks 페이지에서 관리자는 Notebooks 목록에 있는 다른 사용자에게 속한 비공개 노트북 오브젝트를 볼 수 없습니다.
현재 사용자의 개인 데이터베이스를 표시합니다.
SHOW DATABASES LIKE 'USER$BOBR';
개인 데이터베이스의 경우 kind
열의 값은 PERSONAL DATABASE
입니다.
제한 사항¶
비공개 노트북 제한 사항¶
비공개 노트북은 예약할 수 없습니다.
개인 데이터베이스 제한 사항¶
사용자는 개인 데이터베이스 안에서만 개인 노트북과 스키마를 만들 수 있습니다. 예를 들어, 테이블을 생성하고 로딩할 수 없습니다.
사용자는 개인 데이터베이스를 변경, 복제본 생성 또는 복제할 수 없습니다.
사용자는 개인 데이터베이스와 비개인 데이터베이스 간에 스키마를 이동할 수 없습니다.
개인 데이터베이스는 역할과 공유할 수 없습니다.
관리자는 복제를 목적으로 복제 그룹에 개인 데이터베이스를 추가할 수 없습니다.
사용자는 개인 데이터베이스에서 오브젝트를 공유할 수 없습니다.
사용자는 네이티브 앱(앱 패키지)에 개인 데이터베이스를 추가할 수 없습니다.
사용자 및 관리자는
USER$.PUBLIC
스키마를 삭제하거나 이름을 변경할 수 없습니다.
공동 작업 제한¶
관리자는 데이터베이스 역할을 만들 수 없습니다.
사용자 및 관리자는 자신의 스키마에 대한
CREATE < 오브젝트>
권한을 다른 사용자에게 부여할 수 없습니다.사용자는 자신의 오브젝트에 대한 권한을 공유 또는 애플리케이션 패키지에 부여할 수 없습니다.
사용자는 개인 데이터베이스에 대한
REFERENCE_USAGE
권한을 공유 또는 패키지에 부여할 수 없습니다.사용자는 공유에 개인 데이터베이스를 추가할 수 없습니다(계정 간 공유 목적).