コンテンツに移動
データ分析

最新のビュー、マテリアライズド ビューを BigQuery で提供

2021年3月8日
Google Cloud Japan Team

※この投稿は米国時間 2021 年 2 月 26 日に、Google Cloud blog に投稿されたものの抄訳です。

本日、BigQuery マテリアライズド ビューが一般提供(GA)となったことをお知らせいたします。マテリアライズド ビュー(MV)は事前に計算されたビューであり、パフォーマンスと効率の改善を目的としてクエリの結果を定期的にキャッシュに保存します。この機能は、一般的なクエリを何度も繰り返し使用するような特性のワークロードにおいて、パフォーマンスを大幅に向上させ、コストの削減を実現します。次のようなユースケースに最適です。

  • クエリ パフォーマンスの高速化: 生のテーブルがあり、膨大な処理を要するオンライン分析処理(OLAP)スタイルの集計を行う場合に、抽出、変換、読み込み(ETL)やビジネス インテリジェンス(BI)パイプラインなどの予測可能で反復的なクエリがあるときは、BigQuery マテリアライズド ビューを使用することをおすすめします。

  • リアルタイム データの集計: リアルタイムの意思決定のためにデータにアクセスする場合、BigQuery はストリーミング機能をネイティブにサポートします。マテリアライズド ビューは BigQuery のストリーミング アーキテクチャと統合されており、集計をリアルタイムで実行して最新の情報を提供します。

新しい機能強化が一般提供に

今回、異なるデータセットとプロジェクト内で MV を作成できるようになりました(データセットあたり 20、プロジェクトあたり 100、グローバルで 500)。ANY_VALUE、COUNTIF、BIT_AND、BIT_OR、BIT_XOR、LOGICAL_AND、LOGICAL_OR などの追加の集計関数が利用可能になり、CROSS/LEFT JOIN UNNEST、INFORMATION_SCHEMA、顧客管理の暗号鍵(CMEK)もサポートされるようになりました。

マテリアライズド ビューへの最新のアプローチ

マテリアライズド ビューはデータベース内の標準的な最適化機能であり、長年存在している機能です。BigQuery マテリアライズド ビューは、より現代的なアプローチを提供し、従来のアプローチの問題点を回避します。主な設計原則には次のものが含まれます。

  • メンテナンス不要: ベーステーブルが変更されるたびに、バックグラウンドでマテリアライズド ビューが再計算されます。ベーステーブルのすべての増分データが自動的にマテリアライズド ビューに追加されます。ユーザー入力は不要です。

  • 常に最新: マテリアライズド ビューは、常にベーステーブル(BigQuery ストリーミング テーブルを含む)の内容と一致します。ベーステーブルが更新、マージ、パーティションの切り捨て、パーティションの有効期限切れによって変更されると、マテリアライズド ビューの影響を受ける部分が BigQuery により無効化され、ベーステーブルの対応する部分が完全に再読み込みされます。パーティション分割されていないマテリアライズド ビューでは、マテリアライズド ビュー全体が無効化され、ベーステーブル全体が再読み込みされます。パーティション分割されているマテリアライズド ビューでは、マテリアライズド ビューの影響を受けるパーティションが無効化され、対応するパーティション全体がベーステーブルから再読み込みされます。追記専用のパーティションは無効化されず、差分モードで読み込まれます。つまり、マテリアライズド ビューに対するクエリによって最新でないデータが返されることは決してありません。

  • スマート チューニング: ソーステーブルに対するクエリまたはクエリの一部がマテリアライズド ビューへのクエリによって解決できる場合は、マテリアライズド ビューを使用するように、BigQuery によってクエリがインテリジェントに書き換えられ(クエリの宛先が変更され)、その結果パフォーマンスと効率が向上します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/materialized_views.max-1800x1800.jpg

BigQuery のお客様は、これまでマテリアライズド ビューをテストし、コスト効率とパフォーマンスの向上に大きな価値を見出しています。

「BigQuery マテリアライズド ビューは、簡単に設定できて使いやすく、何より素晴らしいのはリアルタイムなことです。これにより、すぐに当社の環境下でパフォーマンス向上とコスト削減を実現できました。BigQuery のこの追加機能をとても気に入っています。」 - Wunderkind 解析担当バイス プレジデント Scott Schaen 氏

「大規模なコスト削減が実現するだけでなく、パフォーマンスも格段に改善されます。当社の場合、クエリのレイテンシが非常に重要です。UI によってレポートデータが直接使用されるのですが、UI は 1 日あたり最大 8,000 個の SQL クエリを処理し、各クエリは 1 秒未満で完了する必要があります。マテリアライズド ビューのおかげで、Vertica Reporting クラスタを BigQuery に正常に移行できました。」 -Viant シニア バイス プレジデント兼チーフ アーキテクト Adrian Witas 氏

BigQuery マテリアライズド ビューを使用する

マテリアライズド ビューがどのように機能するか、例を見てみましょう。次の例では、TPC-H 注文テーブルを使用し、マテリアライズド ビューが BI ワークロードに与える影響を示しています。以下の注文テーブルのサイズは 1.5 TB で、パーティション分割もクラスタ化もされていません。以下の簡単なクエリは、1 日ごとの総売上高を調べようとします。これは、多くの企業が日常的にクエリするきわめて一般的なデータです。

https://storage.googleapis.com/gweb-cloudblog-publish/images/query_1.max-700x700.jpg

BigQuery コンソールからは、クエリが 436 GB のデータをスキャンし、実行に 8.4 秒かかったことがわかります。

https://storage.googleapis.com/gweb-cloudblog-publish/images/query_2.max-800x800.jpg

クエリに費やされる時間の大半は、最初の 290 億行のスキャンと最初の集計です。その最初のステップにほとんどの時間を取られているのです。マテリアライズド ビューがこのクエリに与える影響を見てみましょう。

https://storage.googleapis.com/gweb-cloudblog-publish/images/query_3.max-700x700.jpg

元のクエリを取得し、そこからマテリアライズド ビューを作成します。次に、元のベーステーブルを指定したまま、元のクエリを再実行します。マテリアライズド ビューの主要なテナントは、マテリアライズド ビューのメリットを活用できるようにクエリを書き直すオプティマイザーです。必要に応じてご自身でマテリアライズド ビューを指定することも可能ですが、ほとんどの場合は BigQuery オプティマイザーが選択します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/query_4.max-700x700.jpg

元のクエリが 2.3 秒で実行され、処理したデータはたった 2.5 MB です。500 GB 近くをスキャンする必要があった元のクエリと比較してください。ジョブ実行の指標が大幅に改善されています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/query_5.max-800x800.jpg

計算 IO および書き込み IO の最初の入力ステージが実質的に削除されています。これで、クエリの大部分が、実際に結果を一時テーブルに書き込むことに費やされるようになりました。これは大幅な改善と言えるでしょう。何よりも素晴らしいのは、BigQuery でマテリアライズド ビューを使用するときにデータを更新する必要がないことです。ベーステーブルに変更が含まれていても、MV によって返されるデータは常に最新です。BigQuery が、その手間のかかる作業を自動的に代行してくれます。基になるデータが変更されると、BigQuery がデータを自動で更新するため、手動で更新をトリガーする必要はありません(必要に応じて手動での更新も可能です)。

これはきわめて単純な例ではありますが、BigQuery のマテリアライズド ビューがパフォーマンスを向上させるだけでなく、コストと時間の両面でクエリを大幅に効率化できることを示しています。

BigQuery マテリアライズド ビューの次のステップ

BigQuery マテリアライズド ビューの一般提供が開始され、クエリのコスト最適化とパフォーマンスの向上を実現します。BigQuery マテリアライズド ビューの使い方はいたって簡単です。詳細については、包括的なドキュメントをご覧ください。分析プロジェクトですぐに利用を開始できます。BigQuery を初めてご利用になる場合は、BigQuery サンドボックスでスムーズに開始する方法をご確認いただけます。

-プロダクト マネージャー Vinay Balasubramaniam

投稿先