2012-07-12 53 views
1

我正在寻找一种好方法来存储卡桑德拉的意见。 有人可以为我提供一个好的Cassandra数据模型来存储注释吗?卡桑德拉模式的意见

数据模型应该让我找回一定数量的这些意见与phpcassa

这是我的想法:

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

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

,但我不知道这是更好的办法。感谢您的帮助。

回答

2

您的解决方案似乎是很酷,但可能是更好的CF CommentsLine存储与喜欢,你可以订购您的评论的时间戳的关键。

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

在我的解决方案,如果要排序的意见,您可以通过一个简单的切片从职位表中获取它在列存储{发布时间戳} - > {{评论者的用户ID}和其他元数据作为JSON} – MaX 2012-07-12 15:41:57

+0

是也许。我不知道你的模式,但在这个例子中,最好使用rowkey中的列来保持你的评论排序。 – sahid 2012-07-12 15:50:48

+0

@sahid好吧,但我如何才能得到前5个结果,然后另外5个结果ecc ...? – siannone 2012-07-13 13:49:47

1

我一旦解决了这个问题。这是我如何解决这个问题。一个单独的ColumnFamily注释,其中每一行都是注释的ID(我的ID的形式为{Parent Post ID} - {评论作者用户ID} - {Comment Posted Timestamp}),然后在含有作者,评论,发布日期等

你可以有自己的格式,并在一个单独的列族他们分离出可以确保它们分布。

一旦完成链接,您必须将每条评论链接到它的父级,您可以通过保留一个列名称评论{张贴时间戳} - > {{评论作者用户标识}和其他元数据作为JSON}(这是完全特定于我的情况,你应该想一些你喜欢的东西)。

当有人评论您可以生成从PHP发布微时间,并相应地插入卡珊德拉这种格式可确保Cassandra以环形方式分发评论,并且发布中的行保持最小,仅包含所需的信息。

下载留言回要求你选择列,然后做评论栏家人Multiget的电话。