【发布时间】:2014-11-01 21:46:57
【问题描述】:
我需要将需要推送到用户新闻源页面的最新更新存储在 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 是如何解决这些问题的呢?我应该修复我的数据模型并有不同的工作模式吗?
【问题讨论】: