2017-10-05 13 views
1

私はquery_by_postから*を選んで、post_id = 'postid'を選択しました。 私は、すべてがうまくいくが、問題は、俳優は、彼/彼女の情報を更新するとき、私はpost_idのを提供するために必要な情報を更新するので、どのように私は、その後、actor_infoを更新することができているfollows-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) 

としてコメントテーブルを設計しましたposted_timestamp、およびactor_idがあります。これは、一度に1行ずつ情報を更新することはできません。最適なテーブルは何か。

答えて

1

フリーズされた値は、複数のコンポーネントを単一の値にシリアル化します。非フリーズタイプでは、個々のフィールドを更新できます。 Cassandraは、フリーズされた型の値をブロブとして扱います。値全体を上書きする必要があります。

したがって、俳優に関する情報が更新されると、コメントテーブルのその俳優の値全体を更新する必要があります。

後で編集:actor_infoは非常に頻繁に更新されないため、完全な主キーを取得してから更新するために、actor_idで選択を行うことができます。これを行う前に、actor_idのセカンダリインデックスを作成する必要があります。

+0

actor_infoを更新するのが問題です.post_timestampもactor_idと一緒に提供する必要があります。 –

+0

アクタの定義も指定できますか? – Horia

関連する問題