这是我的表格:
create table user
(
userId uuid primary key,
name text
)
create table comment_by_post
(
postId uuid,
cmntId timeuuid,
cmntTxt text,
cmntBy uuid,
primary key (postId, cmntId)
)
create table post_likes
(
postId uuid,
userId uuid,
primary key (postId, userId)
)
这里我的问题很少
我如何知道用户对来自comment_by_post
表的帖子发表了评论?
如何订购评论。
在post_likes
表
如果用户被删除,则应删除所有表中给定用户ID的所有条目。
要运行这些查询,我必须在架构中进行哪些更改?
答案 0 :(得分:3)
在Cassandra中,通常每个查询需要一个表。所以看看你的select语句并开始创建表。
create table comment_by_post_user
(
postId uuid,
userId uuid,
cmntId timeuuid,
cmntTxt text,
cmntBy uuid,
primary key (postId, userId,commentId)
)
select * from comment_by_post_user where postId = <> and userId = <>;
create table comment_by_post
(
postId uuid,
userId uuid,
cmntId timeuuid,
cmntTxt text,
cmntBy uuid,
primary key (postId,commentId)
) WITH CLUSTERING ORDER BY (commentId) desc;
select * from comment_by_post where postId = in_postId limit 10;
这将为您提供该帖子的最新10条评论。
create table post_likes
(
postId uuid,
liked_at timstamp,
userId uuid,
primary key (postId, liked_at)
) WITH CLUSTERING ORDER BY (liked_at) desc;
select * from post_likes limit 10;
这不是直接可行的。要从表中删除,您需要知道整个PRIMARY KEY。
一种解决方案是创建另一个表,其中userId为PRIMARY KEY,其他表的其余PRIMARY KEY为该表的列。
create table user
(
userId uuid primary key,
postId uuid,
cmntId timeuuid
)