もう1つの方法は、これをグローバルアプリケーションオブジェクトに保存し、5分ごとにDBに保存することです(これを適切な方法で行うこともできますか?)
この方法では、耐久性のあるキューイングメカニズム(MSMQなど)を使用しない限り、データが失われる可能性が非常に高くなります。あなたが大量のトラフィックを予期しない限り、私はこのアプローチについてさえ考えません。
この性質の書き込みは安価であり、1秒あたり数百回の操作は大したことではありません。私は最近、ローカルのオールインワンワークステーションで毎秒3000以上の完全なトランザクションのスループットを達成するコメント/評価フレームワークを構築しました。これには、リクエストの処理、検証、トランザクション内での複数のレコードの作成が含まれます。
注意として、統計データが人為的なインフレ/操作に対して脆弱でないことを確認するための手順を実行する必要があります。プロセスのこの部分は、ビュートラッキング自体よりもおそらく複雑になります。たとえば、ユーザーがF5キーを押したままにして、動画の視聴回数を増やすことができないようにする必要があります。また、これらの値をHTTPで操作することもできません(たとえば、AJAXリクエストを繰り返し送信するための小さなスクリプトを作成するなど)。
これは、同じユーザーIDまたはIPが一定期間にまだ記録されていないことを確認するために、各INSERTの前にSELECTが付いていることを示しています。もちろん、これは絶対確実ではありませんが(多大な労力を費やさない限り)、通常は良いアプローチである保守主義の側で誤りを犯します。
1つの方法は、ビューごとにストアドプロシージャを呼び出すことですが、その場合、データベースへの不要な呼び出しが多数発生します。
私は定期的に自分自身(および他の開発者)にデータベースを恐れないように注意する必要があります。人々(私を含む)は、いくつかの単純なデータベース呼び出しを避けるために、非常に長い時間を費やすことがあります。テーブルを狭くし、インデックスを適切に作成してください。このような操作は、想像以上に高速です。