[英]RAM Consumption in MongoDB via mongoose
嗨,我是Mongo DB中聚合的新手。 我的要求是将发送到服务器的设备GPS数据保存到我的mongoDB集合中,即GPS数据。 目前,我使用猫鼬的GPS数据架构如下
SerialNo:{
type:Number,
required:true,
index:true
},
Loc: {
type: [Number], // [<longitude>, <latitude>]
index: '2d',// create the geospatial index
required:true
},
Time:{
type:Date
},
Speed:{
type:Number,
default:0.0
},
Message_length:{
type:Number
},
No_Satellites:{
type:Number
},
Course:{
type:Number
},
Direction:{
type:String
},
gpsLocked:{
type:Boolean
},
isRealTime:{
type:Boolean
},
createdAt:{
type:Date,
default:Date.now
}
我发现这对我的设计可能不可行,因此在mongoDB网站上进行了大量搜索时,我遇到了此链接。我发现使用Aggregation Framework和Hadoop分析时间序列数据时发现它们使用的文档结构与我的要求相似,如下
data:[
{speed:NAN,time:NAN},
{speed:NAN,time:NAN},
{speed:NAN,time:NAN}
]
我的主要问题是,如果我将Loc和时间戳转换为上述格式,那么当我将500个GPS数据保存到一个文档中时,我是否会节省因索引编制而消耗的内存,或者由于将500个GPS数据保存为不同而导致的内存消耗是否相同?文件放入我的收藏夹?
如果您要转换成这种格式
data:[
{Loc:NAN,time:NAN},
{Loc:NAN,time:NAN},
]
然后,如果要使用Loc
查询,则必须索引完整的数组。 这将是一个多键索引
整体索引大小可能会更高,因为在这种情况下,mongodb必须在数组中索引文档。 在前一种情况下,只需要单独索引Loc
。
如果您使用SerialNo
和data
构建复合索引,则查询将非常有效。
但是,您的更新将非常有效,因为您只需要更新数据中的一项即可。
请注意,每个文档的MongoDB限制为16MB。 我不确定要在单个文档中放入多少个时间戳。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.