2017-10-05 147 views
1

我想執行查詢,select * from comments_by_post where post_id ='postid'; 我設計意見表如下 -cassandra評論表數據建模

CREATE TABLE comments_by_post (
    post_id text, 
    posted_timestamp timestamp, 
    actor_id text, 
    comment_id text, 
    actor_info frozen<actor>, 
    actor_type text, 
    comment text, 
    PRIMARY KEY (post_id, posted_timestamp, actor_id, comment_id) 
) WITH CLUSTERING ORDER BY (posted_timestamp DESC, actor_id ASC, comment_id ASC) 

一切順利,但問題是當演員更新他/她的信息,我怎樣才能更新actor_info然後,因爲要更新我需要提供POST_ID的信息, posted_timestamp和actor_id,這對於一次更新一行信息是不可行的。什麼可能是最佳表格。

回答

1

凍結值將多個組件串行化爲單個值。非凍結類型允許更新到單個字段。 Cassandra將凍結類型的值視爲blob。整個值必須被覆蓋。

因此,當關於演員的信息被更新時,您應該在您的評論表中更新該演員的整個值。

稍後編輯:由於actor_info不會非常頻繁地更新,您可以對actor_id進行選擇以獲取完整的主鍵,然後執行更新。在這之前,必須創建一個關於actor_id的二級索引

+0

問題是更新actor_info,我將不得不提供posting_timestamp,還有actor_id。 –

+0

你能爲演員提供定義嗎? – Horia