Delta Sharing下りコストを監視および管理する (プロバイダー向け)

この記事では、 Delta Sharingを使用してデータと AI 資産を共有するときに、クラウド ベンダーの下りコストを監視および管理するために使用できるツールについて説明します。

他のデータ共有プラットフォームとは異なり、 Delta Sharingデータ レプリケーションを必要としません。 このモデルには多くの利点がありますが、クラウドまたはリージョン間でデータを共有する場合、クラウド ベンダーがデータ送信料金を請求する可能性があることを意味します。 Delta Sharing使用してリージョン内でデータと AI アセットを共有する場合、下りコストは発生しません。

下り料金を監視および管理するために、Databricks は以下を提供します。

データをレプリケートしてエグレス・コストを回避

エグレス コストを回避する方法の 1 つは、プロバイダーが受信者が使用しているリージョンで共有データのローカル レプリカを作成して同期することです。 もう 1 つの方法は、受信者がアクティブなクエリを実行するために共有データをローカル領域に複製し、共有テーブルとローカル複製の間の同期を設定することです。 このセクションでは、いくつかのレプリケーション パターンについて説明します。

増分レプリケーションにはDeltaディープ クローンを使用する

プロバイダは、DEEP CLONE を使用して、共有先のリージョン全体の外部ロケーションにDeltaテーブルを複製できます。 ディープ クローンは、ソース テーブルのデータとメタデータをクローン ターゲットにコピーします。 ディープ クローンでは、ソース テーブル内の新しいデータを識別し、それに応じてターゲットを更新することにより、増分更新も可能になります。

CREATE TABLE [IF NOT EXISTS] table_name DEEP CLONE source_table_name
   [TBLPROPERTIES clause] [LOCATION path];

次のコマンドを使用して、 Databricks Workflowsジョブをスケジュールして、共有テーブルの最近の更新に応じてターゲット テーブル データを段階的に更新できます。

CREATE OR REPLACE TABLE table_name DEEP CLONE source_table_name;

「Databricks でのテーブルのクローン作成」およびDatabricks Workflowsの概要」を参照してください。

増分レプリケーションのために共有テーブルで変更データフィード (CDF) を有効にする

表が CDF と共有されている場合、受信者は変更にアクセスして表のローカル コピーにマージし、そこでユーザーがクエリを実行できます。 このシナリオでは、データへの受信者のアクセスはリージョンの境界を越えず、エグレスはローカル コピーの更新に制限されます。 受信者が Databricks を使用している場合は、Databricks ワークフロー ジョブを使用して変更をローカル レプリカに反映できます。

表を CDF と共有するには、表で CDF を有効にし、 WITH HISTORY共有する必要があります。

CDF の使用の詳細については、 「Databricks で Delta Lake 変更データフィードを使用する」および「テーブルを共有に追加する」を参照してください。

Cloudflare R2レプリカを使用するか、ストレージをR2に移行

プレビュー

この機能はパブリックプレビュー段階です。

Cloudflare R2オブジェクトストレージでは、エグレス料金はかかりません。 共有するデータを R2 に複製または移行すると、下り料金を発生させずにDelta Sharing使用してデータを共有できるようになります。 このセクションでは、データを R2 の場所にレプリケートし、ソース テーブルからの増分更新を有効にする方法について説明します。

要件

  • Databricks ワークスペースがUnity Catalogに対して有効になっています。

  • Databricks Runtime 14.3 以降、または SQLwarehouse 2024.15 以降。

  • クラウドフレアアカウント。 https://dash.cloudflare.com/sign-up を参照してください。

  • Cloudflare R2管理者ロール。 Cloudflareの役割に関するドキュメントを参照してください。

  • CREATE STORAGE CREDENTIAL ワークスペースにアタッチされているUnity Catalogメタストアに対する権限。 アカウント管理者とメタストア管理者には、デフォルトでこの権限が与えられます。

  • CREATE EXTERNAL LOCATION メタストアと外部ロケーションで参照されるストレージ資格情報の両方に対する権限。 メタストア管理者にはデフォルトでこの権限が与えられます。

  • CREATE MANAGED STORAGE 外部ロケーションの特権。

  • CREATE CATALOG メタストア上。 メタストア管理者にはデフォルトでこの権限が与えられます。

Databricks で R2 バケットを外部ロケーションとしてマウントする

  1. Cloudflare R2バケットを作成します。

    「R2 バケットの設定」を参照してください。

  2. R2 バケットへのアクセスを許可するストレージ認証情報をUnity Catalogに作成します。

    ストレージ資格情報の作成」を参照してください。

  3. ストレージ認証情報を使用して、 Unity Catalogに外部ロケーションを作成します。

    「外部ロケーションを作成してクラウド ストレージを Databricks に接続する」を参照してください。

外部位置情報を使用して新しいカタログを作成する

新しい外部位置を管理された保管場所として使用するカタログを作成します。

カタログの作成と管理」を参照してください。

カタログを作成するときは、次の操作を行います。

  • [ 標準 ] カタログの種類を選択します。

  • [ストレージの場所]で、 [ストレージの場所を選択]を選択し、外部ロケーションとして定義した R2 バケットへのパスを入力します。 例えば r2://mybucket@my-account-id.r2.cloudflarestorage.com

外部ロケーションとして定義した R2 バケットへのパスを使用します。 例えば:

  CREATE CATALOG IF NOT EXISTS my-r2-catalog
    MANAGED LOCATION 'r2://mybucket@my-account-id.r2.cloudflarestorage.com'
    COMMENT 'Location for managed tables and volumes to share using Delta Sharing';

共有するデータを新しいカタログのテーブルに複製します

DEEP CLONEを使用して、GCS 内のテーブルを、マネージド ストレージに R2 を使用する新しいカタログに複製します。 ディープ クローンは、ソース テーブルのデータとメタデータをクローン ターゲットにコピーします。 ディープ クローンでは、ソース テーブル内の新しいデータを識別し、それに応じてターゲットを更新することにより、増分更新も可能になります。

CREATE TABLE IF NOT EXISTS new_catalog.schema1.new_table DEEP CLONE old_catalog.schema1.source_table
  LOCATION 'r2://mybucket@my-account-id.r2.cloudflarestorage.com';

次のコマンドを使用して、ソース テーブルの最近の更新に応じてターゲット テーブル データを段階的に更新するようにDatabricks Workflowsジョブをスケジュールできます。

CREATE OR REPLACE TABLE new_catalog.schema1.new_table DEEP CLONE old_catalog.schema1.source_table;

「Databricks でのテーブルのクローン作成」およびDatabricks Workflowsの概要」を参照してください。

新しいテーブルを共有する

共有を作成するときは、R2 に格納されている新しいカタログ内のテーブルを追加します。 このプロセスは、共有にテーブルを追加する場合と同じです。

Delta Sharing の共有の作成と管理を参照してください。