BigQuery での Cloud Spanner 連携クエリ使用によりリアルタイム分析が簡単に
Google Cloud Japan Team
※この投稿は米国時間 2021 年 8 月 27 日に、Google Cloud blog に投稿されたものの抄訳です。
マーケット シェアの獲得をめぐって競い合う企業の間では、リアルタイムの分析情報が重要であることから、データ分析をサポートするトランザクション データベースの需要が高まっています。迅速な意思決定につながる情報をダッシュボードに表示する、トランザクション データベースに保存されているルックアップ テーブルに対して分析を行う、複雑なハイブリッドのトランザクション分析ワークロードを実行するなど、さまざまな目的のためにトランザクション データベース内の大量のデータを分析する需要は増すばかりです。
Cloud Spanner は、Google Cloud が提供する、トランザクション ワークロード向けのフルマネージド リレーショナル データベースです。BigQuery で使用する Cloud Spanner 連携クエリ機能がこのたび一般提供となり、Cloud Spanner がさらに強化されます。BigQuery は、Google Cloud が提供するサーバーレスで高度にスケーラブルな、市場をリードするマルチクラウド データ ウェアハウスです。複数のソースからデータをまとめられるため、分析が容易になります。Cloud Spanner の BigQuery 連携機能により、Cloud Spanner 内のデータを移動もコピーもせずにリアルタイムでクエリできるため、オペレーション データと分析との間のギャップを解消し、統一されたデータ ライフサイクルを実現できます。
これまでも、Dataflow などのツールを使用して Cloud Spanner から BigQuery にデータをコピーすることは可能でした。しかし今後は、こういった ETL ワークフローを設定していない場合、または Cloud Spanner 内のデータをすばやく検索することだけが必要な場合でも、BigQuery でサポートされるクエリ連携機能により、Cloud Spanner に保存されているデータに対してリアルタイムのクエリを実行できるようになりました。
この投稿では、Cloud Spanner に保存されているデータにアクセスする連携クエリを BigQuery に設定する方法を紹介します。
連携クエリを実行する方法
あるオンライン小売業者が、Cloud Spanner を使用してショッピング トランザクションを保存しているとします。この小売業者はすでに Customer 360 アプリケーションを BigQuery に組み込んでいます。この小売業者は、連携クエリを使用することで、Cloud Spanner から BigQuery にデータをコピーすることなく、顧客のショッピング トランザクションを Customer 360 アプリケーションに含めることができます。
Cloud Spanner に保存されているショッピング トランザクションを含める Customer 360 クエリを BigQuery で実行する手順は、次のとおりです。
BigQuery を起動して、ショッピング トランザクションのデータベースを含んでいる Cloud Spanner インスタンスが含まれる Google Cloud プロジェクトを選択します。
外部データソースの設定を BigQuery で Cloud Spanner のショッピング データベースに対して行います。この設定には、bigquery.admin 権限が必要です。
Cloud Spanner データソース内のショッピング データにアクセスするクエリを BigQuery で作成します。他のユーザーも BigQuery からこの外部データソースにアクセスできるようにするには、作成した接続リソースを使用するための権限をそれらのユーザーに付与します。
外部データソースの設定
Cloud Spanner 外部データソースを設定するには、[データを追加]、[外部データソース] の順に選択します。
ここから、Cloud Spanner データベースの接続設定を追加します。
Cloud Spanner データソースにアクセスするクエリの作成
作成した外部データソースは、BigQuery Explorer に、プロジェクトの外部接続の一つとして表示されます。
ここでは、単に EXTERNAL_QUERY 関数を使用して、クエリ ステートメントを Cloud Spanner に送信します。このとき、Cloud Spanner のネイティブ SQL 言語を使用します。結果は、BigQuery 標準 SQL データ型に変換され、BigQuery の他のデータと結合できるようになります。
EXTERNAL_QUERY を使用する際の構文は次のとおりです。
Connection_id(文字列): Cloud Spanner データベース接続リソースの名前。形式: projects/projectID/locations/us/connections/ConnectionID。ConnectionID は、外部データソースを設定したときに作成した接続 ID です。
external_database_query(文字列): Cloud Spanner の SQL 言語による読み取り専用クエリ。このクエリは Cloud Spanner で実行され、BigQuery にテーブルとして返されます。
例:
このように仕組みはとてもシンプルです。Cloud Spanner から BigQuery にデータをコピーする必要がありません。EXTERNAL_QUERY がすべてを行います。そのうえ、EXTERNAL_QUERY は BigQuery 内の他のテーブルと同様のテーブルを返すため、返されたテーブルに JOIN を実行する、そのテーブルをマテリアライズド ビューや承認済みビューに追加する、そのテーブルのデータをダッシュボードに入力するといった操作を行うことができます。BigQuery のスケジューラを使用してこのクエリをスケジュールすることさえできます。
BigQuery で Cloud Spanner 連携クエリを使用するメリット
クエリ連携を使用する場合、クエリは Cloud Spanner によって実行され、結果は BigQuery にテーブルとして返されます。
データへのアクセスはリアルタイムで行われます。最新のデータを使用するために ETL ジョブの完了を待つ必要はありません。
クエリは Cloud Spanner によって実行されるため、Cloud Spanner 内で行う場合と同じクエリ オプティマイザーと SQL 機能を利用できます。Cloud Spanner の PartitionQuery 機能を利用することもできます。
使用するうちにわかってくることですが、EXTERNAL_QUERY は、BigQuery の強力な分析機能の利点を活用する負荷の高い分析よりも、Cloud Spanner テーブルに対する検索や簡単な分析に有用です。
以下に示すように、負荷の高い分析の場合でも EXTERNAL_QUERY を使用して、ETL ジョブを作成するのではなく、BigQuery にデータをコピーして、BigQuery で分析を行うこともできます。
詳細
Cloud Spanner の利用を開始するには、インスタンスを作成するか、Spanner Qwik Start でお試しください。
BigQuery での Cloud Spanner 連携クエリの使用の詳細については、ドキュメントをご覧ください。
-Cloud Spanner プロダクト マネージャー Mark Donsky