1

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

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

这是我的想法:

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

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

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

4

2 回答 2

2

您的解决方案似乎很酷,但最好将带有时间戳的键存储在 CF CommentsLine 中,这样您就可以订购您的评论。

CommentsLine = {
    EntryId1:{
        timestamp: CommentId1 ,
        timestamp: CommentId2 ,
        timestamp: CommentId3 ,
        ...
    }
    ...
}
于 2012-07-12T15:18:42.920 回答
1

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

您可以拥有自己的格式并将它们分离到一个单独的列族中,以确保它们是分布式的。

完成链接后,您必须将每个评论链接到其父级,您可以通过保留可以具有 {Posted Timestamp} -> {{Comment author user ID} 和其他元数据作为 JSON} 的列名评论来做到这一点(这完全是特定的根据我的情况,你应该想一些你喜欢的东西)。

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

加载评论需要您选择列,然后对评论列族进行 MultiGet 调用。

于 2012-07-12T15:07:04.437 回答