特定のカテゴリの結果の数を表示し、結果のないカテゴリを非表示にする必要があります。
例:この Yahoo!Jobs ページには、都市、職種、経験などのカテゴリの結果の数が表示されます。
私は C#/Asp.Net で作業していますが、本格的なキャッシュと SQL の最適化を行わないと、サーバーが停止するのではないかと心配しています。
このようなソリューションの作成をどのように進めますか?
特定のカテゴリの結果の数を表示し、結果のないカテゴリを非表示にする必要があります。
例:この Yahoo!Jobs ページには、都市、職種、経験などのカテゴリの結果の数が表示されます。
私は C#/Asp.Net で作業していますが、本格的なキャッシュと SQL の最適化を行わないと、サーバーが停止するのではないかと心配しています。
このようなソリューションの作成をどのように進めますか?
リレーショナルデータベースは、そのようなものには適していません。それは仕事にとってちょうど間違ったツールです。代わりに、Lucene、Solr、Sphinxなどを見てください。
個人的にはSolrをお勧めします。開始するのは非常に簡単で、SolrNetを使用すると、ファセットASP.NETアプリを数行のコードで記述できます。
免責事項:私はそのライブラリの作者です。
これらのカウントが行われる典型的な方法は、キャッシングによるものです。このモデルでは、関連するテーブルへの挿入時にトリガーを設定し、計算フィールドを「CurrentCount」で更新します。
アプリ自体にさらにレベルのキャッシュを追加して、カウントが数時間ごとに増加するようにすることができます。
毎回すべての行を実際にカウントするよりもはるかに優れていますが、事前に計算できるように、カウントするデータの種類を事前に知る必要があることを意味します。
セットアップについてもっと詳しく説明する必要があると思います。ORMを使用していますか?データはすでにメモリ内にありますか? リクエストはどのように届きますか?特に気になる点は?これが実際に問題であると判断するためにプロファイリングを行いましたか? 最後の1つを十分に強調することはできません。 恐れていることが実際の問題であることを確認してから、それを回避する方法を見つけようとします。
ただし、このようなことをすると、答えを試すことができます
_categoryRepository
.Where(category=>category.Matches(query))
.Select(category.Items.Count())
Count() は、category.Matches(query) が true を返すカテゴリに対してのみ実行されます。