在设计应用程序设计时,应更加注意内嵌数据和引用数据之间的权衡
下面有一个表格,来具体分析:
更适合内嵌 | 更适合引用 |
---|---|
子文档较小 | 子文档较大 |
数据不会定期改变 | 数据经常改变 |
最终数据一致即可 | 中间阶段数据必须一致 |
文档数据小幅增加 | 文档数据大幅增加 |
数据通常需要执行二次查询才能获得 | 数据通常不包含在结果中 |
快速读取 | 快速写入 |
优化数据操作
1.优化文档增长
当某一字段随着用户不断添加的标签而增长,可以再文档的最后添加一个大字段进行手工填充,之后再更新时移除这个字段
目的是问了减少文档的移动频率 提高写入速度
db.test.update({“_id”:id},
{“push”:
{“tag”:{“$each”:”french”,”finedining”,”hamburgers”}
}
},
“unset”:{“garbage”:”true”})
2. 删除旧数据
通过使用固定集合capped collection
通过使用TTL集合 精确控制
通过使用多个集合