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

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

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

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

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

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

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

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

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

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

CREATE OR REPLACE TABLE table_name DEEP CLONE source_table_name;

「Databricks でテーブルを複製する」および「ワークフローのスケジュールとオーケストレーション」を参照してください。

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

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

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

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

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

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

要件

  • Unity Catalogが有効化されたDatabricks ワークスペース

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

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

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

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

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

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

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

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

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

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 ジョブをスケジュールできます。

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

「Databricks でテーブルを複製する」および「ワークフローのスケジュールとオーケストレーション」を参照してください。

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

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

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