2009-08-18 1 views
0

私は中央ファイルシステム上にLuceneインデックスを持っています。私のIISアプリケーションでは、インデックスをクエリするメソッドと、インデックスを更新するメソッドがあります。IISの共有リソースに対する複数の要求を処理するために使用するデザインパターンは何ですか

インデックスを更新するには、変更が確定するまでファイルをロックする必要があります。これを実装する際の私の問題は、良い並行性を維持するために最良のデザインパターンを選択することです。

静的オブジェクトに関するロックを使用する静的アップデータクラスを使用することをお勧めしますか? ロックがアクティブな間に別のインデックスの更新要求が出された場合、要求は 'wait'か、それとも例外を返しますか?待つことができない場合は、一連の操作でスレッドセーフなFIFO型オブジェクトを実装して、順次実行する必要がありますか?

答えて

0

あなたが望むのは、1つのリーダーに基づいたものです。多くの作家のデザインパターンです。

0

Windowsサービスでは、インデックスを完全に別の操作として更新する必要があります。

これはオプションですか?それとも一貫して24/7が必要ですか?私はおそらくあなたがないと思う。

さらに、あなたが行っても、あなたがLuceneに行く前にあなたが通過した新たに追加/削除されたアイテムのあなた自身の 'キャッシュ'を持つ可能性があります。

+0

したがって、Windowsサービスであっても、依然として同時要求を処理できる必要があります。私はそれを処理する最善の方法が何であるか疑問に思っています。 – Matt

+0

私が言っていることは、サーバーが単に典型的なウェブサイトの使用時間から更新を行うことです。ユーザーへの影響を軽減できます。 –

+0

Nah、ライブが発生します – Matt