Mongodb 嵌入不断增长的文档
我想使用MongoDB记录我们服务中所有用户的活动日志 目前,我们的结构如下:Mongodb 嵌入不断增长的文档,mongodb,Mongodb,我想使用MongoDB记录我们服务中所有用户的活动日志 目前,我们的结构如下: { '_id' : 'user_id', 'activites' : [ {time : blah blah, action : blah blah, ...}, {time : blah blah, action : blah blah, ...}, {time : blah blah, action : blah blah, ...}, ]
{
'_id' : 'user_id',
'activites' : [
{time : blah blah, action : blah blah, ...},
{time : blah blah, action : blah blah, ...},
{time : blah blah, action : blah blah, ...},
]
}
但是我们发现,嵌入式文档的增长会导致更新性能的降低
现在我们正在考虑对数据模式进行更改,即将嵌入的文档迁移到单独的集合,并使用引用模型
但是,如果我们改变结构,仍然存在问题
(1) 参考文献的数量仍在增长。我们能避免性能问题吗?
(2) 如果停止使用引用,select性能将降低
有什么好主意吗?将数据存储在单个文档中总是错误的,因为文档的大小有限制(16MB) 我建议您只参考activites集合中的用户id,如:
{
'_id': 'activity_id',
'user_id': 'user_id',
'time': ...,
'action: ...,
...
}
确保为“user_id”添加了索引,如果您总是在多个字段上进行查询,比如{user_id:user_id,time:{$gt:blah blah},则按照查询中的顺序在所有字段上创建索引,在这种情况下:(user_id:1,time:-1)(如果您总是按时间降序排序)