2011-07-28 9 views
0

フルテキスト検索では、Luceneの上にNHibernate 3.1とNHibernate.Searchを使用しています。これまでのところうまくいっていますが、スケーラビリティに問題があります。インデックスの分割にnhibernate.searchを使用したシャーディングの使用

私たちのデータベースでは、いくつかの異なる顧客のデータがあります。各顧客はお互いのデータを見ることができません。これまでのところ、フィルタを使用して解決しましたが、問題はインデックスが大きくなり、クエリを保持する悲観的なロックに問題があります。

Luceneのシャーディング機能を使用して、顧客ごとのインデックスを分割する(すべてのエンティティにこのcustomerIdを持つプロパティがあります)。

誰でもNHibernate Searchでこれを試したことがありますか?

答えて

1

データベースとセッションのファクトリ設定がどのようなものかはっきりしていませんが、顧客ごとに異なるインデックスディレクトリを指すセッションファクトリを使用できます。単一のDBしか持っていないのなら、これは奇妙なことかもしれませんが、1つのデータベースで複数の顧客をサポートするあなたのアプローチが妥当であれば、かなり痛いはずです。

これは興味深いと聞けば、this answerをご覧ください。

+0

ええと...私は、SessionFactoryのためのDictionary'ishのアプローチを使用することができます - 顧客ごとに異なるsessionfactoriesをインスタンス化すると思います。プロファイル(顧客ごと)が非常に異なる使用法を示しているので、第2レベルのキャッシュをより柔軟に使用できるようになるかもしれません。 – Goblin

関連する問題