Zenn Tech BlogPublication Pro🧪統計ダッシュボード機能を BigQuery と BI Engine で実装するwaddy_u2023/07/28に公開6件Google CloudBigQuerytechZenn Tech BlogPublication Proクラスメソッド株式会社 Zennチームのテックブログです。Zennの開発・運用にまつわる技術的な知見を投稿します。主な技術スタックは React / Next.js / TypeScript / Ruby on Rails / Google Cloud などです。Discussionikuwow2024/12/05BigQueryへアプリケーションから直接繋ぐのは避けていたんですが、意外とできてしまうものなのですね! jobの同時実行数などは問題ないのか気になりました。 waddy_u2024/12/06コメントありがとうございます。そうですね、実行数が増えると待ちが発生する認識があったため、同一条件による結果の取得はZenn側のDBに保存してキャッシュが効くようにしています。いまのところ大丈夫そうです。 jobの同時実行数 これってプロジェクト単位とかで上限あるということですかね?ドキュメントとかご存知でしょうか。わたしはドンピシャなドキュメントが見つけられず 🤔 https://cloud.google.com/bigquery/docs/query-queues?hl=ja#set_the_maximum_concurrency_target ikuwow2024/12/06やはりキャッシュは有効そうですね! ありがとうございます。 jobの同時実行数 軽くみてみたところ、APIを直接叩く場合は以下の値に注意が必要かなと想像しました! https://cloud.google.com/bigquery/quotas?hl=ja BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト 実行数が増えると待ちが発生する クエリジョブ:キューに追加できるインタラクティブ クエリの最大数 クエリ 1,000 件 こちらはBI Engineで処理が完結する場合は関係ある? waddy_u2024/12/06に更新ありがたいですありがたいです、ありがとうございます。 BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト あーーこちらノーチェックでした。感謝します。APIのレート制限がありましたか…この「ユーザー」というのがCloud Runのサービスアカウントのことだとすると、そうですね、一気にたくさん呼ばれるとひっかかる可能性がありますね。キャッシュしておいてよかった… クエリジョブ:キューに追加できるインタラクティブ クエリの最大数 こちらも関係ありそうです!Zennの場合は、ある程度の待ち時間を覚悟いただくことを前提に「バッチクエリ」を利用しているはずです。なので、 キューに追加できるバッチクエリの最大数 20,000 クエリ 適用されるのはこっちかもしれません 🤔 アプリから直接つなぐ場合、このあたりのリミットは意識しておく必要がありますね。インプットしていただいたことでこの先慌てなくて済みそうです。感謝です。 いま、メトリクスを見てみたのですが(合ってるかどうか微妙)同時実行数らしき指標はだいたい1〜3で推移していました。キャッシュがいい感じに効いていそうです。 ikuwow2024/12/06だいぶ実行数少なく済んでますね! こちらの記事にはアプリからBigQuery APIを直接叩く勇気をもらい、非常に参考になりました。いい情報をありがとうございます! waddy_u2024/12/06めっちゃわかります!アプリから直接使いたい方を後押しできればという気持ちでこの記事を書いたので嬉しいです! なんか踏んだらぜひ教えて下さい 😂 返信を追加
ikuwow2024/12/05BigQueryへアプリケーションから直接繋ぐのは避けていたんですが、意外とできてしまうものなのですね! jobの同時実行数などは問題ないのか気になりました。 waddy_u2024/12/06コメントありがとうございます。そうですね、実行数が増えると待ちが発生する認識があったため、同一条件による結果の取得はZenn側のDBに保存してキャッシュが効くようにしています。いまのところ大丈夫そうです。 jobの同時実行数 これってプロジェクト単位とかで上限あるということですかね?ドキュメントとかご存知でしょうか。わたしはドンピシャなドキュメントが見つけられず 🤔 https://cloud.google.com/bigquery/docs/query-queues?hl=ja#set_the_maximum_concurrency_target ikuwow2024/12/06やはりキャッシュは有効そうですね! ありがとうございます。 jobの同時実行数 軽くみてみたところ、APIを直接叩く場合は以下の値に注意が必要かなと想像しました! https://cloud.google.com/bigquery/quotas?hl=ja BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト 実行数が増えると待ちが発生する クエリジョブ:キューに追加できるインタラクティブ クエリの最大数 クエリ 1,000 件 こちらはBI Engineで処理が完結する場合は関係ある? waddy_u2024/12/06に更新ありがたいですありがたいです、ありがとうございます。 BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト あーーこちらノーチェックでした。感謝します。APIのレート制限がありましたか…この「ユーザー」というのがCloud Runのサービスアカウントのことだとすると、そうですね、一気にたくさん呼ばれるとひっかかる可能性がありますね。キャッシュしておいてよかった… クエリジョブ:キューに追加できるインタラクティブ クエリの最大数 こちらも関係ありそうです!Zennの場合は、ある程度の待ち時間を覚悟いただくことを前提に「バッチクエリ」を利用しているはずです。なので、 キューに追加できるバッチクエリの最大数 20,000 クエリ 適用されるのはこっちかもしれません 🤔 アプリから直接つなぐ場合、このあたりのリミットは意識しておく必要がありますね。インプットしていただいたことでこの先慌てなくて済みそうです。感謝です。 いま、メトリクスを見てみたのですが(合ってるかどうか微妙)同時実行数らしき指標はだいたい1〜3で推移していました。キャッシュがいい感じに効いていそうです。 ikuwow2024/12/06だいぶ実行数少なく済んでますね! こちらの記事にはアプリからBigQuery APIを直接叩く勇気をもらい、非常に参考になりました。いい情報をありがとうございます! waddy_u2024/12/06めっちゃわかります!アプリから直接使いたい方を後押しできればという気持ちでこの記事を書いたので嬉しいです! なんか踏んだらぜひ教えて下さい 😂 返信を追加
waddy_u2024/12/06コメントありがとうございます。そうですね、実行数が増えると待ちが発生する認識があったため、同一条件による結果の取得はZenn側のDBに保存してキャッシュが効くようにしています。いまのところ大丈夫そうです。 jobの同時実行数 これってプロジェクト単位とかで上限あるということですかね?ドキュメントとかご存知でしょうか。わたしはドンピシャなドキュメントが見つけられず 🤔 https://cloud.google.com/bigquery/docs/query-queues?hl=ja#set_the_maximum_concurrency_target
ikuwow2024/12/06やはりキャッシュは有効そうですね! ありがとうございます。 jobの同時実行数 軽くみてみたところ、APIを直接叩く場合は以下の値に注意が必要かなと想像しました! https://cloud.google.com/bigquery/quotas?hl=ja BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト 実行数が増えると待ちが発生する クエリジョブ:キューに追加できるインタラクティブ クエリの最大数 クエリ 1,000 件 こちらはBI Engineで処理が完結する場合は関係ある?
waddy_u2024/12/06に更新ありがたいですありがたいです、ありがとうございます。 BigQuery API: メソッドごとのユーザーごとの 1 秒あたりの API リクエストの最大数 100 件のリクエスト あーーこちらノーチェックでした。感謝します。APIのレート制限がありましたか…この「ユーザー」というのがCloud Runのサービスアカウントのことだとすると、そうですね、一気にたくさん呼ばれるとひっかかる可能性がありますね。キャッシュしておいてよかった… クエリジョブ:キューに追加できるインタラクティブ クエリの最大数 こちらも関係ありそうです!Zennの場合は、ある程度の待ち時間を覚悟いただくことを前提に「バッチクエリ」を利用しているはずです。なので、 キューに追加できるバッチクエリの最大数 20,000 クエリ 適用されるのはこっちかもしれません 🤔 アプリから直接つなぐ場合、このあたりのリミットは意識しておく必要がありますね。インプットしていただいたことでこの先慌てなくて済みそうです。感謝です。 いま、メトリクスを見てみたのですが(合ってるかどうか微妙)同時実行数らしき指標はだいたい1〜3で推移していました。キャッシュがいい感じに効いていそうです。
Discussion
BigQueryへアプリケーションから直接繋ぐのは避けていたんですが、意外とできてしまうものなのですね!
jobの同時実行数などは問題ないのか気になりました。
コメントありがとうございます。そうですね、実行数が増えると待ちが発生する認識があったため、同一条件による結果の取得はZenn側のDBに保存してキャッシュが効くようにしています。いまのところ大丈夫そうです。
これってプロジェクト単位とかで上限あるということですかね?ドキュメントとかご存知でしょうか。わたしはドンピシャなドキュメントが見つけられず 🤔
やはりキャッシュは有効そうですね! ありがとうございます。
軽くみてみたところ、APIを直接叩く場合は以下の値に注意が必要かなと想像しました!
ありがたいですありがたいです、ありがとうございます。
あーーこちらノーチェックでした。感謝します。APIのレート制限がありましたか…この「ユーザー」というのがCloud Runのサービスアカウントのことだとすると、そうですね、一気にたくさん呼ばれるとひっかかる可能性がありますね。キャッシュしておいてよかった…
こちらも関係ありそうです!Zennの場合は、ある程度の待ち時間を覚悟いただくことを前提に「バッチクエリ」を利用しているはずです。なので、
適用されるのはこっちかもしれません 🤔
アプリから直接つなぐ場合、このあたりのリミットは意識しておく必要がありますね。インプットしていただいたことでこの先慌てなくて済みそうです。感謝です。
いま、メトリクスを見てみたのですが(合ってるかどうか微妙)同時実行数らしき指標はだいたい1〜3で推移していました。キャッシュがいい感じに効いていそうです。
だいぶ実行数少なく済んでますね!
こちらの記事にはアプリからBigQuery APIを直接叩く勇気をもらい、非常に参考になりました。いい情報をありがとうございます!
めっちゃわかります!アプリから直接使いたい方を後押しできればという気持ちでこの記事を書いたので嬉しいです!
なんか踏んだらぜひ教えて下さい 😂