データを保存/処理するためのバックエンドを構築する最も効率的な方法を探しています。基本的に、データはサーバーに送信され、解析されてからデータベースに保存されます。次に、データベース内の他のデータに基づいて何らかの処理が行われ、電子メールまたは SMS を介してアラートが発生します。
プラットフォームは .NET で、DB は SQL Server 2005 または 2008 です。
いえ
- 温度センサーは、4 バイトのデータをサーバーに送信します。
- サーバーはデータを実際の値、たとえば 20 に変換します。
- その後、値は SQL サーバー db に保存されます。
- 次に、値は、そのセンサーに設定された境界 (0 ~ 50) を持つテーブル内の行に対してチェックされます。
- 範囲外の場合、アラートが発生します。(SMSまたはメールで送信されます。)
これはすべて非常に簡単に思えますが、理想的なシナリオはすべてが「リアルタイム」で発生し、1秒あたり数百または数千のリクエストになる可能性があることを考えると、それを行うための最良の方法を探しています. 私は、SQL 2005/08 の「新しい」機能のいくつか (Service Broker、CLR 統合、トリガーなど、経験がほとんどない) を活用したいと考えていました。
ステップ 1 と 2 はすでに完了しています。
キューイングするトランザクションの数を考慮して、サービス ブローカーまたは MSMQ を使用するのが賢明でしょうか? 境界データを調べる必要がある場合、どの時点でアラート データを処理すればよいですか? データをどのように処理したいかについていくつかのアイデアがありますが、使用するのに最適なテクノロジー/方法論がわかりません。
私の考えは (ステップ 3 から)、データをサービス ブローカーに送信し、サービス ブローカーが CLR プロシージャを呼び出して、データの「ビジネス ロジック」を処理することです。または、トリガーを使用してデータを Service Broker に追加し、データを処理しますか? Service Broker は CLR プロシージャを直接呼び出すことができますか? ポーリングではなくイベント駆動型のデータを処理したい場合、Service Broker を使用することは正しい考えでしょうか?
Service Broker で見た例から、データを受信するにはコードが必要であるように見えますが、実際にやりたいことは、データをキューに追加し、キューを自動的に空にすることです (アラート データを次のように処理します)。そうします)。
標準のストアド プロシージャを使用してこれらすべてを行うこともできますが、ビジネス ロジックが例よりもはるかに複雑になるため、ストアド プロシージャの使用は最小限に抑え、代わりに CLR 統合を使用したいと考えています。
サービス ブローカーがキューイングとスレッド化を処理することを考えると、CLR プロシージャを呼び出してアラート データを処理し、SMS や電子メールを送信するのに適していると思いました。
光を見せてください!ありがとう!