cassandra评论表数据建模

时间:2017-10-05 06:37:12

标签: cassandra datastax cassandra-3.0

我想执行查询,从comments_by_post中选择*,其中post_id =' postid&#39 ;; 我设计了评论表如下 -

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 个答案:

答案 0 :(得分:1)

冻结值将多个组件序列化为单个值。非冻结类型允许更新单个字段。 Cassandra将冻结类型的值视为blob。必须覆盖整个值。

因此,当有关演员的信息更新时,您应该在评论表中更新该演员的整个价值。

稍后编辑:由于actor_info不会非常频繁地更新,因此您可以对actor_id进行选择以获取完整的主键,然后进行更新。在此之前,必须创建actor_id的二级索引