BigQuery 管理の概要
このドキュメントでは、BigQuery の管理タスクの概要と、タスク管理の実現に役立つ BigQuery の機能について説明します。
通常、BigQuery 管理者は次の種類のタスクを実行します。
- プロジェクト、データセット、テーブルなどのリソースを管理する。
- リソースを必要とするプリンシパルにアクセスが限定されるように、リソースを保護する。
- ジョブ、クエリ、コンピューティング容量(予約)などのワークロードを管理する。
- 割り当て、ジョブ、コンピューティング使用量などのリソースをモニタリングする。
- 費用を制御しながら、パフォーマンスが最大になるようにワークロードを最適化する。
- エラー メッセージ、請求に関する問題、割り当てのトラブルシューティングを行う。
このドキュメントでは、これらのタスクを行う際に役立つ BigQuery の機能の概要を説明します。
Google Cloud コンソールで BigQuery データ管理機能を直接使用するには、[ツアーを見る] をクリックします。
ツール
BigQuery は、管理タスクに使用できる複数のインターフェースを備えています。多くの場合、複数のツールを使用して特定のタスクを実行することで、最適なツールを選択できます。たとえば、Google Cloud コンソールの [エクスプローラ] ペイン、bq mk --table
コマンド、または CREATE TABLE
SQL ステートメントを使用して、テーブルを作成できます。
- Google Cloud コンソール。Google Cloud コンソールには、BigQuery 管理専用のページが複数あります。詳細については、Google Cloud コンソールを使用するをご覧ください。
SQL ステートメント。Google Cloud コンソールの BigQuery ページには、DDL ステートメントと DCL ステートメントを使用して管理タスクを実行できるクエリエディタがあります。詳細については、データ定義言語(DDL)とデータ制御言語(DCL)をご覧ください。
ストアド プロシージャを使用して、SQL ステートメントを使用する管理タスクを自動化できます。詳細については、ストアド プロシージャを操作するをご覧ください。
bq
コマンド。bq コマンドライン ツールでは、bq
コマンドを使用して多くの管理タスクを行えます。bq コマンドライン ツールは、Google Cloud コンソールでサポートされていないタスクを実行する場合、クエリまたは API メソッドにエンコードする前に機能をプロトタイピングする場合、またはコマンドライン インターフェースを使いたい場合に使用できます。詳細については、bq コマンドライン ツールの使用をご覧ください。
リソースを管理する
BigQuery リソースには、組織、フォルダ、プロジェクト、データセット、テーブルがあります。このセクションでは、組織のリソースを管理する方法について説明します。
BigQuery リソース階層については、BigQuery リソースを整理するをご覧ください。特に、組織リソースを作成すると、アクセス制御の設定などの一部のタスクを組織レベルで実行できます。
データセットを管理する
データセットはテーブルのコンテナです。データセット内にテーブルを作成し、グループとして管理できます。たとえば、データセットのデフォルトのテーブル有効期限を構成できます。この構成は、オーバーライドしない限り、データセット内のすべてのテーブルに適用されます。テーブルのグループをコピーするには、そのデータセットのコピーを作成します。また、データセット レベルでテーブルへのアクセスを制御できます。
データセットの管理の詳細については、次のドキュメントをご覧ください。
- データセットの作成、コピー、移動、更新に関するさらに詳しい内容は、データセットの概要をご覧ください。
- データセット レベルのアクセス制御の詳細については、データセットへのアクセス制御と承認済みデータセットをご覧ください。
テーブルを管理する
BigQuery では、データはテーブル内に保存され、そこでクエリを実行できます。テーブルの作成、さまざまなタイプのソースからテーブルへのデータの読み込み、特定の列または取り込み時間に基づくパーティション分割テーブル、クラスタ テーブル、テーブル プロパティの更新、テーブルデータのエクスポートが可能です。
テーブル管理の詳細については、次のドキュメントをご覧ください。
- BigQuery テーブルへのデータの読み込みに関するさらに詳しい内容は、テーブルの読み込みの概要をご覧ください。
- テーブルの管理とテーブルデータのエクスポートに関するさらに詳しい内容は、テーブルの概要をご覧ください。
- テーブルのパーティショニングとクラスタリングの詳細については、パーティション分割テーブルの概要とテーブルのクラスタ化の概要をご覧ください。
リソースにラベルを付ける
BigQuery リソースを整理するために、データセット、テーブル、ビューにラベルを追加できます。ラベルとは、リソースに添付可能な Key-Value ペアです。リソースにラベルを付けると、ラベル値に基づいてそのリソースを検索できるようになります。たとえば、ラベルは、dept:sales
、dept:marketing
、dept:analytics
などのラベルを追加することで、部門別にデータセットをグループ化できます。次に、そのラベルを使用して、部門別に請求料金を分類できます。
詳細については、ラベルの概要をご覧ください。
リソース情報を取得する
BigQuery リソースに関する情報を取得するには、INFORMATION_SCHEMA
ビューにクエリを実行します。BigQuery ではリソースタイプごとにビューが用意されています。たとえば、INFORMATION_SCHEMA.TABLES
ビューにはテーブルに関する情報が含まれています。
以下に、INFORMATION_SCHEMA
ビューにクエリを実行することで取得できる情報の例をいくつか示します。
- テーブルが作成された日時を表示する。
- テーブルの各列の名前とデータ型を取得する。
- プロジェクトで実行されているジョブをすべて見つける。
- ベーステーブルから作成されたテーブル スナップショットのリストを取得する。
- データセット、テーブル、ビュー、ルーティンの場合は、リソースの作成に使用できる DDL ステートメントを取得する。
- テーブルの作成に使用されたオプション(テーブルの有効期限など)を取得する。
- テーブルのパーティショニング列とクラスタリング列を検出する。
- プロジェクトに割り当てられている予約とそのスロット容量を取得する。
詳細については、BigQuery INFORMATION_SCHEMA
の概要をご覧ください。
データをコピーする
さまざまな理由(人的エラーからの保護など)でデータのコピーを作成することや、後で比較できるように保持することができます。BigQuery には、特定の時点のテーブルデータをコピーする方法が複数用意されています。
タイムトラベル。過去 1 週間以内のテーブルの状態へのアクセスが必要な場合があります。たとえば、人的エラーによってデータが破損した場合などです。BigQuery はテーブルの過去のデータを 7 日間保持します。テーブルの最近の履歴データには、タイムトラベル機能を使用してアクセスできます。
詳細については、タイムトラベルを使用した履歴データへのアクセスをご覧ください。
テーブル スナップショット。過去 1 週間より前のテーブルの状態にアクセスできるようにする場合は、定期的にテーブル スナップショットを作成することを検討してください。テーブル スナップショットは軽量の読み取り専用コピーであり、テーブルの状態を無期限に保持できます。たとえば、テーブル スナップショットを使用すると、テーブルの現在のデータを年初のデータと比較できます。これはタイムトラベルの使用では不可能です。課金されるのは、ベーステーブルとテーブル スナップショットの間で異なるデータの保存のみです。
さらに詳しい内容については、テーブル スナップショットの概要をご覧ください。
テーブル クローン。軽量で書き込み可能なテーブルのコピーを作成する場合は、テーブル クローンを使用できます。料金は、ベーステーブルとそのテーブル クローンの間で異なるデータの保存に対してのみ発生します。たとえば、テスト環境でテーブル クローンを作成すると、本番環境データに影響を与えることなく、テーブルの完全なコピーのストレージに対して料金を支払うことなく、本番環境データのコピーをテストできます。
さらに詳しい内容については、テーブル クローンの概要をご覧ください。
データリネージを追跡する
データリネージは Dataplex の機能で、システム内でのデータの移動(データの送信元、データの通過先、データに適用される変換)を追跡できます。データリネージを使用してプロジェクト内でのデータの移動を追跡する方法の詳細については、Dataplex のデータリネージについてをご覧ください。
リソースを保護する
BigQuery のセキュリティは、Google Cloud Identity and Access Management に基づいています。BigQuery では、組織、フォルダ、プロジェクト、データセット、テーブル、テーブル列、テーブル行へのアクセスなど、リソースへのアクセスをさまざまなレベルで制御できます。
BigQuery リソースへのアクセス制御については、データ セキュリティとガバナンスの概要をご覧ください。
ワークロードを管理する
BigQuery は、ユーザーに代わって、データの取り込み、クエリ、エクスポートなど多くのタスクを実行します。各タスクは、BigQuery ジョブによって行われます。このセクションでは、組織のジョブをモニタリングし、管理する方法について説明します。
ジョブを管理する
ジョブとは、データの読み込み、エクスポート、クエリ、コピーなど、ユーザーに代わって BigQuery が実行するアクションのことです。ユーザーが Google Cloud コンソール、bq コマンドライン ツール、SQL ステートメント、API 呼び出しを使用して、タスクの 1 つを開始すると、BigQuery はタスクを実施するジョブを自動的に作成します。
BigQuery 管理者は、組織のジョブをモニタリング、管理、トラブルシューティングして、ジョブが円滑に実施されるようにできます。
さらに詳しい内容については、ジョブの概要をご覧ください。
予約を管理する
BigQuery では、クエリの実行時にスロットと呼ばれるコンピューティング単位が使用されます。BigQuery では、クエリのサイズと複雑さに応じて、各クエリの実行に必要なスロット数が計算されます。
BigQuery には、クエリを実行するスロットに対して課金される 2 種類の料金モデルがあります。
- オンデマンド課金。クエリではスロットの共有プールが使用され、クエリによって処理されるバイト数に応じて課金されます。
- 容量ベースの課金。予約または容量コミットメントをエディションに割り当てます。それぞれのエディションは最適な作業環境を提供できるよう、独自の機能セットと価格を持っています。
これらの料金モデルはプロジェクトごとに適用されるため、一部のプロジェクトではオンデマンド課金を使用し、一部のプロジェクトでは容量ベースの課金を使用できます。
オンデマンド課金では、無料使用量の毎月の割り当てが使用された後には、各クエリで処理されるバイト数に対して課金されます。スループットは、事前定義されたスロット割り当てを上限とします。この割り当ては、プロジェクトで実行されるクエリ間で共有されます。
BigQuery エディションの課金では、自動スケーリングの予約と任意で低コストの容量コミットメントを通じて、組織にスロットを割り当てます。各エディションのスロットには独自の価格帯があり、それぞれに固有の機能セットが用意されています。BigQuery のエディションおよび関連する機能の詳細については、BigQuery エディションの概要をご覧ください。
クエリを処理するためのコンピューティング容量の管理については、次のドキュメントをご覧ください。
スロット、およびオンデマンド課金と容量ベースの課金のトレードオフについては、予約の概要をご覧ください。
容量ベースの課金のさまざまなオプション(月単位または年単位のコミットメント)については、コミットメントをご覧ください。
容量ベースのスロットプール(スロット予約)の作成については、スロット予約の操作をご覧ください。
スロット予約を特定のプロジェクトに割り当てる方法については、予約割り当てを使用するをご覧ください。
ワークロードに割り当てる適切なスロットの数を見積もるには、スロットの容量要件の見積もりをご覧ください。
リソースのモニタリング
Google Cloud には、BigQuery リソースなどのリソースのモニタリングと監査の機能が用意されています。このセクションでは、BigQuery に適用される Google Cloud のモニタリング機能と監査機能について説明します。
詳細については、BigQuery のモニタリング概要をご覧ください。
Cloud Monitoring ダッシュボード
Cloud Monitoring には、BigQuery をモニタリングするためのダッシュボードが用意されています。このダッシュボードを使用して、BigQuery のインシデント、データセット、テーブル、プロジェクト、クエリ時間、スロット使用率に関する情報を表示します。
詳細については、モニタリング ダッシュボードを表示するをご覧ください。
管理グラフとアラート
Cloud Monitoring を使用すると、指定したリソース、指標、集計に基づいてカスタム・チャートを作成できます。
詳細については、ダッシュボードとグラフをご覧ください。
構成したアラートがトリガーされた場合に通知するアラート ポリシーを作成することもできます。たとえば、クエリの実行時間が指定の上限を超えた場合に、指定したアドレスにメールを送信するアラートを作成できます。
詳細については、アラートの作成をご覧ください。
予約のモニタリング
スロットの使用状況は、Google Cloud コンソールの [容量管理] ページでモニタリングできます。容量コミットメントを表示して、スロット予約が割り当てられた場所を確認できます。また、Slot Estimator(プレビュー)を使用して、過去のパフォーマンス指標に基づいて組織の容量要件を見積もることもできます。
詳細については、BigQuery 予約のモニタリングをご覧ください。
割り当て
Google Cloud では、共有リソースの公平な使用と経費の抑制を目的として、BigQuery リソースなどのリソースの使用に上限を設定しています。Google Cloud コンソールを使用して、割り当てのある BigQuery リソースの使用状況を表示し、必要に応じて割り当ての増加をリクエストできます。
詳細については、BigQuery の割り当てと上限をご覧ください。
監査ログ
Cloud Audit Logs は、BigQuery イベントを含む Google Cloud イベントの記録を保持します。[ログ エクスプローラ] を使用して、BigQuery ジョブ、データセット、転送などに関連するイベントに関するログをクエリできます。ログ ダッシュボードには、最近のエラーに関する情報が表示され、ログベースの指標を使用して、特定のフィルタに一致するログエントリをカウントできます。
詳細については、Google Cloud Logging のドキュメントをご覧ください。
ワークロードを最適化する
BigQuery の構成を最適化して、ストレージとクエリの両方の処理費用を制御できます。
BigQuery のストレージ費用の管理については、BigQuery でのストレージを最適化するをご覧ください。
BigQuery 処理費用の管理については、BigQuery での費用を管理するをご覧ください。
BigQuery クエリの最適化については、クエリ パフォーマンスの最適化の概要をご覧ください。
BigQuery の費用の概要については、BigQuery の料金 と BigQuery の課金に関する質問をご覧ください。
信頼性に関するガイダンス
このドキュメントでは、BigQuery の可用性、耐久性、データ整合性、パフォーマンスの整合性、データ復旧に関する情報や、エラー処理に関する考慮事項の確認など、BigQuery の信頼性について説明します。信頼性と障害対策の詳細については、信頼性の概要をご覧ください。
トラブルシューティング
組織の BigQuery システムのモニタリングと管理のために、このドキュメントで説明している機能に加えて、生じる可能性のある問題のトラブルシューティングには次のリソースを利用できます。
さらにサポートが必要な場合は、サポートの利用をご覧ください。
次のステップ
- BigQuery の管理に関するさまざまなトピックの動画シリーズについては、BigQuery 管理者リファレンス ガイド: 総集編をご覧ください。