我一直在玩Couchbase,而我正在努力寻找建立关系的最佳方式。
belongsTo :这很简单。当我有帖子和评论时,我可以在评论中使用以下结构。
Comment:
id: 1
parent: this is where I store an id of post
hasMany :起初看起来很简单。假设我有帖子和用户,用户可以使用帖子,我有以下结构。
Posts:
id: 1
likedBy: [
'user-id-1',
'user-id-2'
]
如果我可能有......一千个喜欢,那就有效了,但随着喜欢的数量的增加......变得越来越慢,我必须锁定文件。
我的第一个解决方案是使用查看,但是即使它适用于大多数查询,查看也不是实时的。索引始终存在延迟。
然后我考虑使用关系数据库来保存关系,我认为这可能是一个不错的选择,但我想知道是否有一些我不知道的事情。< / p>
答案 0 :(得分:0)
对于评论,我可能会使用类似this的内容,但不是像博客文章中那样的“SomeEventType”和日期时间戳,我会做帖子本身的ID。通过这种方式,您可以获得该帖子的计数器对象,从而为您提供注释数组的上限。然后,您可以遍历该列表,使用分页或对所有这些进行批量获取。由于这将与数据服务完全交互,因此它将满足您的一致性和实时需求。
对于喜欢的数量,您可以使用计数器对象。为了记录哪个用户喜欢帖子或评论,您可以将其存储在单独的对象中,或者可能有一个索引对象,就像您在每个用户的问题中一样?让我想一想这个。