我想执行查询,从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这是不可行的更新信息的一行一次。什么可能是最佳表。
答案 0 :(得分:1)
冻结值将多个组件序列化为单个值。非冻结类型允许更新单个字段。 Cassandra将冻结类型的值视为blob。必须覆盖整个值。
因此,当有关演员的信息更新时,您应该在评论表中更新该演员的整个价值。
稍后编辑:由于actor_info不会非常频繁地更新,因此您可以对actor_id进行选择以获取完整的主键,然后进行更新。在此之前,必须创建actor_id的二级索引