Reservations を使用したワークロード管理

料金モデルの選択: オンデマンドと定額

オンデマンドと定額の料金モデルはいつでも切り替えることができます。また、2 つのモデルを組み合わせて利用することもできます。2 つの料金モデルは相互補完的な関係にあります。オンデマンド課金は効率的であり、定額課金は予測可能です。

予約のトレードオフ

定額を選択する場合は、以下の要素を検討してください。

  • 費用。毎月の分析費用が、概算で BigQuery 最小定額コミットメント以内である場合におすすめします(現在、毎月 500 スロット)。
  • 効率性。クエリごとの支払いになるため、効率性を重視する場合はオンデマンドを検討してください。
  • 予測可能性。定額の月額料金制で支払うため、月額料金の予測可能性を重視する場合は、定額をおすすめします。
  • リソース。定額とオンデマンドの課金モデルは、容量の提供方法が異なります。詳細については、購入するスロット量の見積もりをご覧ください。

Reservations の決定フロー。

新規のお客様の場合、定額制での開始をおすすめします。オンデマンド課金にした場合の費用は随時確認できます。また、自分に適したモデルもいつでも選択できます。

オンデマンドと定額の課金モデルを組み合わせた選択もできます。

  • 定期的なデータ処理や ELT など、予測可能なワークロードにはオンデマンド課金を使用します。
  • その場限りの分析やデータ サイエンス ワークロードには、定額課金を使用します。

購入するスロット量の見積もり

BigQuery は、リソースの増加に比例してサイズ調整されるように設計されています。ワークロードによっては、容量を徐々に増加することで、得られるメリットも増える可能性があります。このため、最適な購入スロット数は、パフォーマンス、スループット、ユーティリティのカスタマイズ設定によって決まります。

購入する最適スロット数を決めるには、プロジェクトで現在使用されているスロットの量と、目標とする月あたりの支払額を確認する必要があります。オンデマンド ワークロードでの現在のスロットの一応の上限は 2,000 スロットですが、Stackdriver Logging、Jobs API、または BigQuery Audit のログを使用して、プロジェクトで実際に使用されているスロットの量を確認することが重要です。詳細については、利用可能なスロットと割り当てられているスロットの表示をご覧ください。

スロット使用のタイムライン。

BigQuery Reservations スタートガイド

BigQuery Reservations の使用を開始するには、BigQuery クイックスタートを完了し、管理プロジェクトを選択します。

次に、スロットを購入し、組織をその予約に割り当てる必要があります。これらのステップの両方を完了しなければ、組織には引き続きオンデマンドの料金で課金されます。

スロットの購入

Console

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. ナビゲーション パネルで、[予約] セクションに移動します。予約のナビゲーション ボタン。
  3. [スロットの購入] ボタンをクリックします。スロットを購入します。
  4. コミットメント期間として、Monthly を選択します。月単位を選択します。
  5. ロケーションとして、US を選択します。
  6. スロット数として、500 を入力します。
  7. CONFIRM を入力して注文を確認して確定し、PURCHASE を選択します。確認用の入力を行います。
  8. 容量がプロビジョニングされるまで、最大で数分間かかります。容量がプロビジョニングされると、リクエストした容量コミットメントのステータスが緑色になります。スロットのコミットメント。

初めて容量を購入する場合は、default 予約が作成されます。次に、組織を予約に割り当てます。

予約への組織の割り当て

Console

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [予約] セクションをクリックします。予約のナビゲーション ボタン。
  3. [割り当て] タブをクリックします。[割り当て] タブ。
  4. [割り当ての検索と作成] セクションで、[参照] ボタンをクリックして組織を選択します。プロジェクト割り当て選択ツール。
  5. [予約] 選択ツールで、default. で終わる予約名を選択します。予約割り当て選択ツール。
  6. [作成] をクリックします。

CLI

bq mk コマンドに --reservation_assignment フラグを指定して、組織のクエリジョブを予約に割り当てます。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment \
  --reservation_id=admin_project_id:US.default \
  --job_type=QUERY \
  --assignee_id=organization_id \
  --assignee_type=ORGANIZATION

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトです。

  • organization_id は組織 ID です。

専用スロットによる追加予約の作成

組織が予約に割り当てられると、BigQuery を使用するすべてのプロジェクトで、これらのスロットが公平に共有されます。ワークロードによっては、他のワークロードとのスロットの共有が望ましくない場合もあります。たとえば、本番環境のワークロードと、テストのワークロードとのスロットの均等共有が適切ではない場合があります。専用のスロットが必要なプロジェクトの場合は、独自に予約したスロットを使用して予約をさらに作成できます。次のセクションでは、500 個のスロットを作成して、my-prod-project に割り当てる例を説明します。

prod 予約の作成

Console

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [予約] セクションをクリックします。
  3. [予約の作成] ボタンをクリックします。予約を作成します。
  4. [予約名] フィールドに、prod を入力します。予約情報を作成します。
  5. [ロケーション] フィールドで、US を選択します。
  6. スロット数には、500 を入力します。
  7. [保存] をクリックします。

新たに作成された prod の予約が概要テーブルに表示されます。

予約の概要。

CLI

bq mk コマンドに --reservation フラグを指定して、500 スロットの予約を作成します。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --reservation \
  --slots=500 \
  prod

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

prod 予約への my-prod-project の割り当て

Console

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [予約] セクションをクリックします。
  3. [割り当て] タブをクリックします。[割り当て] タブ。
  4. [割り当ての検索と作成] セクションで [参照] ボタンをクリックし、prod プロジェクトを選択します。プロジェクト割り当て選択ツール。
  5. [予約] 選択ツールで、prod. で終わる予約名を選択します。予約割り当て選択ツール。
  6. [作成] をクリックします。

CLI

bq mk コマンドに --reservation_assignment フラグを指定して、本番環境プロジェクトのクエリジョブを prod 予約に割り当てます。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment \
  --reservation_id=admin_project_id:US.prod \
  --job_type=QUERY \
  --assignee_id=my-prod-project \
  --assignee_type=PROJECT

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

  • my-prod-project は本番環境プロジェクトの ID です。

これで、my-prod-project から送信されたクエリジョブは、prod 予約に基づいて実行され、500 個のスロットへのアクセス権が付与されます。

スロットの追加購入と予約サイズの増加

時間が経過するにつれてワークロードのサイズと複雑さが増すと、スロットを追加購入して、パフォーマンスを改善する必要があると判断する場合があります。

スロットの追加購入

BigQuery Reservations スタートガイドの手順に従って、追加で 500 個のスロットを購入します。

prod 予約サイズの増加

prod 予約のサイズを増やすには、次の手順を行います。

Console

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [予約] セクションをクリックします。[予約] セクション。
  3. 以前に作成した prod 予約を選択し、[編集] ボタンをクリックします。予約の編集。
  4. 新しい予約サイズとして、1,000 スロットを入力します。予約スロットを増やします。
  5. [保存] をクリックします。
  6. 更新された prod 予約サイズが、予約のリストに表示されます。予約サイズが更新されました。

CLI

bq update コマンドに --reservation フラグを指定して、本番環境予約のサイズを更新します。

bq update \
  --project_id=admin_project_id \
  --location=US \
  --slots=500 \
  --reservation prod

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

予約へのプロジェクト / フォルダ / 組織の割り当て

プロジェクト、フォルダ、および組織はすべて、予約に割り当てることができます。プロジェクトの予約割り当ては、フォルダの割り当てよりも優先され、フォルダの割り当ては組織の割り当てよりも優先されます。

複数のリージョン間での予約の管理

Reservations はリージョンを基準にするリソースです。あるリージョンで購入されたスロットと作成された予約は、他のリージョンでは使用できません。プロジェクト、フォルダ、および組織はすべて、同じリージョン内で予約に割り当て、別のリージョンでオンデマンドで実行できます。別のリージョンの予約を管理するには、[BigQuery Reservation] ページでリージョンを変更する必要があります。

Console

  1. BigQuery コンソール UI で [予約] セクションをクリックします。
  2. [ロケーション] 選択ツールをクリックし、予約を管理するリージョンを選択します。別のリージョンを選択します。
  3. リージョンを選択したら、スロットの購入予約の作成、および予約へのプロジェクトの割り当てを行えます。

予約への読み込みおよびエクスポートのジョブの割り当て

読み込みや他のパイプライン ジョブによって使用されるスロットは無料であり、ベスト エフォートです。BigQuery は、取り込み機能に対する保証は行っていません。読み込み専用のリソースや、揮発性の低いパフォーマンスが必要な場合は、スロットを購入して、読み込みや他のパイプライン ジョブ専用の予約を作成できます。

次の例は、my-project のパイプライン ジョブを、管理プロジェクトの読み込み予約に割り当てる方法を示しています。

CLI

bq mk コマンドに --reservation フラグを指定して、パイプライン ジョブで使用する 1,000 スロットの予約を作成します。

bq mk \
  --project_id=admin_project_id \
  --location=US \
  --ignore_idle_slots=true \
  --slots=1000 \
  --reservation my-pipeline

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

bq mk コマンドに --reservation_assignment フラグを指定して、プロジェクトのパイプライン ジョブをパイプライン予約に割り当てます。

bq mk \
  --project_id=my-project \
  --location=US \
  --reservation_assignment \
  --reservation_id=admin_project_id:US.loads \
  --assignee_id=admin_project_id \
  --assignee_type=PROJECT \
  --job_type=PIPELINE

ここで

  • my-project は予約に割り当てるパイプライン ジョブのプロジェクト ID です。

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

予約からのプロジェクトの削除

予約の割り当てを削除することで、予約からプロジェクトを削除できます。プロジェクトが予約に割り当てられていない場合、クエリ単位(オンデマンド)料金設定が使用され、それに従って課金されます。親フォルダまたは組織がいずれかの予約に割り当てられている場合、プロジェクトでオンデマンド料金設定は使用されません。

予約からプロジェクトを削除するには:

Console

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [予約] セクションをクリックします。
  3. [割り当て] タブをクリックします。[割り当て] タブ。
  4. 削除する割り当てに対して、[アクション] をクリックし、[削除] をクリックします。割り当てを削除します。

CLI

bq rm コマンドに --reservation_assignment フラグを指定して、プロジェクトを予約から削除します。

bq rm \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment admin_project_id:US.reservation_id.reservation_assignment_id

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

  • reservation_assignment_id は予約割り当ての ID です。

プロジェクトの予約割り当ての検索

プロジェクト、フォルダ、組織が予約に割り当てられているかどうかは、次の手順で確認できます。

Console

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [予約] セクションをクリックします。
  3. [割り当て] タブをクリックします。[割り当て] タブ。
  4. プロジェクト選択ツールをクリックし、目的のプロジェクト、フォルダ、または組織を選択します。プロジェクト割り当て選択ツール。
  5. 予約の割り当てが存在する場合は、選択ツールの下に表示されます。

CLI

bq show コマンドに --reservation_assignmentフラグを指定して、プロジェクトのクエリジョブがどの予約に割り当てられているかを調べます。

bq show \
  --project_id=admin_project_id \
  --location=US \
  --reservation_assignment \
  --job_type=QUERY \
  --assignee_id=my-prod-project \
  --assignee_type=PROJECT

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

  • my-prod-project は本番環境プロジェクトの ID です。

容量コミットメントの削除

容量コミットメントは、そのコミットメント期間に基づいて削除できます。

  • 月単位: 最初の 30 日が経過した後は、コミットメントをいつでも削除できます。請求は秒単位で比例配分されます。
  • 年単位: 1 年後、スロットプールを更新しないことを選択できます。この時点で、スロットプールは月額料金に変換され、いつでもキャンセルできるようになります。請求は秒単位で比例配分されます。

コミットメントの終了日は Reservations の UI に表示されます。容量コミットメントは、コミットメント日の後に削除できるようになります。容量コミットメントを削除する場合は、まず、割り振られていないスロットが十分にあるかどうかを確認する必要があります。十分でない場合は、予約のスロット数を減らすか、予約全体を削除する必要があります。

Console

容量コミットメントを削除するには、次の手順を行います。

  1. Google Cloud Console で、BigQuery ウェブ UI に移動します。

    BigQuery ウェブ UI に移動

  2. [予約] セクションをクリックします。
  3. [スロット コミットメント] タブをクリックします。
  4. 削除するコミットメントに対して、[アクション] をクリックし、[削除] をクリックします。コミットメントを削除します。
  5. 「REMOVE」と入力して、[続行] を押します。コミットメントを削除します。

CLI

bq rm コマンドに --capacity_commitment フラグを指定して、容量コミットメントを削除します。

bq rm \
  --project_id=admin_project_id \
  --location=US \
  --capacity_commitment=admin_project_id:US.capacity_commitment_id

ここで

  • admin_project_id は予約リソースのオーナー プロジェクトの ID です。

  • capacity_commitment_id は容量コミットメントの ID です。

予約を使用したワークロードと部門の管理

BigQuery Reservations を使用して、予約を追加作成し、それらの予約にプロジェクトを割り当てることで、コミットされた容量をワークロード、チーム、部門間で分離できます。予約はリソースの独立したプールであり、組織全体の空き容量を活用できるという利点があります。

たとえば、合計で 1,000 個のスロットのコミット容量があり、データ サイエンス、ELT、BI という 3 つのワークロード タイプがあるとします。

  • 500 個のスロットを使用して ds 予約を作成し、関連するすべての Google Cloud プロジェクトを 予約に割り当てることができます。
  • 300 個のスロットを使用して elt 予約を作成し、ELT ワークロードに使用するプロジェクトを 予約に割り当てることができます。
  • 200 個のスロットを使用して bi 予約を作成し、BI ツールに接続されているプロジェクトを 予約に割り当てることができます。

コミットメントを削除します。

ワークロード全体で容量を分割するのではなく、個々のチームや部門用に予約を作成することもできます。

複雑な組織用の BigQuery Reservations

BigQuery Reservations は、組織を対象にしたリソースです。コミットされた容量を組織全体で一元購入して使用します。部や課に対して、コミット容量の購入、部や課の間での容量の配分、その容量分の課金をそれぞれで自己管理するように求めることができます。

部または課ごとに別個の Google Cloud 組織を使用できます。このシナリオでは、組織ごとに管理プロジェクトを定義し、その管理プロジェクトからその組織の BigQuery Reservations を管理します。異なる複数の組織間でコミットされた容量やアイドル状態の容量が共有されることはありません。

定額とオンデマンドの課金モデルを併用する

定額とオンデマンドの課金モデルは併用できます。

あるリージョンでは定額を使用し、別のリージョンではオンデマンドを使用できます。

  1. デフォルトでは、すべてのリージョンでオンデマンドが使用されます。
  2. プロジェクト、フォルダ、または組織を予約に割り当てることで、特定のリージョンで定額課金を選択できます。
  3. たとえば、米国のマルチリージョンでスロット コミットメントを購入し、デフォルトの予約に組織を割り当てた場合、組織は米国のマルチリージョンでは定額課金になり、その他のすべてのリージョンではオンデマンド課金のままになります。

1 つのリージョン内で、定額とオンデマンドの両方を使用できます。

  1. フォルダや組織を予約に割り当てないでください。
  2. 代わりに、プロジェクトを予約に明示的に割り当てます。
  3. 予約に割り当てられていないプロジェクトはオンデマンドのままになります。例:
    • プロジェクト A、B、C がある場合
    • 組織全体の割り当ては作成しません
    • プロジェクト A と B を予約に明示的に割り当てます
    • プロジェクト C はオンデマンド課金のままになります

オンデマンド課金のプロジェクトは、コミットされた容量とは別個の容量を使用します。これらのプロジェクトは、コミットされた容量の可用性に影響を及ぼしません。