我需要在 Cassandra 表中存储需要推送到用户新闻源页面的最新更新以供以后检索,我的表的架构如下:
CREATE TABLE newsfeed (user_name text,
post_id bigint,
post_type text,
favorited boolean,
shared boolean,
own boolean,
date timestamp,
PRIMARY KEY (user_name,date,post_id,post_type) );
前三列(用户名、postid 和 posttype)组合起来将构建表的实际主键,但是由于我想根据行的“日期”对该表上的 SELECT 查询进行排序,所以我放置了日期 -列作为“第二个”条目插入主键字段(我必须这样做吗?)。
当我想通过仅给出“user_name、post_id 和 post_type”来删除一行时,如下所示:
DELETE FROM newsfeed WHERE user_name='pooria' and post_id=36 and post_type='p';
我会收到以下错误:
Bad Request: Missing PRIMARY KEY part date since post_id is set
我需要日期列成为主键的一部分,因为我想在 ORDER BY 子句中使用它,另一方面我必须在不知道它们的“日期”值的情况下删除一些行!
那么 Cassandra 是如何解决这些问题的呢?我应该修复我的数据模型并有不同的工作模式吗?