RDSからBigQueryへのデータ同期で知っておきたいmax_staleness
RDSからBigQueryへのデータ同期で知っておきたいmax_staleness
Google Cloud の Datastream を利用して、AWS の RDS データベースから BigQuery にデータを同期するケースを考えます。
参考:Datastream for BigQuery のご紹介
RDS のリードレプリカのように、データの変更が即座に BigQuery に反映されるわけではありません。この反映タイミングについては、以下のドキュメントが参考になります。
テーブルの未更新を管理する
BigQuery のmax_staleness
オプションで、最新のデータを取得する必要がない場合にクエリのコストや処理時間を削減できるようです。
max_staleness
を設定すると、BigQuery はその間隔(例: 15分や30分)内に 最低1回 はテーブルに変更内容を適用します。
つまり、間隔内の変更はまとめて適用される可能性があります。このことで頻繁な更新に伴う計算コストを削減します。
ただし、間隔内の変更をまとめて適用するので、リアルタイム性が求められるユースケースには適しません。
max_staleness とは
max_staleness
オプションはどこで設定できるのでしょうか?
Google Cloud のコンソール画面には、この項目が見当たりませんが、
Datastream のストリーム作成時に指定するあの値 のことです。
以下が設定画面の例です。
デフォルトでは 15分 に設定されています。
BigQuery 側に出来たテーブルの max_staleness
の値は、ストリーム作成時に指定された、この値になってます。
max_staleness の確認
BigQuery に作成されたテーブルの max_staleness
を確認するには、次の SQL を使用します。
例として、sales_data
データセットの foods
テーブルの値を取得します。
SELECT
option_name,
option_value
FROM
sales_data.INFORMATION_SCHEMA.TABLE_OPTIONS
WHERE
option_name = 'max_staleness'
AND table_name = 'foods';
max_staleness の変更
テーブルの max_staleness
を変更するには、以下の SQL を実行します。
例として、demo_sales_project
プロジェクトの sales_data
データセットにある foods
テーブルの max_staleness
を 30分 に変更します。
ALTER TABLE demo_sales_project.sales_data.foods
SET OPTIONS (
max_staleness = INTERVAL 30 MINUTE);
以上が max_staleness
の簡単な概要と操作方法です。
Discussion