2012-07-12 88 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的電話。