0

私は次のmongoコレクション構造を持っていました

{
 "_id" : ObjectId("52204f5b24c8cbf03ca16f8e"),
 "Date" : 1377849179,
 "cpuUtilization" : 31641,
 "memory" : 20623801,
 "hostId" : "600.6.6.6"
}

上記のコレクションでは、1000 個の hostId があり、すべての hostId が 5 分ごとに cpuutilization とメモリを生成しました。したがって、データを単一のコレクションに入れるか、hostId のようなコレクション名を 100.1.12.2,101.2.10.1.... として使用して個別の 1000 コレクションを作成することをお勧めします。また、レコードを検索するためにコレクションにインデックスを付けたいと考えています。

4

2 に答える 2

0

メモリと cpuUtilization は常に異なるため、共有した構造から、データを別々のレコードに配置することは賢明な選択です。また、タイムスタンプを日付フィールドに保存すると、常に異なります。

レコードを別々に保存すると、データベースへのクエリがはるかに簡単になり、適切なインデックスを使用することでクエリのパフォーマンスが向上する集計の使用も回避できます。

したがって、レコードは次のようになります。 _id": ObjectId("someID2"),"Date": 1377849210,"cpuUtilization": 20141,"memory": 28787801,"hostId": "600.6.6.6"}

于 2013-09-07T05:40:18.797 に答える
0

情報を格納するには、1 つのコレクションで十分です。気をつけなければならないことの 1 つは、データベース レベルでの書き込み中に mongodb がロックされるため、書き込みのパフォーマンスです。書き込みが遅くなる可能性があります。特定の範囲のホストのコレクションを保持する 2 つまたは 3 つのデータベースを用意することをお勧めします。より速く書くのに役立ちます。バージョン 2.2 以降、MongoDB はほとんどの読み取りおよび書き込み操作に対してデータベースごとにロックを実装しています。

于 2013-09-07T06:18:50.030 に答える