Zenn Tech Blog
🧪

統計ダッシュボード機能を BigQuery と BI Engine で実装する

に公開6
Zenn Tech Blog
Zenn Tech Blog

Discussion

ikuwowikuwow

BigQueryへアプリケーションから直接繋ぐのは避けていたんですが、意外とできてしまうものなのですね!
jobの同時実行数などは問題ないのか気になりました。

waddy_uwaddy_u

コメントありがとうございます。そうですね、実行数が増えると待ちが発生する認識があったため、同一条件による結果の取得はZenn側のDBに保存してキャッシュが効くようにしています。いまのところ大丈夫そうです。

jobの同時実行数

これってプロジェクト単位とかで上限あるということですかね?ドキュメントとかご存知でしょうか。わたしはドンピシャなドキュメントが見つけられず 🤔
https://cloud.google.com/bigquery/docs/query-queues?hl=ja#set_the_maximum_concurrency_target

ikuwowikuwow

やはりキャッシュは有効そうですね! ありがとうございます。

jobの同時実行数

軽くみてみたところ、APIを直接叩く場合は以下の値に注意が必要かなと想像しました!
https://cloud.google.com/bigquery/quotas?hl=ja

  • BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト
    • 実行数が増えると待ちが発生する
  • クエリジョブ:キューに追加できるインタラクティブ クエリの最大数 クエリ 1,000 件
    • こちらはBI Engineで処理が完結する場合は関係ある?
waddy_uwaddy_u

ありがたいですありがたいです、ありがとうございます。

BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト

あーーこちらノーチェックでした。感謝します。APIのレート制限がありましたか…この「ユーザー」というのがCloud Runのサービスアカウントのことだとすると、そうですね、一気にたくさん呼ばれるとひっかかる可能性がありますね。キャッシュしておいてよかった…

クエリジョブ:キューに追加できるインタラクティブ クエリの最大数

こちらも関係ありそうです!Zennの場合は、ある程度の待ち時間を覚悟いただくことを前提に「バッチクエリ」を利用しているはずです。なので、

キューに追加できるバッチクエリの最大数 20,000 クエリ

適用されるのはこっちかもしれません 🤔

アプリから直接つなぐ場合、このあたりのリミットは意識しておく必要がありますね。インプットしていただいたことでこの先慌てなくて済みそうです。感謝です。

いま、メトリクスを見てみたのですが(合ってるかどうか微妙)同時実行数らしき指標はだいたい1〜3で推移していました。キャッシュがいい感じに効いていそうです。

ikuwowikuwow

だいぶ実行数少なく済んでますね!
こちらの記事にはアプリからBigQuery APIを直接叩く勇気をもらい、非常に参考になりました。いい情報をありがとうございます!

waddy_uwaddy_u

めっちゃわかります!アプリから直接使いたい方を後押しできればという気持ちでこの記事を書いたので嬉しいです!
なんか踏んだらぜひ教えて下さい 😂