我正在寻找一种在cassandra中存储评论的好方法。 有人能为我提供一个好的Cassandra数据模型来存储评论吗?
数据模型应该允许我使用phpcassa检索一定数量的这些评论。
这是我的想法:
Comments = {
CommentId1:{
CommentAuthor,
Content,
Timestamp
},
CommentId2:{
CommentAuthor,
Content,
Timestamp
}
...
}
CommentsLine = {
EntryId1:{
CommentId1: timestamp,
CommentId2: timestamp,
CommentId3: timestamp,
...
}
...
}
但我不确定这是更好的方法。谢谢你的帮助。
答案 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调用。