2.5.6 MongoDB -- 问答系统
- MongoDB 数据库设计
- API 实现概述
MongoDB 数据库设计
设计优化
- 内嵌(mongo)还是引用(mysql)
- 数据一致性
范式:将数据分散到不同的集合;反范式:使用内嵌文档
在范式化的情况下需要在进行多次查询再拼装数据,或者使用 lookup,即跨表查询;反范式化的情况下可以直接查出相关数据
更适合内嵌 | 更适合引用 |
---|---|
子文档较小 | 子文档较大 |
数据不会定期改变 | 数据经常改变 |
最终数据一致即可 | 中间阶段数据必须一致 |
文档数据小幅增加 | 文档数据大幅增加 |
数据通过需要执行二次查询才能获得 | 数据通常不包含在结果中 |
快速读取 | 快速写入 |
需求
- 查询所有问题(根据标签查询,按发布时间,浏览数量、投票数量、降序排序)
- 创建问题,回答问题
- 对问题投票,对答案投票
- 对问题添加评论,对答案添加评论
- 对问题进行修改,对答案进行修改
- 我投过票的问题,我投过票的答案
- 我浏览过的问题
- 我回答的问题列表