新しい tail ツールで Cloud Spanner 変更ストリームによる開発を推進
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 オプションをご確認ください。
次のステップ
tail ツールは、開発における迅速なテストとコードのプロトタイピング向けに設計されています。より高いスケーラビリティと信頼性が必要な本番環境のユースケースについては、Dataflow や Kafka コネクタを使用できます。Spanner API を使用して変更ストリームを直接読み取ることもできます。変更ストリームを Dataflow コネクタと統合する方法の詳細については、こちらのブログ投稿をご覧ください。
spanner-change-streams-tail を使えば Spanner 変更ストリームをシンプルかつ簡単にお試しいただけますので、ぜひご活用ください。