Delta Sharing

적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks Runtime 10.4 LTS 이상 검사 '예'로 표시 Unity 카탈로그만 해당

Delta Sharing은 사용하는 컴퓨팅 플랫폼에 관계없이 다른 조직과 안전하게 데이터를 공유하기 위한 개방형 프로토콜입니다. Unity 카탈로그 메타스토어의 테이블 컬렉션을 복사하지 않고 실시간으로 공유할 수 있으므로 데이터 수신자가 공유 데이터의 최신 버전으로 즉시 작업을 시작할 수 있습니다.

Delta Sharing에는 세 가지 구성 요소가 있습니다.

  • 공급자

    공급자는 데이터를 공유할 수 있도록 한 엔터티입니다.

  • 공유

    공유는 공유하려는 테이블에 대한 논리적 그룹을 정의합니다.

  • 받는 사람

    수신자는 원하는 수의 공유를 공유할 조직을 식별합니다.

델타 공유를 사용하는 방법에 대한 자세한 가이드는 델타 공유를 사용하여 안전하게 데이터 및 AI 자산 공유를 참조 하세요.

공급자

적용 대상:검사 '예'로 표시 Databricks SQL 검사 '예'로 표시 Databricks Runtime 11.3 LTS 이상

데이터 공급자는 데이터를 공유하는 실제 환경에서 조직을 나타내는 개체입니다. 공급자는 공유 데이터를 추가로 포함하는 공유를 포함합니다. 공급자에서 사용자를 수신자로 추가하면 다음을 수행할 수 있습니다.

  • ALTER PROVIDER를 사용하여 공급자의 로컬 이름을 사용자 지정합니다.
  • SHOW SHARES IN PROVIDER와 공유된 데이터 집합을 나열합니다.
  • CREATE CATALOG로 관심 있는 공유 항목을 사용하여 카탈로그를 만듭니다.

예제

-- Change the data provider name locally.
> ALTER PROVIDER `Center for Disease Control` RENAME TO cdc;

-- List the shares the provider has granted you access too.
> SHOW SHARES IN PROVIDER cdc;
 vaccinedata

-- Make the share accessible locally as a catalog.
> CREATE CATALOG cdcdata USING cdc.vaccinedata;

-- Use the data.
> USE CATALOG cdcdata;
> SELECT COUNT(*) FROM information_schema.tables;
  10

공유

공유는 CREATE SHARE 명령을 사용하여 인스턴스화된 컨테이너입니다. 공유를 만들면 ALTER SHARE 명령을 사용하여 메타스토어 내에 정의된 기존 테이블의 컬렉션을 반복적으로 등록할 수 있습니다. 테이블을 원래 이름으로 등록하거나, 원래 스키마로 한정하거나, 노출된 대체 이름을 지정할 수 있습니다.

공유를 생성, 변경, 삭제하려면 메타스토어 관리자 또는 계정 관리자여야 합니다.

예제

-- Create share `customer_share` only if share with same name doesn't exist, with a comment.
> CREATE SHARE IF NOT EXISTS customer_share COMMENT 'This is customer share';

-- Add 2 tables to the share.
-- Expose my_schema.tab1 a different name.
-- Expose only two partitions of other_schema.tab2
> ALTER SHARE customer_share ADD TABLE my_schema.tab1 AS their_schema.tab1;
> ALTER SHARE customer_share ADD TABLE other_schema.tab2 PARTITION (c1 = 5), (c1 = 7);

-- List the content of the share
> SHOW ALL IN SHARE customer_share;
  name              type  shared_object           added_at                     added_by                   comment partitions
  ----------------- ----  ---------------------- ---------------------------- -------------------------- ------- -----------------
  other_schema.tab2 TABLE main.other_schema.tab2 2022-01-01T00:00:01.000+0000 alwaysworks@databricks.com NULL
  their_schema.tab1 TABLE main.myschema.tab2     2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com NULL   (c1 = 5), (c1 = 7)

받는 사람

수신자는 공유 액세스를 허용하려는 조직을 나타내는 개체이며 CREATE RECIPIENT를 사용하여 만듭니다. 수신자를 만들면 Databricks SQL에서는 조직에 보낼 수 있는 활성화 링크를 생성합니다. 만든 후 활성화 링크를 검색하려면 DESCRIBE RECIPIENT를 사용합니다.

수신자를 만들었으면 GRANT ON SHARE을 사용하여 원하는 공유에 대한 SELECT 권한을 수신자에 부여할 수 있습니다.

수신자를 만들고, 수신자를 삭제하고, 공유에 대한 액세스 권한을 부여하려면 메타스토어 관리자여야 합니다.

예제

-- Create a recipient.
> CREATE RECIPIENT IF NOT EXISTS other_org COMMENT 'other.org';

-- Retrieve the activation link to send to other.org
> DESCRIBE RECIPIENT other_org;
  name      created_at                   created_by                 comment   activation_link active_token_id                      active_token_expiration_time rotated_token_id rotated_token_expiration_time
  --------- ---------------------------- -------------------------- --------- --------------- ------------------------------------ ---------------------------- ---------------- -----------------------------
  other_org 2022-01-01T00:00:00.000+0000 alwaysworks@databricks.com other.org https://....    0160c81f-5262-40bb-9b03-3ee12e6d98d7 9999-12-31T23:59:59.999+0000 NULL              NULL

-- Choose shares that other.org has access to
> GRANT SELECT ON SHARE customer_share TO RECIPIENT other_org;