代表的な面接トピック

データエンジニアリング面接:BigQuery CDCテーブルの鮮度監視

データ難しい
Offer.cc 編集チーム公開日 更新日

質問

あるBigQuery CDCテーブルに`max_staleness`が設定されています。ダッシュボードが許容される古いベースラインを読み取ることがある一方で、保留中の変更をマージする際に他のクエリが遅くなります。適用の進行状況を監視し、これらの状態をどのように区別しますか?

プロンプトとコンテキスト

BigQueryのチェンジデータキャプチャ(CDC)テーブルで設定されたmax_staleness内では、ダッシュボードは許容される古いベースラインを通常のレイテンシで読み取ることができます。保留中の変更がそのウィンドウを超えて古くなると、クエリ時のマージにより高レイテンシで最新の結果を返すようになります。課題は、プラットフォーム自身のウォーターマークとジョブメトリクスを使用して、これらの状態とバックグラウンド適用のバックログを区別することです。

面接官が評価するポイント

  • upsert_stream_apply_watermarkによる適用済み進行状況の測定。
  • 許容される古さ、バックグラウンド適用のバックログ、ランタイムマージの切り分け。
  • 不足しているバックグラウンドキャパシティとユーザークエリのレイテンシとの関連付け。
  • ノイズの多い単一サンプルではなく、ビジネスしきい値と継続時間に基づいたアラート通知。

回答前の明確化

ビジネスの許容範囲、各テーブルのmax_staleness、書き込みピーク、バックグラウンド予約、ダッシュボードの頻度を確定させます。CDCの削除はウォーターマークがその書き込み時刻を通過した後にのみ適用されるため、削除目標も含めます。

30秒の回答フレームワーク

INFORMATION_SCHEMA.TABLES.upsert_stream_apply_watermarkをポーリングし、now - watermarkをテーブル構成およびビジネスしきい値の両方と比較します。これをバックグラウンド適用のP95、キューイングおよび失敗、さらにランタイムマージの回数とクエリレイテンシに関連付けます。持続的なウォーターマーク違反がリソースの飽和またはユーザーへの影響と組み合わさった場合にのみページャーを鳴らします。

ステップバイステップの詳細解説

データプロダクトごとに低カーディナリティのメトリクスを作成します:ウォーターマークの経過時間、max_staleness、バックグラウンド適用のP95、失敗、ランタイムマージクエリ。設定されたウィンドウ内では、クエリはベースラインを読み取ることができます。それを超えると、BigQueryはクエリ時に保留中の変更をマージする場合があり、レイテンシが増加します。そのランタイムマージによってウォーターマークが進むことはありません。

2段階のゲートを使用します。ビジネスしきい値の2回連続違反で警告を作成し、予約の飽和、適用のタイムアウト、またはダッシュボードのレイテンシが発生した場合にページャー発報へ昇格させます。ソースのハートビートによって、新規データなしと適用バックログを区別します。

書き込み、バックグラウンドジョブ、キャパシティ、ランタイムマージの順に診断します。その後、バックグラウンドキャパシティの追加、入力の平滑化、またはウィンドウの見直しを行います。アラートを静かにさせるためだけにビジネス目標を緩和してはなりません。

優れた回答例

適用されたウォーターマークが主要なシグナルであり、適用ジョブとクエリマージがそれを説明します。毎分、ウォーターマークの経過時間をSLOおよびテーブルオプションと比較し、適用P95、キャパシティ、クエリのテールレイテンシを関連付けます。

復旧には、ウォーターマークが追いつき、ランタイムマージが減少し、ダッシュボードのレイテンシが正常化することが必要です。ピーク負荷の再現テストによって、追加されたヘッドルームを証明します。

よくある間違い

  • 成功した書き込みやグリーンのパイプラインジョブのみを監視すること。
  • イベント時間をBigQueryの適用済みウォーターマークとして扱うこと。
  • ランタイムマージによってウォーターマークが進むと想定すること。
  • アラートを消すためだけにmax_stalenessを増やすこと。
  • ソースハートビートを欠いていること。

フォローアップ質問

ランタイムマージによってクエリが遅くなるのはなぜですか?

最新の結果を返すために、クエリがベースラインデータと保留中の変更をマージし、追加の時間とコンピュートを消費するためです。

ウォーターマークがnullの場合はどうなりますか?

CDC構成、最近の変更、およびバックグラウンドジョブを確認します。不明な状態をラグがゼロであると見なすのではなく、独自の独立した状態として扱います。

CDCの削除はいつ適用されますか?

upsert_stream_apply_watermarkが削除のストリーミングされたタイムスタンプを通過した後にのみ適用されます。

スケーリングが機能したことをどのように証明しますか?

代表的なピーク負荷の下で、適用P95、ウォーターマークの経過時間、ランタイムマージ数、およびダッシュボードのテールレイテンシがすべて同時に改善することを要求します。

公開情報ソース

関連する質問