2017-01-09 9 views
3

Rx.NETがSQL Serverのデータテーブルをストリームする可能性について研究しています。基本的に私は、ポーリングに頼らずに可能な限り挿入したときに、データをより近くに取得したいと考えています。RxとCでSQL Serverテーブルを観測可能にする

Rx/DataReaderを使用してPOCを作成しましたが、新しい行が挿入されたときに購読できません。選択する行がなくなったときにストリームが停止しました(もちろんこれが予想されます)。

制約:

  • ない設定SQL Server上の変更およびデータベース
  • おそらくポーリングなし

私はこれらの解決策を考えますが、それらは、ライセンスまたはサーバーの変更を必要とします。

  • StreamInsight
  • のSQLDependency
  • トリガ

.NETでSQLBriteのようなものはありますか?

+0

本、ツール、ソフトウェアライブラリ、チュートリアル、またはその他のオフサイトリソースを推奨するかどうかを質問する質問は、スタックオーバーフローに関するトピックです。 – Enigmativity

+1

Rxは、イベント、コールバック、またはタスクを監視対象に変えます。データベースに通知をプッシュする方法がある場合は、それを観測可能にすることができます。そして、あなたは確かにポーリングを使うことができます。 – Enigmativity

+0

私の目標は、DBの設定を変更せずに、できるだけSQL Serverに到達した時点でデータを取得する可能性を発見したことです。 StreamInsightの可能性を検討しています。私の最初のスキミングに基づいて、これは可能¥ネットワークプロジェクトで直接アセンブリを使用するようです。 – rdagumampan

答えて

1

Service Brokerを使用するのに必要な労力と苦労は、SQL Serverのユーザーではないと考えても巨大です(メッセージタイプ、契約、キューなど)。

オープンソースの実装が役立つようです。あなたはそれをチェックアウトすることができます:https://tabledependency.codeplex.com - それはあなたの問題を解決する以上の可能性があります。

SqlDependency - https://msdn.microsoft.com/en-us/library/62xk7953(v=vs.110).aspxで使用/再生できるコードよりも簡単です。コードのいくつかの行では、テーブルの変更(いくつかの制限があります)を見たり、アプリケーションを監視したり、データベースのパフォーマンスを監視することができます。

これらはいずれもIObservable<T>を提供していません。しかし、一度あなたはDataChangedOnDependencyChangeイベント、または同様のものを持っています。 Rxでこれを抽象化し、.netイベントをobservablesに変換することができます。 https://msdn.microsoft.com/en-us/library/hh229241(v=vs.103).aspx

関連する問題