2011-02-04 5 views
5

私のアプリケーションのためにもっと具体的に:共有データは、監視状態、設定などの永続的なデータで、何百ものアイテムではなく、頻繁に更新されますが、1Hzまたは2Hz以下です。プロセスは、同じマシン上で互いにローカルである。IPCがメッセージの受け渡しではなくデータを共有するためにデータベースを使用する賛否両論は何ですか?

EDIT 1 - プロセスが興味のあるデータセット(つまり監視)でポーリングすることが予想されますほとんどのデータはプログラムの存続期間中は永続的ですが、一部の設定(例:configs)が必要ですソフトウェアの再起動後にリストアされます。データは所有者だけが更新します(各データについて1人の所有者と仮定します)。プロセスの数も少なすぎます(10を超えない)

データベースを使用するのは特に信頼性が高くスケーラブルですが、私がそれを行うときにアプリケーションの中でデータを共有することは、過度の使いすぎや使いすぎになります。一方で、例えば、 JMSにはミドルウェアの部分もありますが、より軽量で、より自然で柔軟な通信APIを備えています。イベント通知とコマンドパターンを実装することも、私が思うにメッセージを送ることで簡単です。

誰かが私にどのような状況が他のものよりも望ましいのかを示すことができれば、大きな助けになるでしょう。

たとえば、データベースを使用するプロセス間で永続的なデータをより簡単に共有できることはわかっていますが、メッセージングでもプロセス間で分散したり、XMLファイルで保存したりすることもできます。

そして、ここによると、http://en.wikipedia.org/wiki/Database-as-IPCとここでは、http://tripatlas.com/Database_as_an_IPCです。それは、メッセージの受け渡しの代わりに使用されるときは反パターンになると言いますが、例えばそれについて詳しくは述べていません。メッセージパッシングと比較してデータベースを使用した場合のパフォーマンスの低下

私は同様の質問をした以前のいくつかの記事を見てきましたが、私はデザインの正当性に焦点を絞った答えを見つけることを望んでいます。しかし、私がこれまでに読んだ質問から、多くの人がIPC(データベースを使ってメッセージキューを実装)を使用していることがわかります

ありがとう! DBMSが店舗情報への道である、とのメッセージが輸送情報への道であることを考慮に入れると

+2

データベースを使用する場合は、新しいメッセージをポーリングする必要があります。これがどれだけ問題になっているかを判断する必要があります(たとえば、重要なリソースを消費していますか?許可された最大接続数が問題になる可能性があります)。 – Piskvor

+0

ありがとうございます。プロセスは、関心のあるデータセット(つまり、監視)でポーリングすることが期待されます。ほとんどのデータは、所有者のみが永続的に更新します(各データの所有者は1人と仮定します)。 10) – kennyc

答えて

3

は、あなたの決定は、質問への回答に基づいている必要があります:「私は時間内にデータの永続性を必要としますまたはデータが受信者によって消費された」

関連する問題