注释的Cassandra模式

注释的Cassandra模式,cassandra,phpcassa,Cassandra,Phpcassa,我正在寻找一种在cassandra中存储评论的好方法。 有人能为我提供一个好的Cassandra数据模型来存储评论吗 数据模型应该允许我检索一定数量的注释 这是我的想法: Comments = { CommentId1:{ CommentAuthor, Content, Timestamp }, CommentId2:{ CommentAuthor, Content, Time

我正在寻找一种在cassandra中存储评论的好方法。 有人能为我提供一个好的Cassandra数据模型来存储评论吗

数据模型应该允许我检索一定数量的注释

这是我的想法:

Comments = {
    CommentId1:{
        CommentAuthor,
        Content,
        Timestamp
    },
    CommentId2:{
        CommentAuthor,
        Content,
        Timestamp
    }
    ...
}

CommentsLine = {
    EntryId1:{
        CommentId1: timestamp,
        CommentId2: timestamp,
        CommentId3: timestamp,
        ...
    }
    ...
}

但我不确定这是不是更好的方法。谢谢你的帮助。

我曾经解决过这个问题。下面是我如何解决这个问题的。一个单独的ColumnFamily注释,其中每一行都是注释ID(我的ID的格式为{Parent Post ID}-{comment author user ID}-{comment Posted Timestamp}),然后在其中包含作者、注释、发布日期等的列

您可以使用自己的格式,并在单个列族中将它们分开,以确保它们是分布式的

链接完成后,您必须将每个注释链接到其父级,您可以通过保留列名注释来完成链接,该列名注释可以具有{Posted Timestamp}->{{comment author user ID}和JSON}等其他元数据(这完全特定于我的场景,您应该认为您喜欢)

当您可以生成的某人评论从PHP发布到micro time,并相应地插入到cassandra中时。这种格式确保Cassandra在环中分发评论,并且post中的行保持最小,仅包含所需的信息


加载注释需要您选择列,然后对注释列族执行MultiGet调用。

您的解决方案似乎很酷,但可能最好将带有时间戳的键存储在CF注释行中,这样您就可以排序注释了

CommentsLine = {
    EntryId1:{
        timestamp: CommentId1 ,
        timestamp: CommentId2 ,
        timestamp: CommentId3 ,
        ...
    }
    ...
}

在我的解决方案中,如果您想要排序的注释,您可以通过存储{Posted Timestamp}->{{Comment author user ID}和其他元数据(如JSON})的列上的一个简单切片从posts表中获得它。可能是的。我不知道您的架构,但在本例中,最好使用行键中的列来对注释进行排序。@sahid Ok,但如何仅获取前5个结果,然后获取另5个结果ecc…?API提供了一种解决方案,可以为特定行键添加要检索的列数限制,但是API不支持列的偏移量是对的。@sahid谢谢,还有一个问题。我应该使用
execute\CQL\u query()
或通过
get()
insert()
函数等通过CQL发出请求吗。。。?