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 ジョブをスケジュールできます。
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
を使用して、マネージドストレージに 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 でのテーブルのクローニング 」および 「Databricks ジョブを使用したオーケストレーション」を参照してください。
新しいテーブルをシェアしてください
共有を作成するときは、R2 に保存されている新しいカタログにあるテーブルを追加します。 このプロセスは、共有にテーブルを追加するのと同じです。
「Delta Sharing の共有を作成および管理する」を参照してください。