コンテンツに移動
Spanner

Cloud Spanner の変更ストリーム、一般提供を開始

2022年5月28日
Google Cloud Japan Team

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

今年の Google Data Cloud Summit では、Cloud Spanner の変更ストリームに関する発表がありました。本日、変更ストリームの一般提供を開始したことをお知らせいたします。変更ストリームを使用して、変更(挿入、更新、削除)の追跡とストリーミングをほぼリアルタイムで Cloud Spanner データベースから実行できます。

変更ストリームは、変更データを他の Google Cloud サービスと統合するために幅広いオプションを提供しています。一般的なユースケースは次のとおりです。

  • アナリティクス: 常に最新のデータを使用して BigQuery でアナリティクスを実行するために、BigQuery に変更イベントを送信する。

  • イベントのトリガー: ダウンストリーム システムによってさらなる処理を行うために、Pub/Sub にデータ変更イベントを送信する。

  • コンプライアンス: アーカイブ目的で、Google Cloud Storage に変更イベントを保存する。

変更ストリームを使ってみる

このセクションでは、変更ストリームの作成、変更ストリーム データの読み取り、アナリティクスのための BigQuery へのデータの送信の簡単な例を示します。

まだの場合は、Spanner Qwiklab で Cloud Spanner の概要をご確認ください。

変更ストリームを作成する

テーブルやインデックスと同じように、Spanner の変更ストリームは DDL を使って作成します。変更ストリームの DDL には、他のスキーマ変更(spanner.databases.updateDdl)と同じ IAM 権限が必要です。

変更ストリームでは、一連の列、一連のテーブル、またはデータベース全体の変更を追跡できます。各変更ストリームには 1~7 日間の保持期間を設定できます。また、複数の変更ストリームを設定して、特定の目標に必要な変更を正確に追跡することもできます。  変更ストリームの作成と管理の詳細については、こちらをご覧ください。

次のような「Orders」というテーブルがあるとします。

読み込んでいます...

保持期間をデフォルトの 1 日のままに(暗黙的に)設定した Orders テーブル全体を追跡する変更ストリームを作成するための DDL は次のように定義します。

読み込んでいます...

変更ストリームの作成には長時間かかります。作成の進捗状況は Cloud コンソールの変更ストリーム ページで確認できます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_Change_streams.max-900x900.jpg

作成が完了した変更ストリームの名前をクリックすると詳細が表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_Change_streams.max-1000x1000.jpg

データベース DDL は以下のようになります。

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

これで変更ストリームの作成は完了したので、変更ストリーム データを処理できます。

BigQuery へのデータのストリーミング

変更ストリーム データを処理する方法は複数あります。最も簡単なのが、Apache Beam 用 Spanner コネクタを使用する方法です。この方法では、Google Cloud Dataflow 用のスケーラブルなデータ処理パイプラインを構築できます。変更データを処理し、BigQuery または Google Cloud Storage にそれぞれ変更データを書き込むための Dataflow テンプレートが用意されています。Cloud Spanner の変更ストリームと Dataflow の連携の仕組みについてはこちらをご覧ください。

こちらの例では、Spanner change streams to BigQuery テンプレートを使用して変更ストリーム データを BigQuery に書き込みます。

まず、Google Cloud コンソールでプロジェクトの Dataflow ジョブページに移動します。[テンプレートからジョブを作成] をクリックし、Change streams to BigQuery テンプレートを選択して必須項目に入力します。

https://storage.googleapis.com/gweb-cloudblog-publish/images/4_Change_streams.max-1600x1600.jpg

[ジョブを実行] をクリックし、Dataflow でパイプラインが構築され、ジョブが起動されるまで待ちます。Dataflow パイプラインが実行されると、ジョブグラフ、実行の詳細、指標が Dataflow ジョブページに表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/5_Change_streams.max-1300x1300.jpg

次に、追跡対象テーブルである Orders にデータを書き込んでみましょう。

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

変更ストリームが追跡しているデータセット内でデータの変更が Spanner によって検出されると、同じトランザクション内でそのデータ変更と同期する形でデータ変更レコードが書き込まれる仕組みになっています。Spanner によってこれらの書き込みが両方とも同じ場所に配置され、同じサーバーで処理されることで書き込み処理が最小限に抑えられます。Spanner の変更ストリームの書き込みと格納の仕組みについてはこちらをご覧ください。

BigQuery データセットを表示すると、変更ストリーム レコードの追加情報とともに、挿入したばかりの行が表示されます。

https://storage.googleapis.com/gweb-cloudblog-publish/images/7_Change_streams.max-600x600.jpg

これで準備は完了です。Dataflow パイプラインが実行されている限り、追跡対象テーブルのデータ変更はシームレスに BigQuery データセットにストリーミングされます。パイプラインのモニタリングの詳細についてはこちらをご覧ください。

変更ストリーム データのその他の処理方法

BigQuery と Google Cloud Storage 用として Google が提供している Dataflow テンプレートを使用する代わりに、カスタムの Dataflow パイプラインを構築して Apache Beam で変更データを処理することもできます。このために、DataChangeRecord オブジェクトの Apache Beam PCollection として変更データを出力する SpannerIO Dataflow コネクタが用意されています。独自のデータ変換を定義する場合や、BigQuery または Google Cloud Storage とは異なるシンクが必要な場合に最適です。変更ストリーム データの使用と転送を行うカスタム Dataflow パイプラインの作成方法についてはこちらをご覧ください。

Spanner API を使用して変更ストリームを処理することもできます。レイテンシの影響を受けやすいアプリケーションに特に適したこのアプローチでは Dataflow を利用しません。Spanner API は変更ストリームから直接読み取って独自のコネクタを実装し、任意のパイプラインに変更をストリーミングできる高度なインターフェースです。Spanner API では変更ストリームが複数のパーティションに分割されます。各パーティションを使用して、変更ストリームのクエリを並行して実行することでスループットを向上できます。Spanner は負荷とサイズに基づいてこれらのパーティションを動的に作成します。各パーティションは Spanner のデータベース スプリットに関連付けられ、変更ストリームが Spanner の他の部分と同じように簡単にスケーリングできるようにします。変更ストリーム クエリ API の使用に関する詳細はこちらをご覧ください。

次のステップ

本日より、すべてのお客様に追加コストなしで Spanner の変更ストリームをご利用いただけます。変更ストリーム データが消費する追加のコンピューティングとストレージにのみ通常の Spanner 料金が課金されます。変更ストリームは Spanner に直接組み込まれているため、ソフトウェアをインストールする必要はありません。また、外部整合性と業界屈指の可用性というメリットが得られるだけでなく、データベースの他の部分とともに容易にスケールできます。

変更ストリームの概要をこちらでご確認いただき、変更ストリームの利用開始をぜひご検討ください。

- ソフトウェア エンジニア Le Chang
- ソフトウェア エンジニア Yang Song

投稿先