ストリーミング API からデータを収集しており、リアルタイム分析ダッシュボードを作成したいと考えています。ストリームの最後に新しいレコードが表示されるたびに、以下のドキュメントのカウンターを更新します。
デザインの観点から。以下の例のように、1 つのドキュメントのみを使用するのは正しいですか?
{
"_id" : ObjectId("5238beb4d4bed9e444c99978"),
"counts" : {
"hours" : {
"1" : 835,
"2" : 1007,
.
.
.
"3" : 174,
}
}
このアプローチの利点は、1 つのドキュメントのみをリアルタイム分析ダッシュボードに送信する必要があることです。また、1 年後、このドキュメントには 365 * 24 フィールドしかなく、その年の 1 時間ごとに 1 つですか?
索引付けはどうですか?ドキュメントが 1 つしかない場合、counts.hours にインデックスを作成できますか? それとも、インデックスは mongodb のコレクション全体でのみ機能しますか? インデックスは、ドキュメントやドキュメント内のフィールドをより速く見つけるのに役立ちますか?
counts.hours にインデックスを作成できれば、カウンターのインクリメント プロセスは、(ストリームの最後の新しいドキュメントごとに) インクリメントする正しい時間をはるかに効率的に見つけることができます。