Condividi tramite


Delta Sharing

Si applica a:contrassegnato con sì Databricks SQL contrassegnato con sì Databricks Runtime 10.4 LTS e versioni successive contrassegnato con sì solo Unity Catalog

La condivisione differenziale è un protocollo aperto per la condivisione sicura dei dati con altre organizzazioni indipendentemente dalle piattaforme di elaborazione usate. Può condividere raccolte di tables in un metastore Catalog Unity in tempo reale senza copiarli, in modo che i dati recipients possano iniziare immediatamente a usare la versione più recente dei dati condivisi.

Esistono tre componenti per la condivisione differenziale:

  • Providers

    Un provider è un'entità che ha reso disponibili i dati per la condivisione.

  • Shares

    Una condivisione definisce un raggruppamento logico per il tables che si intende condividere.

  • Recipients

    Il destinatario identifica un'organizzazione con cui si desidera condividere un numero qualsiasi di shares.

Per una guida dettagliata su come usare la condivisione Delta, vedere Che cos'è la condivisione delta?.

Providers

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 11.3 LTS e versioni successive

Un provider di dati è un oggetto che rappresenta l'organizzazione nel mondo reale che shares i dati. Un provider contiene shares che contengono ulteriormente i dati condivisi. Una volta che un provider ti ha aggiunto come Recipients puoi

Esempi

-- 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 SHARE cdc.vaccinedata;

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

Shares

Una condivisione è un contenitore che viene istanziato con il comando CREATE SHARE. Dopo aver creato è possibile registrare in modo iterativo una raccolta di tables esistenti definiti all'interno del metastore usando il comando ALTER SHARE. È possibile registrare tables con il nome originale, qualificato dal relativo schemaoriginale, o specificare nomi alternativi visibili.

Per creare, modificare ed eliminare shares, è necessario essere un amministratore del metastore o un amministratore dell'account.

Esempi

-- 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)

Recipients

Un destinatario è un oggetto creato usando CREATE RECIPIENT per rappresentare un'organizzazione a cui si desidera concedere l'accesso shares. Quando si crea un destinatario Databricks SQL genera un collegamento di attivazione che è possibile inviare all'organizzazione. Per ottenere il collegamento di attivazione dopo la creazione, utilizzare DESCRIBE RECIPIENT.

Dopo aver creato un destinatario, è possibile concedere SELECT privilegi su shares a scelta usando GRANT ON SHARE.

È necessario essere un amministratore del metastore per creare recipients, eliminare recipientse grant l'accesso a shares.

Esempi

-- 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;