Delta Sharing のエグレス コストを監視および管理する (プロバイダー向け)
この記事では、 Delta Sharingを使用してデータと AI 資産を共有するときに、クラウド ベンダーのエグレスコストを監視および管理するために使用できるツールについて説明します。
他のデータ共有プラットフォームとは異なり、Delta Sharing ではデータの複製は必要ありません。 このモデルには多くの利点がありますが、クラウドまたはリージョン間でデータを共有する場合、クラウド ベンダーがデータ送信料金を請求する可能性があることを意味します。 Delta Sharing使用してリージョン内でデータと AI アセットを共有する場合、エグレスコストは発生しません。
エグレス料金を監視および管理するために、Databricks は以下を提供します。
- エグレスの使用パターンとコストを監視する DLT パイプラインを実行するために使用できるノートブック。
- 退出手数料を避けるために地域間でデータを複製する手順。
- 下り料金を避けるためのCloudflare R2ストレージのサポートです。
Delta Sharing エグレス パイプライン ノートブック
Databricks Marketplace のリストのDelta Sharingエグレスパイプラインには、Delta Sharing に関連するエグレスの使用パターンとコストを監視するために複製して使用できる 2 つのノートブックが含まれています。 これらのノートブックは両方とも、Delta Live Tables パイプラインを作成して実行します。
- IP 範囲マッピング パイプライン ノートブック
- エグレスコスト分析パイプライン ノートブック
これらのノートブックを Delta Live Tables テンプレートとして実行すると、詳細なコスト レポートが自動的に生成されます。 ログは、クラウドプロバイダーのIP範囲テーブルおよび Delta Sharing システムテーブルと結合され、転送されたエグレスバイトが生成され、共有と受信者に帰属します。
完全な要件と手順は、リストに記載されています。
データをレプリケートしてエグレスコストを回避する
送信コストを回避する1つの方法は、プロバイダーが受信者が使用しているリージョンで共有データのローカルレプリカを作成して同期することです。 もう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 でのテーブルのクローニング」および「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
メタストア上。 メタストアの管理者は、デフォルトによってこの特権を持っています。
Cloudflare R2の制限事項
プロバイダーは、リキッドクラスタリングと V2 チェックポイントを使用する R2 テーブルを共有できません。
R2 バケットを外部ロケーションとして Databricks にマウントする
-
クラウドフレアのR2バケットを作成してください。
-
Unity Catalog で、R2 バケットへのアクセス権を付与するストレージ資格情報を作成します。
「ストレージ資格情報を作成する」を参照してください。
-
ストレージ認証情報を使用して、 Unity Catalogに外部ロケーションを作成します。
クラウドストレージをDatabricksに接続するための外部ロケーションの作成を参照してください。
外部ロケーションを使用して新しいカタログを作成する
新しい外部ロケーションを管理ストレージの場所として使用するカタログを作成します。
カタログの作成を参照してください。
カタログを作成するときは、次の操作を行います。
- Catalog Explorer
- SQL
- Select a Standard catalog type.
- Under Storage location, select Select a storage location and enter the path to the R2 bucket you defined as an external location. For example,
r2://mybucket@my-account-id.r2.cloudflarestorage.com
Use the path to the R2 bucket you defined as an external location. For example:
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
を使用して、S3 内のテーブルを、マネージドストレージに 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 ジョブをスケジュールできます。
CREATE OR REPLACE TABLE new_catalog.schema1.new_table DEEP CLONE old_catalog.schema1.source_table;
「Databricks でのテーブルのクローニング」および「Databricks でのオーケストレーションの概要」を参照してください。
新しいテーブルをシェアしてください
共有を作成するときは、R2 に保存されている新しいカタログにあるテーブルを追加します。 このプロセスは、共有にテーブルを追加するのと同じです。
「Delta Sharing の共有を作成および管理する」を参照してください。