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 カタログ対応のワークスペースからのデータとAIアセットを、同じく Unity カタログ対応のDatabricksワークスペースにアクセスできるユーザーと共有できます。
このアプローチでは、Databricks に組み込まれている Delta Sharing サーバーを使用します。 これは、ノートDelta Sharing共有、 Unity Catalogボリューム共有、 Unity Catalog AIモデル共有、 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 オープン共有プロトコルを使用してデータを共有する (プロバイダー向け)」を参照してください。
オープンソースの Delta Sharing サーバーの顧客管理実装。これにより、Databricks かどうかに関係なく、任意のプラットフォーム間で共有できます。
Databricksドキュメントでは、独自のDelta Sharingサーバーをセットアップする手順については説明していません。 github.com/delta-io/delta-sharing を参照してください。
オープンな共有とDatabricks-to-Databricks共有
このセクションでは、Unity Catalog が有効になっている Databricks ワークスペースから共有するための 2 つのプロトコルについて説明します。
注:
このセクションでは、プロバイダーが Unity Catalog対応の Databricks ワークスペース上にあることを前提としています。 Databricks 以外のプラットフォームまたは Unity 以外のカタログ ワークスペースから共有するようにオープンソースの Delta Sharing サーバーを設定する方法については、「 github.com/delta-io/delta-sharing」を参照してください。
プロバイダーが Databricks で Delta Sharing を使用する方法は、データを共有する相手によって異なります。
オープン共有を使用すると、Databricksにアクセスできるかどうかに関係なく、任意のユーザーとデータを共有できます。
Databricks-to-DatabricksDatabricks共有により、 自分のものとは異なる メタストアにワークスペースがアタッチされているUnity Catalog ユーザーとデータを共有できます。Databricks-to-Databricksノートブック、ボリューム、およびモデルの共有もサポートしていますが、オープン共有では利用できません。
オープンDelta Sharingとは?
Databricksを使用しているかどうかに関係なく、Databricksワークスペース外のユーザーとデータを共有する場合は、オープンDelta Sharingを使用してデータを安全に共有できます。データプロバイダーは、トークンを生成し、受信者と安全に共有します。トークンを使用して認証し、アクセス権を付与した共有に含まれているテーブルへの読み取りアクセス権を取得します。
受信者は、次のような多くのコンピューティング ツールとプラットフォームを使用して、共有データにアクセスできます。
Databricks
Apache Spark
Pandas
Power BI
Delta Sharingコネクタの完全な一覧とその使用方法については、Delta Sharingのドキュメントを参照してください。
Databricks-to-Databricks Delta Sharingとは?
Unity Catalogが有効になっている Databricks ワークスペースを持つユーザーとデータを共有する場合は、Databricks 間 Delta Sharingを使用できます。Databricks 間共有を使用すると、AWS、Azure、GCP を使用しているかどうかに関係なく、他の Databricks アカウントのユーザーとデータを共有できます。 また、独自の Databricks アカウント内のさまざまな Unity Catalog メタストア間でデータを安全に共有するための優れた方法でもあります。 このシナリオでは、Unity Catalog自体を使用してワークスペース間のデータへのアクセスを管理できるため、同じ Unity Catalog メタストアに接続されているワークスペース間でデータを共有するために Delta Sharing を使用する必要はありません。
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」を参照してください。
Databricks-to-DatabricksUnity Catalog同じアカウント内の メタストア間での 間の共有は常に有効です。Delta Sharingを有効にして、他のアカウントまたは非DatabricksクライアントのDatabricksワークスペースとデータを共有したいプロバイダーの場合、 Databricksアカウント管理者またはメタストア管理者は、次のセットアップ ステップ (概要) を実行します。
共有したいデータを管理する、Unity CatalogメタストアのDelta Sharingを有効にします。
注:
Delta Sharingを使用して、アカウント内の他のUnity Catalogメタストアのユーザーとのみデータを共有する場合は、メタストアでDelta Sharingを有効にする必要はありません。1つのDatabricksアカウント内でのメタストア間の共有は、既定で有効になっています。
「メタストアでのDelta Sharingの有効化」を参照してください。
Unity Catalogメタストアに登録されたデータ アセットを含む共有を作成します。
Databricks 以外の受信者と共有する場合 (オープン共有と呼ばれます)、Delta 形式または Parquet 形式のテーブルを含めることができます。 Databricks-to-Databricks共有を使用する場合は、ビュー、 Unity Catalogボリューム、 Unity Catalogモデル、およびノートブック ファイルを共有に追加することもできます。
「 Delta Sharing の共有の作成と管理」を参照してください。
受信者を作成します。
「Delta Sharingのデータ受信者の作成と管理」を参照してください。
受信者がDatabricksユーザーでない場合、またはUnity Catalogが有効になっているDatabricksワークスペースにアクセスできない場合は、オープン共有を使用する必要があります。その受信者に対してトークンベースの資格情報のセットが生成されます。
受信者がUnity Catalogが有効になっているDatabricksワークスペースにアクセスできる場合は、Databricks-to-Databricks共有が使用可能であり、トークンベースの資格情報は必要ありません。受信者に共有識別子を要求し、それを使用して安全な接続を確立します。
ヒント
自分自身をテストの受信者として使用して、セットアップ プロセスを試してみてください。
受信者に1つ以上の共有へのアクセス権を付与します。
「Delta Sharing データ共有へのアクセスの管理 (プロバイダー向け)」を参照してください。
注:
この手順は、
USE SHARE
、USE RECIPIENT
、およびSET SHARE PERMISSION
権限を持つ、管理者以外のユーザーが実行することもできます。「Unity Catalog権限とセキュリティ保護可能なオブジェクト」を参照してください。受信者に共有に接続するために必要な情報を送信します (オープン共有のみ)。
「受信者に接続情報を送信する」を参照してください。
オープン共有の場合は、安全なチャンネルを使用して受信者にアクティブ化リンクを送信し、これにより受信者は自分の社内ベースの資格情報をダウンロードできるようになります。
Databricks-to-Databricks共有の場合、共有へのアクセス権を付与するとすぐに、共有に含まれるデータが受信者のDatabricksワークスペースで使用できるようになります。
これで、受信者は共有データにアクセスできるようになります。
ボリュームの共有
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 機能。
部分的にサポートされている機能。
特徴量 |
プロバイダー |
Databricks 受信者 |
オープンソースの受信者 |
---|---|---|---|
削除ベクトル |
この機能を使用してテーブルを共有することは、パブリック プレビュー段階です。 |
|
|
カラムマッピング |
この機能を使用してテーブルを共有することは、パブリック プレビュー段階です。 |
|
|
ユニフォームフォーマット |
この機能を使用してテーブルを共有することは、パブリック プレビュー段階です。 |
|
|
V2 チェックポイント |
|||
タイムスタンプNTZ |
サポート |
Databricks Runtime 14.1+ |
Delta Sharing Spark コネクタ 3.3+ |
リキッドクラスタリング |
Delta Sharingよくある質問
以下は 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ワークスペースなし。Power BI、pandas、オープンソース Apache Spark など、多くのデータ プラットフォームで使用できるオープンソース Delta Sharing コネクタを使用します。 「オープン共有を使用して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は egress のコストがかかりますか?
リージョン内での Delta Sharing では、送信コストは発生しません。 他のデータ共有プラットフォームとは異なり、Delta Sharing ではデータの複製は必要ありません。 このモデルには多くの利点がありますが、クラウドまたはリージョン間でデータを共有する場合、クラウド ベンダーがデータ送信料金を請求する可能性があることを意味します。 Databricks は、送信料金が発生しない Cloudflare R2 からの共有をサポートし、送信料金を監視して回避するためのその他のツールと推奨事項を提供します。 「Delta Sharing の出力コストの監視と管理 (プロバイダー向け)」を参照してください。
プロバイダーは受信者のアクセスを取り消すことができますか?
はい、受信者のアクセスは、オンデマンドで、指定した粒度レベルで取り消すことができます。 特定の共有および特定の IP アドレスへの受信者アクセスの拒否、受信者の表形式のデータのフィルター処理、受信者トークンの取り消し、受信者の完全な削除を行うことができます。 「 共有への受信者のアクセス権を取り消す 」および「 Delta Sharing のデータ受信者を作成および管理する」を参照してください。
事前に署名されたURLを使用するのは安全ではありませんか?
Delta Sharing は、事前に署名された URL を使用して、オブジェクト ストレージ内のファイルへの一時的なアクセスを提供します。 これらは、共有データに既にアクセスできる受信者にのみ与えられます。 これらは有効期間が短く、受信者に既に付与されているレベルを超えてアクセスレベルを拡大しないため、安全です。
Delta Sharing オープン共有プロトコルで使用されるトークンは安全ですか?
Delta Sharing は、他の利用可能なデータ共有プラットフォームとは異なり、クロスプラットフォーム共有を可能にするため、共有プロトコルにはオープン トークンが必要です。 プロバイダーは、トークンの有効期間を構成し、ネットワーク制御を設定し、オンデマンドでアクセスを取り消すことで、トークンのセキュリティを確保できます。 さらに、トークンは、受信者にすでに付与されているアクセス レベルを超えてアクセス レベルを拡張しません。 トークンのセキュリティに関する考慮事項を参照してください。
受信者の共有へのアクセスを管理するために VPN を使用したくない場合は、 Databricks-to-Databricks共有を使用するか、 Databricksアカウント チームに代替手段について問い合わせる必要があります。
Delta Sharing はビュー共有をサポートしていますか?
はい、Delta Sharing はビュー共有をサポートしています。 「共有にビューを追加する」を参照してください。
表示共有の計画されている機能強化の詳細については、Databricks アカウント チームにお問い合わせください。
制限事項
表形式データは、 Delta テーブル形式である必要があります。 Parquet テーブルを Delta に簡単に変換したり、元に戻したりすることができます。 CONVERT TO DELTAを参照してください。
Delta Sharing は、リキッドクラスタリングと V2 checkpoint を使用するテーブルをサポートしていますが、次の制限があります。
受信者はスナップショットクエリのみを実行できます。 チェンジデータフィード (CDF) クエリまたはストリーミング クエリは実行できません。
プロバイダーは、パーティション フィルタリングを使用してテーブルを共有できません。
テーブル制約 (プライマリ・キー制約と外部キー制約) は、共有テーブルでは使用できません。
共有可能なビューは、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 のリソース クォータの使用状況を監視する」を参照してください。