我是第一次玩 Cassandra,我觉得我了解了基础知识和限制。例如,我正在使用以下模型来存储由标签收集的推文。
create table posts
(
id text,
status text,
service text,
hashtag text,
username text,
caption text,
image text,
link text,
repost boolean,
created timestamp,
primary key (hashtag, created)
);
这对于我需要的查询类型非常有效:
select * from posts where hashtag = 'demo' order by created desc;
但是,如果我理解正确,我可以使用单数“演示”分区键存储的帖子数量有一个上限,更重要的是,必须存储与“演示”分区键匹配的整个帖子集每个副本。如果我理解正确,我可能应该使用更随机或可变的分区键(可能是id
帖子的),但我不知道使用什么不会改变查询的要求。
如果我id
用作分区键(例如PRIMARY KEY (id, created)
)并在主题标签列上添加二级索引,则在运行查询时会出现以下错误:
ORDER BY with 2ndary indexes is not supported.
我知道要使用 ORDER BY,分区键必须在 where 子句中出现,因此我最初的想法是使用主题标签。
我是不是想太多了,还是分区键有更好的候选者?