我正在尝试使用mongodb / redis进行工作。我正在考虑这种情况,例如假设一个博客。
我计划进行以下查询,主要是:
注意: Redis用于存储用户ID< - >用户名映射。
这是一个好/灵活的架构设计吗?未来的计划是增加帖子/评论等级。
发表
- _id
- 作者(db-ref:user._id; 索引)
- 含量
- 类别(索引)
用户
- _id
- 用户名(唯一索引)
- passwordhash
评论
- _id
- post(db-ref:post._id; index )
- 作者(db-ref:author._id; 索引)
你怎么看?或者我只是坚果?发表
- _id
- 作者(db-ref:user._id; 索引)
- 含量
- 类别(索引)
- 投票(编号)
用户
- _id
- 用户名(唯一索引)
- passwordhash
评论
- _id
- post(db-ref:post._id; index )
- 作者(db-ref:author._id; 索引)
- 投票(编号)
CommentVotes
- _id = author.Id( key )
- 投票:[comment._id,comment._id,...]
PostVotes
- _id = author.Id( key )
- 投票:[post._id,post._id]
答案 0 :(得分:2)
我认为你仍在思考关系。我喜欢将文档数据对象视为带有链接(线程?)的俄罗斯娃娃,可以将一个玩偶链接到另一个玩偶。在你的情况下:
您可能希望将评论和帖子的投票放入用户对象,然后使用map / reduce每隔15分钟左右获取一次计数(这是使用map / reduce的'规范')。关于upvotes的重要一点是用户不会做两次,所以将它们保存在User对象中更有意义(没有命中索引以查看用户是否已经在帖子上投票)。由于每个Post的实际upvotes数量不是很重要,因此可以保留在Post中并定期更新。
答案 1 :(得分:1)