バッジ - データ構造 /モデル?
-
12-10-2019 - |
質問
さまざまなバッジを処理するために、データベースやモデルをどのように設定するかを把握しようとしています。スタックオーバーフローを取りましょう バッジ 例として。それぞれに異なるルールがあり、いくつかは単なる変動的な異なるものかもしれません(10コメント対100コメントなど)。
私の質問は、アプリケーション内でこのタイプの検証/チェックをどのように設定するのですか?各バッジには独自の方法が必要ですか?
解決
SQL Server、SQL Server AgentのジョブはSQL Serverを実行して、定期的に実行して統計を集計します。ジョブのストアドプロシージャは、基準が満たされたときにバッジ/などのテーブルに挿入されます。
トリガーは別のオプションですが、複数のユーザーの範囲で実行を遅らせることはできません。
他のヒント
それが私がする必要がある場合、私がそれを実装する方法です:
キューマネージャー(そのようなソフトウェアがたくさんあります)を設定し、ブローカーを書き込み、キューからメッセージを処理します。
次のようなイベントが発生するたびに、トピックを表示し、コメントを編集し、回答を編集し、別の人の回答を編集しました。はい、そうなるでしょう 本当 そこに大量のメッセージ。
その膨大な量のメッセージを収集した後、スケジュールまたはリアルタイムでメッセージを処理するブローカーを開始できます。
このスキーマを使用すると、ブローカーを必要に応じて複雑なバッジに拡張できます。
いくつかはリアルタイムで計算されると想像しますが、他のものは断続的に実行されるプロセスで計算されます。
たとえば、回答が10のアップボートを取得したときに表示されるバッジの場合、パフォーマンスのヒットはほとんどなくリアルタイムで計算できます。
一方、毎日の評判Cap x回数に達した場合にチェックするバッジの場合、毎日の終わりにのみチェックするので、おそらく何らかのバッチジョブとしてそれをしたいと思うでしょう。
重要な懸念は、物事を速く走らせることです。 Stack Overflowは、おそらく数十万のコメントで、1日に数千(おそらく数万)の質問を受け取ります。計算が些細なことではないものはすべて、別のプロセスで実行する必要があります。コア機能をしっかりと制限し、清潔に保ち、高性能を可能にします。コア投稿システムの外でプロセスで複雑な計算を実行すると、ユーザーのサイトを使用する能力に影響を与えることなく、それを行うことができます。タスクが十分に複雑である場合、複数のマシンで同じプロセスを実行するだけで水平方向にスケーリングできます。