Cassandra架构的评论

时间:2012-07-12 14:38:05

标签: cassandra phpcassa

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

数据模型应该允许我使用phpcassa检索一定数量的这些评论。

这是我的想法:

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

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

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

2 个答案:

答案 0 :(得分:2)

您的解决方案似乎很酷但可能最好存储在CF中。使用时间戳存储密钥,以便您可以订购评论。

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

答案 1 :(得分:1)

我曾经解决过这个问题。这是我如何解决这个问题。一个单独的ColumnFamily注释,其中每一行都是注释的ID(我的ID的形式为{Parent Post ID} - {Comment author user ID} - {Comment Posted Timestamp}),然后在包含Author,comment,posted的列中约会等。

您可以拥有自己的格式,并在单个列族中将它们分开,确保它们已分发。

完成链接后,您必须将每个评论链接到其父级,您可以通过保留列名称评论来{Poststost} - > {{评论作者用户ID}和其他元数据作为JSON}(这完全特定于我的场景,你应该想你喜欢的东西)。

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

重新加载评论需要您选择列,然后在“注释”列系列上执行MultiGet调用。