【发布时间】:2018-08-19 19:52:23
【问题描述】:
我有一个 NoSQL 数据库,其中包含 User 集合和 Post 集合。每个User 有一个Post 并且可以关注其他Users(与他们的朋友)。
User 只能查看他以前未查看过的朋友的Post。一旦被查看,它就不再显示给他。
我正在尝试找出一种方法来设计此要求,以便有效地检索 User 尚未查看的 Posts。
我有两个想法,似乎都不是很有效:
在
User下创建一个名为NonViewedPosts的子集合,其中每次朋友发帖时,都会在该子集合下添加他们朋友的帖子ID。当该用户查看该帖子时,它的条目将被删除。但这意味着每当用户发帖时,他们必须将自己添加到所有朋友NotViewedPosts子集合中。如果他们有很多朋友,这可能是低效的在
Post下有一个名为Viewed的子集合,该集合开始为空,当帖子被查看时,它会被填满。然后我必须查询Viewed,看看我是否发现自己在每个朋友发布的集合中。如果我的朋友很多,如果我的朋友有很多观点,那么这也是低效的
还有其他我没有想到的解决方案吗?
【问题讨论】:
-
或者在用户查看帖子后在您修改的架构中添加一个新列怎么样?当您阅读时,您可以编写一个查询,根据该列过滤掉结果
-
@RamkumarVenkataraman 我正在处理带有列的表格上的文档和集合,所以我认为这个想法有点像我在帖子中提到的第二个想法。我不认为我可以在 Post 下添加单个属性(列)来处理每个朋友的视图状态。可能我没看懂
标签: database-design architecture nosql