2012-01-16 7 views
2

私は2つの部分からなるアプリケーションの開発に着手しました。システム全体がデジタルサイネージアプリケーションとして機能します。すべてが1台の物理マシンに配置されています。これは「IPCとしてのデータベース」の反パターンと考えられますか?

最初のコンポーネントは、コンテンツ管理の管理バックエンドです。ユーザーは、マルチメディアファイルのスケジュールとアップロードを行うことができます。これはブラウザを介して利用可能なWebベースのものです。

2番目の部分はメディアプレーヤーです。そのタスクは、基本的に人がアップロードして表示するデータを読み込むことです。それらのメタデータはデータベースに保存されます(たとえば、この画像を表示する時間、次の処理...)、ファイルシステム内の物理データはすべて同じマシンに格納されています。

関連するすべてのデータは、PostgreSQLデータベースに保存されています。基本的なスケジュール情報+コンテンツのファイルシステムパス - バイナリ形式ではありません。

これらの2つの間にローカルループを介してソケット接続があります。本当に簡単なコミュニケーションとコマンド解析(ステータスチェック、終了、コンテンツのリフレッシュ)があります。ユーザーがWebベースのバックエンドを介して新しいコンテンツをアップロードしたりスケジュールしたりすると、ソケットを介したメッセージがメディアプレーヤーに送信され、新しいスケジュールを作成するよう指示されます。

ただし、プレーヤーが新しいコンテンツを確認するメッセージを受信するとすぐに、データベースからスケジューリングデータが読み込まれます。

これはIPCの反パターンとしてのデータベースと考えられますか?はいの場合、それを解決するより良い方法は何でしょうか?

答えて

2

私にはまったく同じようには聞こえません。スケジューリングデータは永続的なものですか?スケジュールは定期的に繰り返すことができます。データベースから取得するのは問題ありません。

「データベースをIPC」とすると、データベースに「終了」と言うメッセージを挿入して「メッセージ」を送信した場合、メディアプレーヤーはそのテーブルにクエリを出して終了メッセージを確認することで、 15秒ごとまたは何かに

プロセスAがデータを挿入してから、作成したデータが実際にデータベースに属している永続データである限り、プロセスBに「興味のある新しいデータを作成しました。 。あなたがデータベースに入れているものが実際に永続的なデータではなく、ちょうど過渡的な中間段階として使用しているのであれば問題になります。

+0

はいデータは永続的であり、定期的なスケジュールもあります。私が設計プロセスに重大な誤りを犯さなかったことを保証してくれたあなたの応答に感謝します。 – jay

関連する問題