私は現在、RavenDB を使用して、受信イベントをシステムに集約したビューを提供する単純なダッシュボード アプリケーションの概念実証を行っています。たとえば、ユーザーが時間単位 (1 日)、日単位、月単位、または年単位で表示できるとします。
インポートしてインデックスを作成する既存のイベントが 300 万ありますが、これを実行するための最良の/最もパフォーマンスの高い方法を探しています。
この質問は、データとインデックスが生成された後のアプリケーションのパフォーマンスに関するものではないことに注意してください。その部分は非常に優れています。
ので、私は持っています:
- イベントを表す単一のクラスで、何がいつ発生したかを示すフィールド (DateTime + 3 つの文字列フィールド) があります。
- イベントの日付とイベントの種類に基づいて、時間、日、月、年のインデックスをマップ/削減します。
- アプリは、時間ごと、日ごと、月ごと、および年ごとの値のインデックスを照会します
- 歴史的には、少なくとも時間ごとの集計が必要でした (個々のイベントではありません)。
インデックスが存在しない場合は問題なくデータをインポートできますが、インデックスが存在する場合は、約 45 分間のインデックス処理後に一貫して OutOfMemoryExceptions が発生します。
インデックス作成プロセスを微調整できますか?また、適切な値は何でしょうか?
あるいは、別の方法から問題にアプローチすることを提案していただければ幸いです。