如何塑造" hasMany"在NoSQL中进行近实时查询?

时间:2015-12-09 00:20:53

标签: indexing view relationship couchbase

我一直在玩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>

1 个答案:

答案 0 :(得分:0)

对于评论,我可能会使用类似this的内容,但不是像博客文章中那样的“SomeEventType”和日期时间戳,我会做帖子本身的ID。通过这种方式,您可以获得该帖子的计数器对象,从而为您提供注释数组的上限。然后,您可以遍历该列表,使用分页或对所有这些进行批量获取。由于这将与数据服务完全交互,因此它将满足您的一致性和实时需求。

对于喜欢的数量,您可以使用计数器对象。为了记录哪个用户喜欢帖子或评论,您可以将其存储在单独的对象中,或者可能有一个索引对象,就像您在每个用户的问题中一样?让我想一想这个。