Delta Sharing とは
この記事では、Databricks のデータと AI 資産を組織外のユーザーと Databricks を使用しているかどうかに関係なく共有できる安全なデータ共有プラットフォームである Databricks の Delta Sharing について説明します。 Delta Sharing は、データ製品を交換するためのオープンフォーラムである Databricks Marketplaceや、複数の関係者が機密性の高いエンタープライズデータに対して協力して作業できる安全でプライバシー保護の環境である クリーンルームの基盤でもあります。
Delta Sharingは、他のプラットフォームからDeltaテーブルを共有するために使用できる、オープンソースプロジェクトとしても利用できます。
Delta Sharing を使用して共有されたデータにアクセスする方法については、「 Delta Sharing を使用して共有されたデータにアクセスする (受信者向け)」を参照してください。
Delta Sharing はどのように機能しますか?
Delta Sharingは、使用するコンピューティングプラットフォームに関係なく、他の組織との安全なデータ共有を行うために、Databricksによって開発されたオープンプロトコルです。
Delta Sharingを使用してデータを共有する方法は3つあります。
-
Databricks-to-Databricks 共有プロトコル を使用すると、Unity Catalog 対応ワークスペースのデータやAIアセットを、Unity Catalog 対応の Databricks ワークスペースにもアクセスできるユーザーと共有できます。
このアプローチでは、Databricks に組み込まれている Delta Sharing サーバーを使用します。 Delta Sharingノートブック共有、Unity Catalog ボリューム共有、Unity CatalogAI モデル共有、Unity Catalog データガバナンス、監査、プロバイダーと受信者の両方の使用状況追跡など、他のプロトコルではサポートされていない一部の 機能がサポートされています。Unity Catalog との統合により、プロバイダーと受信者の両方のセットアップとガバナンスが簡素化され、パフォーマンスが向上します。
「Delta Sharing Databricks-to-Databricks プロトコルを使用したデータの共有 (プロバイダー向け)」を参照してください。
-
Databricks オープン共有プロトコル を使用すると、Unity Catalog 対応の Databricks ワークスペースで管理する表形式データを、任意のコンピューティング プラットフォームのユーザーと共有できます。
このアプローチでは、Databricksに組み込まれているDelta Sharingサーバーを使用します。Unity Catalogを使用してデータを管理していて、Databricksを使用していないユーザーやUnity Catalog対応のDatabricksワークスペースにアクセスできないユーザーとデータを共有したい場合に便利です。プロバイダー側でのUnity Catalogとの統合により、プロバイダーのセットアップとガバナンスが簡素化されます。
「Delta Sharing オープン共有プロトコルを使用してデータを共有する (プロバイダー向け)」を参照してください。
-
Databricksの有無に関わらず、あらゆるプラットフォームからあらゆるプラットフォームへの共有を可能にする、 オープンソースのDelta Sharingサーバーの顧客管理実装です 。
Databricksドキュメントには独自のDelta Sharingサーバーを設定する手順は記載されていません。github.com/delta-io/delta-shareingを参照してください。
株式、プロバイダー、および受信者
DatabricksのDelta Sharingの基礎となる主な概念は、 共有 、 プロバイダー 、 受信者 です。
シェアとは?
Delta Sharing では、 共有 は、プロバイダーが 1 人以上の受信者と共有するテーブルとテーブル パーティションの読み取り専用コレクションです。 受信者が Unity Catalog 対応の Databricks ワークスペースを使用している場合は、ノートブック ファイル、ビュー (行レベルと列レベルでアクセスを制限する動的ビューを含む)、Unity Catalog ボリューム、Unity Catalog モデルを共有に含めることもできます。
テーブル、ビュー、ボリューム、モデル、ノートブック ファイルは、いつでも共有に追加したり、共有に対してデータ受信者のアクセス権を割り当てたり取り消したりすることができます。
Unity Catalogが有効なDatabricks ワークスペースでは、共有はUnity Catalogに登録されているセキュリティ保護可能なオブジェクトです。Unity Catalog Metasotreから共有を削除すると、その共有のすべての受信者がその共有オブジェクトにアクセスできなくなります。
「Delta Sharing の共有を作成および管理する」を参照してください。
プロバイダーとは?
プロバイダー は、受信者とデータを共有する事業体です。あなたがプロバイダーであり、組み込みのDatabricks Delta Sharingサーバーを利用し、Unity Catalogを使用して共有と受信者を管理する場合は、Unity Catalogが有効になっているDatabricksワークスペースが少なくとも1つ必要です。すべての既存ワークスペースをUnity Catalogに移行する必要はありません。Delta Sharingのニーズに合わせて、新しいUnity Catalog対応ワークスペースを作成するだけです。
受信者がUnity Catalog対応のDatabricksワークスペース上にいる場合、プロバイダーも、プロバイダー組織を表し、その組織を共有セットに関連付けるUnity Catalogのセキュリティ保護可能なオブジェクトになります。
受取人とは?
受信者 とは、プロバイダーから共有を受け取る事業体のことです。Unity Catalogでは、共有とは組織を表すセキュリティ保護可能なオブジェクトであり、その組織が1つ以上の共有にアクセスできるようにする資格情報または安全な共有識別子に関連付けられます。
データプロバイダー(共有者)は、特定のUnity Catalogメタストアに対して複数の受信者を定義できますが、複数のメタストアのデータを特定のユーザーまたはユーザーグループと共有する場合は、メタストアごとに受信者を個別に定義する必要があります。受信者は複数の共有にアクセスできます。
プロバイダーがUnity Catalogメタストアから受信者を削除すると、その受信者は以前にアクセスできたすべての共有にアクセスできなくなります。
「Delta Sharing のデータ受信者を作成および管理する」を参照してください。
オープン共有と Databricks-to-Databricks 共有
このセクションでは、Unity Catalogが有効になっているDatabricksワークスペースから共有するための2つのプロトコルについて説明します。
このセクションでは、プロバイダーがUnity Catalog対応のDatabricksワークスペース上にあることを前提としています。Databricks 以外のプラットフォームまたはUnity Catalog以外のカタログワークスペースから共有するようにオープンソースのDelta Sharingサーバーを設定する方法については、「github.com/delta-io/delta-sharing」を参照してください。
プロバイダーがDatabricksでDelta Sharingを使用する方法は、データを共有している相手によって異なります:
- オープン共有 を使用すると、Databricksにアクセスできるかどうかに関係なく、任意のユーザーとデータを共有できます。
- Databricks-to-Databricks共有 Databricksを使用すると、ワークスペースが自分とは異なる メタストアにアタッチされているUnity Catalog ユーザーとデータを共有できます。Databricks-to-Databricks は、ノートブック、ボリューム、およびモデル共有もサポートしていますが、これはオープン共有では使用できません。
オープン Delta Sharing とは何ですか?
Databricksを使用しているかどうかに関係なく、Databricksワークスペース外のユーザーとデータを共有する場合は、オープンDelta Sharingを使用してデータを安全に共有できます。データプロバイダーは、トークンを生成し、受信者と安全に共有します。認証にはトークンを使用し、アクセス権を付与した共有に含まれているテーブルへの読み取りアクセス権を取得します。
受信者は、以下のような多くのコンピューティングツールやプラットフォームを使用して共有データにアクセスすることができます。
- Databricks
- Apache Spark
- Pandas
- Power BI
Delta Sharingコネクタの完全な一覧とその使用方法については、Delta Sharingのドキュメントを参照してください。
「Delta Sharing オープン共有プロトコルを使用してデータを共有する (プロバイダー向け)」も参照してください。
Databricks-to-Databricks Delta Sharingとは?
が有効になっているDatabricks ワークスペースを持つユーザーとデータを共有する場合は、Unity CatalogDatabricks-to-DatabricksDelta Sharingを使用できます。Databricks-to-Databricks共有を使用すると、他のユーザーがDatabricks 、AWS 、 を使用しているかどうかにかかわらず、他の アカウントのユーザーとデータを共有できます。AzureGCPまた、自分の Databricks アカウント内のさまざまな Unity Catalog メタストア間でデータを安全に共有するための優れた方法でもあります。 同じ Unity Catalog メタストアにアタッチされたワークスペース間でデータを共有するために Delta Sharing を使用する必要はありません。このシナリオでは、Unity Catalog 自体を使用してワークスペース間のデータへのアクセスを管理できるためです。
Databricks-to-Databricks共有の利点の 1 つは、共有の受信者が共有にアクセスするためにトークンを必要とせず、プロバイダーが受信者トークンを管理する必要がないことです。すべての ID 検証、認証、監査を含む共有接続のセキュリティは、Delta Sharing と Databricks プラットフォームを通じて完全に管理されます。 もう 1 つの利点は、Databricks ノートブック ファイル、ビュー、Unity Catalog ボリューム、Unity Catalog モデルを共有できることです。
「Delta Sharing Databricks-to-Databricks プロトコルを使用してデータを共有する (プロバイダー向け)」も参照してください。
プロバイダー管理者はDelta Sharingをどのように設定しますか?
このセクションでは、プロバイダーがUnity Catalog対応のDatabricksワークスペースからDelta Sharingを有効にして共有を開始する方法の概要について説明します。オープンソースDelta Sharingについては、「github.com/delta-io/delta-sharing」を参照してください。
同じアカウント内のUnity Catalogメタストア間でDatabricks-to-Databricks共有は常に有効になっています。プロバイダーがDelta Sharingで他のアカウントまたはDatabricks以外のクライアントのDatabricksワークスペースとデータを共有できるようにするには、Databricksアカウント管理者またはメタストア管理者が次のセットアップ手順を(高レベルで)実行します。
- 共有したいデータを管理する、Unity CatalogメタストアのDelta Sharingを有効にします。
Delta Sharingを使用して、アカウント内の他のUnity Catalogメタストアのユーザーとのみデータを共有する場合は、メタストアでDelta Sharingを有効にする必要はありません。1つのDatabricksアカウント内でのメタストア間の共有は、デフォルトで有効になっています。
「メタストアでDelta Sharingを有効にする」を参照してください。 2. Unity Catalog メタストアに登録されているデータ資産を含む共有を作成します。
Databricks 以外の受信者と共有する場合 (オープン共有と呼ばれます)、Delta 形式または Parquet 形式のテーブルを含めることができます。 Databricks-to-Databricks共有を使用する予定の場合は、ビュー、Unity Catalogボリューム、Unity Catalogモデル、ノートブックファイルを共有に追加することもできます。
「Delta Sharing の共有を作成および管理する」を参照してください。 3. 受信者を作成します。
「Delta Sharing のデータ受信者を作成および管理する」を参照してください。
受信者が Databricks ユーザーでない場合、または Unity Catalog が有効になっている Databricks ワークスペースにアクセスできない場合は、 オープン共有を使用する必要があります。 その受信者に対して、トークンベースの資格情報のセットが生成されます。
受信者が が有効になっているDatabricks ワークスペースにアクセスできる場合は、Unity Catalog Databricks-to-Databricks共有 を使用でき、トークンベースの資格情報は必要ありません。受信者に 共有識別子 を要求し、それを使用して安全な接続を確立します。
自分自身をテスト受信者として使用し、セットアッププロセスを試してください。
-
受信者に1つ以上の共有へのアクセス権を付与します。
この手順は、 USE SHARE
、 USE RECIPIENT
、および SET SHARE PERMISSION
権限を持つ管理者以外のユーザーも実行できます。 「Unity Catalog の特権とセキュリティ保護可能なオブジェクト」を参照してください。
-
共有に接続するために必要な情報を受信者に送信します(オープン共有のみ)。
「受信者に接続情報を送信する」を参照してください。
オープン共有では、安全なチャンネルを使用して受信者にアクティベーションリンクを送信し、トークンベースの資格情報をダウンロードできるようにします。
Databricks間共有の場合、共有へのアクセス権を付与するとすぐに、共有に含まれるデータが受信者のDatabricksワークスペースで使用できるようになります。
受信者は共有データにアクセスできるようになりました。
受信者は共有データにどのようにアクセスしますか?
受信者は、共有データアセットに読み取り専用形式でアクセスします。 共有ノートブック ファイルは読み取り専用ですが、他のノートブックと同様に、クローンを作成して変更し、受信者ワークスペースで実行できます。
以下のように、安全なアクセスは共有モデルによって異なります。
- オープン共有(受信者はDatabricks に対してUnity Catalog ワークスペースを有効にしていません):受信者は、選択したツール(Apache Spark Pandas、 、Power BI 、Databricks など)のデータにアクセスするたびに資格情報を提供します。「Delta Sharing オープン共有を使用して共有されたデータを読み取る (受信者向け)」を参照してください。
- Databricks-to-Databricks (recipient ワークスペースは for a に対して有効になっています Unity Catalog): 受信者は Databricksを使用してデータにアクセスします。 Unity Catalog を使用して、Databricks アカウント内の他のユーザーにアクセスを許可および拒否できます。 「Databricks-to-Databricks Delta Sharingを使用して共有されたデータの読み取り (受信者向け)」を参照してください。
データプロバイダーが自分の Databricks アカウントのデータテーブルまたはボリュームを更新するたびに、更新は受信者のシステムにほぼリアルタイムで表示されます。
誰が共有データを共有し、アクセスしているかをどのように追跡しますか?
Unity Catalog が有効な Databricks ワークスペースのデータプロバイダーは、Databricks 監査ログとシステムテーブルを使用して、共有と受信者の作成と変更を監視し、共有に対する受信者のアクティビティを監視できます。 データ共有の監査と監視を参照してください。
Databricksワークスペースで共有データを使用するデータ受信者は、監査ログDatabricksシステムとテーブルを使用して、誰がどのデータにアクセスしているかを把握できます。データ共有の監査と監視を参照してください。
ボリュームの共有
Databricks-to-Databricks共有フローを使用してボリュームを共有できます。「共有へのボリュームの追加」 (プロバイダー向け) と 「Databricks-to-Databricks Delta Sharingを使用して共有されたデータの読み取り (受信者向け) (受信者向け)」を参照してください。
モデルの共有
Databricks-to-Databricks共有フローを使用してモデルを共有できます。「共有にモデルを追加する」 (プロバイダーの場合) および「Databricks-to-Databricks Delta Sharingを使用して共有されたデータを読み取る (受信者の場合) (受信者の場合)」を参照してください。
ノートブックの共有
Delta Sharing を使用して、Databricks-to-Databricks 共有フローを使用してノートブック ファイルを共有できます。「 共有へのノートブック ファイルの追加 」 (プロバイダーの場合) と 「共有ノートブックの読み取り (受信者の場合)」を参照してください。
行レベルと列レベルでのアクセスの制限
受信者のプロパティに基づいて特定のテーブルデータへのアクセスを制限する動的ビューを共有できます。 動的ビューの共有には、 Databricks-to-Databricks 共有フローが必要です。 「 共有に動的ビューを追加して、行と列をフィルタリングする」を参照してください。
Delta Sharing とストリーミング
Delta Sharing では、Spark 構造化ストリーミングがサポートされています。 プロバイダーは、受信者が構造化ストリーミングソースとして使用して、共有データを低遅延で段階的に処理できるように、履歴を含むテーブルを共有できます。 受信者は、履歴と共有されているテーブルに対して Delta Lake タイムトラベルクエリ を実行することもできます。
履歴のあるテーブルを共有する方法については、「 共有にテーブルを追加する」を参照してください。 共有テーブルをストリーミング ソースとして使用する方法については、「Apache Spark 構造化ストリーミングを使用してテーブルをクエリする (Databricks-to-Databricks 共有の受信者向け)」または「Spark 構造化ストリーミングを使用して共有テーブルにアクセスする (オープン共有データの受信者向け)」を参照してください。
「Databricks でのストリーミング」も参照してください。
Delta Lake 機能のサポート マトリックス
Delta Sharing は、テーブルを共有するときに Delta Lake のほとんどの機能をサポートします。 このサポート マトリックスには、次のものが一覧表示されます。
- 特定のバージョンの Databricks Runtime、オープンソースの Delta Sharing Spark コネクタ、またはオープンソースの Delta Sharing Python コネクタを必要とする Delta 機能。
- 一部サポートされている機能。
機能 | PROVIDER | Databricks の受信者 | オープンソースの受信者 |
---|---|---|---|
削除ベクトル | この機能を使用してテーブルを共有することは、パブリック プレビュー段階です。 |
|
|
列マッピング | この機能を使用してテーブルを共有することは、パブリック プレビュー段階です。 |
|
|
ユニフォームフォーマット | この機能を使用してテーブルを共有することは、パブリック プレビュー段階です。 |
|
|
V2 チェックポイント | |||
タイムスタンプNTZ | サポートされています | Databricks Runtime 14.1+ | Delta Sharing Spark コネクタ 3.3+ |
リキッドクラスタリング |
Delta Sharing に関する FAQ
以下は、Delta Sharingに関するよくある質問です。
Delta Sharing を使用するには Unity Catalog が必要ですか?
いいえ、(プロバイダーとして) 共有データを共有したり (受信者として) 共有したりするために Unity Catalog は必要ありません。 ただし、Unity Catalog には、非表形式や AI アセット共有のサポート、すぐに使用できるガバナンス、シンプルさ、クエリ パフォーマンスなどの利点があります。
プロバイダーは2つの方法でデータを共有することができます:
-
共有するアセットをUnity Catalogの管理下に置き、組み込みのDatabricks Delta Sharingサーバーを使用して共有します。
すべてのアセットを Unity Catalog に移行する必要はありません。 共有するアセットを管理するために必要なのは、Unity Catalog が有効になっている Databricks ワークスペースを 1 つだけです。 一部のアカウントでは、新しいワークスペースが Unity Catalog に対して自動的に有効になります。 「Unity Catalog の自動有効化」を参照してください。
-
Databricksアカウントを使用することなく、オープンなDelta Sharingサーバーを実装してデータを共有します。
受信者は、次の2つの方法でデータを消費できます:
-
Databricks ワークスペースがない場合。 、 、 オープンソース など、多くのデータDelta SharingPower BI Pandasプラットフォームで使用できるオープンソースApache Spark コネクタを使用します。「Delta Sharing オープン共有を使用して共有されたデータの読み取り (受信者向け)」および「Delta Sharing オープンソース プロジェクト」を参照してください。
-
Databricksワークスペースあり。受信者ワークスペースは、Unity Catalogで有効にする必要はありませんが、有効にしておくと、ガバナンス、簡素化、およびパフォーマンス上の利点があります。
これらの利点を求める受信者組織は、すべてのアセットを Unity Catalog に移行する必要はありません。 共有されているアセットを管理するには、Unity Catalog が有効になっている Databricks ワークスペースが 1 つだけ必要です。 一部のアカウントでは、新しいワークスペースが Unity Catalog に対して自動的に有効になります。 「Unity Catalog の自動有効化」を参照してください。
「Delta Sharing オープン共有を使用して共有されたデータを読み取る (受信者向け)」および「Databricks-to-Databricks Delta Sharing を使用して共有されたデータを読み取る (受信者向け)」を参照してください。
Delta Sharing を使用するには、Databricks の顧客である必要がありますか?
いいえ、Delta Sharingはオープンプロトコルです。Databricks以外のデータは、任意のデータプラットフォーム上の受信者と共有できます。プロバイダーは、任意のコンピューティングプラットフォームから共有するようにオープンDelta Sharingサーバーを構成できます。受信者は、Power BI、pandas、オープンソースSparkなど、多くのデータ製品のオープンソースDelta Sharingコネクタを使用して共有データを使用できます。
ただし、DatabricksでDelta Sharingを使用すること、特にUnity Catalog対応ワークスペースからの共有には多くの利点があります。
詳細については、このFAQの最初の質問を参照してください。
Delta Sharing ではエグレス コストが発生しますか?
リージョン内の Delta Sharing では、エグレス コストは発生しません。 他のデータ共有プラットフォームとは異なり、Delta Sharing ではデータのレプリケーションは必要ありません。 このモデルには多くの利点がありますが、クラウドやリージョン間でデータを共有する場合、クラウドベンダーがデータエグレス料金を請求する可能性があることを意味します。 Databricksは、エグレス料金が発生しないCloudflare R2からの共有をサポートしており、エグレス料金を監視および回避するための他のツールと推奨事項を提供します。 「Delta Sharing のエグレス コストの監視と管理 (プロバイダー向け)」を参照してください。
プロバイダーは受信者のアクセスを取り消すことができますか?
はい、受信者のアクセスは、オンデマンドで、指定された粒度で取り消すことができます。 特定の共有や特定の IP アドレスへの受信者のアクセスを拒否したり、受信者の表形式データをフィルタリングしたり、受信者トークンを取り消したり、受信者を完全に削除したりできます。 「共有への受信者のアクセスを取り消す」および「Delta Sharing のデータ受信者を作成および管理する」を参照してください。
事前に署名されたURLを使用するのは安全ではありませんか?
Delta Sharingでは、署名済みのURLを使用して、オブジェクトストレージ内のファイルへの一時的なアクセスを提供します。共有データにアクセスできる受信者にのみ提供されます。有効期限が短く、受信者にすでに付与されているレベルを超えてアクセスレベルを拡大しないため、安全です。
Delta Sharing のオープン共有プロトコルで使用されるトークンは安全ですか?
Delta Sharing では、他の使用可能なデータ共有プラットフォームとは異なり、クロスプラットフォーム共有が可能になるため、共有プロトコルにはオープン トークンが必要です。 プロバイダーは、トークンの有効期間を構成し、ネットワーク制御を設定し、オンデマンドでアクセスを取り消すことで、トークンのセキュリティを確保できます。 さらに、トークンは、受信者に既に付与されているアクセスレベルを超えてアクセスレベルを拡大しません。 トークンのセキュリティに関する考慮事項を参照してください。
トークンを使用して受信者共有へのアクセスを管理したくない場合は、 Databricks-to-Databricks 共有 を使用するか、 Databricks アカウント チームに代替手段について問い合わせてください。
Delta Sharing はビュー共有をサポートしていますか?
はい、Delta Sharing ではビューの共有がサポートされています。 「共有にビューを追加する」を参照してください。
表示共有の計画されている機能強化については、Databricksアカウントチームにお問い合わせください。
制限
-
表形式データは Delta テーブル形式である必要があります。 Parquet テーブルを Delta に簡単に変換したり、その逆を行ったりすることができます。 CONVERT TO DELTAを参照してください。
-
Delta Sharing は、リキッドクラスタリングと V2 checkpoint を使用するテーブルをサポートしていますが、次の制限があります。
- 受信者はスナップショットクエリのみを実行できます。 チェンジデータフィード (CDF) クエリまたはストリーミング クエリは実行できません。
- プロバイダーは、パーティション フィルタリングを使用してテーブルを共有できません。
-
プロバイダーは、R2 テーブルをリキッドクラスタリングおよび V2 チェックポイントと共有できません。
-
テーブル制約 (プライマリ・キー制約と外部キー制約) は、共有テーブルでは使用できません。
-
共有可能なビューは、Delta テーブルまたはその他の共有可能なビューで定義する必要があります。 「共有へのビューの追加 (プロバイダー向け)」および「共有ビューの読み取り (受信者向け)」を参照してください。
-
ノートブックの共有は、 Databricks-to-Databricks 共有でのみサポートされます。 「ノートブック ファイルを共有に追加する」および「Databricks-to-Databricks Delta Sharing を使用して共有されたデータを読み取る (受信者向け)」を参照してください。
-
ボリューム共有は、 Databricks-to-Databricks 共有でのみサポートされます。 「共有へのボリュームの追加」 (プロバイダーの場合) と 「Databricks-to-Databricks Delta Sharing を使用して共有されたデータの読み取り (受信者の場合)」を参照してください。
-
モデル共有は、 Databricks-to-Databricks 共有でのみサポートされます。 「共有にモデルを追加する」 (プロバイダーの場合) と 「Databricks-to-Databricks Delta Sharingを使用して共有されたデータを読み取る (受信者の場合)」を参照してください。
-
共有テーブルで許可されるメタデータ内のファイル数には制限があります。 詳細については、「 リソース制限超過エラー」を参照してください。
-
information_schema
という名前のスキーマはUnity Catalogで予約されているため、Unity Catalogメタストアにインポートできません。 -
Delta Sharing では、
SHALLOW CLONE
テーブルの共有はサポートされていません。 Databricks では、絶対パスを参照する Delta ログの事前署名 URL はサポートされていません。
Delta Lake 機能のサポート マトリックスも参照してください。
リソースクォータ
Databricks では、セキュリティ保護可能なすべての Delta Sharing オブジェクトにリソース クォータが適用されます。 これらのクォータは、「 リソース制限」に記載されています。 これらのリソース制限を超えることが予想される場合は、Databricks アカウント チームにお問い合わせください。
クォータの使用状況は、 Unity Catalog リソース クォータ APIsを使用して監視できます。 「Unity Catalog のリソース クォータの使用状況を監視する」を参照してください。