コンテンツに移動
データベース

新しい tail ツールで Cloud Spanner 変更ストリームによる開発を推進

2023年3月29日
Google Cloud Japan Team

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

Cloud Spanner 変更ストリームは、Spanner データベースから変更データを収集してストリーミングするための柔軟でスケーラブルなメカニズムです。この変更ストリームを BigQuery や Pub/Sub などのダウンストリーム システムと統合することで、Spanner データベースで発生する増分データの変更を処理し、アナリティクス、イベントのトリガーなどの多くのユースケースを実現できます。

このたび、Cloud Spanner Ecosystem において spanner-change-streams-tail と呼ばれる新しいオープンソース ツールがリリースされましたのでお知らせします。これで、Dataflow パイプラインを統合することなく、ローカルマシンで変更ストリームに対して「tail -f」を実行できるようになります。このツールを使用すれば、変更ストリームの仕組みと、取得したデータの表示形式を把握できます。

このブログ投稿では、このツールを使用して Spanner 変更ストリームを表示する方法について説明します。では始めましょう。

変更ストリームを設定する

この例では、次のテーブルと変更ストリームを使用します。

読み込んでいます...

Spanner データベースの作成に関するドキュメントを参照してデータベースをセットアップし、この DDL を使用してテーブルを作成します。

spanner-change-streams-tail を実行する

次の Go コマンドを実行して、spanner-change-streams-tail をインストールします。Go をインストールしていない場合は、インストール ページの手順に沿って Go ツールチェーンをインストールします。

読み込んでいます...

次に、spanner-change-streams-tail の認証と許可のための gcloud コマンドを実行します。

読み込んでいます...

これで、spanner-change-streams-tail を使用できるようになりました。次のコマンドを実行して、変更ストリームの読み取りを開始します。

読み込んでいます...

新しいターミナルを開いて、テーブルに行を挿入してみましょう。

読み込んでいます...

spanner-change-streams-tail ターミナルに変更ストリームの取得済みデータがすぐに表示されます。

読み込んでいます...

変更ストリームをリアルタイムに表示できるようになったので、他にもいくつかの DML ステートメントをテーブルに実行して、変更ストリームから収集されるデータを確認してみましょう。UPDATE ステートメントと DELETE ステートメントによって生成される変更データの例は次のとおりです。

読み込んでいます...

出力をカスタマイズする

デフォルトでは、spanner-change-streams-tail はログをテキスト形式で出力しますが、「-f json」オプションを指定することで、JSON 形式で出力するように変更できます。このオプションを指定すると、jq などの JSON 対応ツールを使用して出力をカスタマイズできます。

読み込んでいます...

その他のオプションについては、README をご覧ください。

Go コードから変更ストリームを読み取る

独自の Go コードを作成して、目的に合わせて変更ストリームを読み取ることで、テキスト形式または JSON 以外の形式でも変更ストリームを表示できます。spanner-change-streams-tail は、変更ストリームを読み取るプログラムを Go で作成するのに役立つ Go パッケージを提供しています。

データ変更に関する commit タイムスタンプ、mod タイプ、影響を受けるテーブル名をコンソールに出力する簡単な例を見てみましょう。

読み込んでいます...

変更ストリーム パーティションを表示する

Spanner 変更ストリームの重要なコンセプトの一つは、変更ストリーム レコードを内容に持つ変更ストリーム パーティションです。変更ストリーム パーティションは、データベースのデータ スプリットに伴い、動的に分割および結合されます。

spanner-change-streams-tail は、変更ストリーム パーティションのリネージを Graphviz DOT 形式で表示できます。これは、変更ストリームを読み取るアプリケーションをデバッグしているときに役立ちます。

指定された期間中に変更ストリーム パーティションがどのように分割および結合されたかを把握できます。

変更ストリーム パーティションを可視化する方法について詳しくは、--visualize-partitions オプションをご確認ください。

https://storage.googleapis.com/gweb-cloudblog-publish/images/image_1_wiD7o7z.max-1500x1500.jpg

次のステップ

tail ツールは、開発における迅速なテストとコードのプロトタイピング向けに設計されています。より高いスケーラビリティと信頼性が必要な本番環境のユースケースについては、DataflowKafka コネクタを使用できます。Spanner API を使用して変更ストリームを直接読み取ることもできます。変更ストリームを Dataflow コネクタと統合する方法の詳細については、こちらのブログ投稿をご覧ください。

spanner-change-streams-tail を使えば Spanner 変更ストリームをシンプルかつ簡単にお試しいただけますので、ぜひご活用ください。


- テクニカル ソリューション エンジニア Yuki Furuyama
投稿先