我有跟随mongo集合结构
{
"_id" : ObjectId("52204f5b24c8cbf03ca16f8e"),
"Date" : 1377849179,
"cpuUtilization" : 31641,
"memory" : 20623801,
"hostId" : "600.6.6.6"
}
在上面的集合中,我有1000个hostId,每个hostId每5分钟产生一次cpuutilization和内存。所以任何人都建议我将我的数据放入单个集合中,或者使用hostId创建单独的1000个集合,如集合名称为100.1.12.2,101.2.10.1 .... 我还希望对集合进行索引以搜索记录。
答案 0 :(得分:0)
从您共享的结构中,将数据放入单独的记录中是一个明智的选择,因为内存和cpuUtilization总是不同的。此外,如果在“日期”字段中存储时间戳,则总是会有所不同。
如果单独存储记录,查询数据库会容易得多,也可以避免使用聚合,这样可以通过使用适当的索引来提高查询性能。
所以你的记录应如下所示: {“_ id”:ObjectId(“someID1”),“Date”:1377849179,“cpuUtilization”:31641,“memory”:20623801,“hostId”:“600.6.6.6”} {“_ id”:ObjectId(“someID2”),“Date”:1377849210,“cpuUtilization”:20141,“memory”:28787801,“hostId”:“600.6.6.6”}
答案 1 :(得分:0)
一个集合足以存储信息。您必须注意的一个想法是写性能,因为mongodb在数据库级别写入时会锁定,Write可能会很慢。我可以给出一个建议,有两个或三个数据库,它将保存特定范围的主机的集合。它可以帮助您更快地编写。 从版本2.2开始,MongoDB在每个数据库的基础上实现了大多数读写操作的锁定。