我是一名 MongoDB 新手,正在开发一个可以保存大量日志(每天约 900 万)的应用程序。
该应用程序跟踪了 200,000 台设备,我计划将每个设备的日志保存为(其中 _id 是设备 ID):
{
"_id" : 6,
"r" : [{
"t" : 980,
"dt" : 123432534543543.0
}, {
"t" : 980,
"dt" : 123432534543543.0
}, {
"t" : 980,
"dt" : 123432534543543.0
}]
}
通过使用 $push 更新数组(也使用 upsert)。
但是,这种方法似乎存在性能问题(人们说,更新数组不是一个好主意)。
或者,我可以将每个日志添加为新文档,例如:
{
"monitorID" : 6,
"t" : 980,
"d" : 123432534543543.0,
"_id" : ObjectId("523ff7c0d43023200f000001")
}
但是,我将不得不为 monitorID 添加一个索引并搜索数百万条日志而不是 200,000 条。而且,像这样保存数据听起来像是保存在 MySQL 中,没有 NoSQL 的优势。
我愿意接受任何建议以找到最佳读/写性能。非常感谢。