worker ロールまたは web ロール内でホストされているアプリケーション内のエラーをログに記録するために、windows azure テーブルを使用しています。クラスのどのコンポーネントがエラーを記録したかを簡単に識別できるように、テーブルに十分な情報を記録しています。
Component Id (完全修飾クラス名) がパーティション キーとして使用され、ランダムな一意の Guid が行キーとして使用されます。
このログ情報は ASP.NET MVC Web サイトに表示され、管理者はコンポーネント ID、日付範囲、役割 ID、重大度などのフィルター基準に基づいてこのログを検索できます。
これは、テーブルが小さくなるまでうまく機能します。Azure テーブルに大量のレコード (200000 以上) が含まれると、Azure テーブルのフィルター処理に時間がかかりすぎてタイムアウトになります。テーブルのクエリに .NET Azure Storage API を使用しています。
返された結果セットのページングも必要でしたが、Azure テーブルでは、返されたレコードの正確なカウントが得られないようです。
Azure Storage API を使用してフィルターを適用し、現在のページ番号に基づいてデータを取得しようとしましたが、機能しません。テーブル構造、特にパーティションキーと行キーを再設計する必要があるかもしれないことは理解していますが、どのように進めればよいかわかりません。