如何避免分区键过大

时间:2021-07-02 02:06:25

标签: cassandra

分区大小不应超过 10 MB(推荐)。我怎样才能避免这种情况?

我可以使用 2 个分区键,但我无法查询它们,它不适合我的查询。

如果您有 2 个分区键,并且您执行查询,则必须像这样调用两个分区键:

user_id = partition key
post_id = partition key

SELECT * FROM posts WHERE user_id = 1 AND post_id = 1;

如果你使用这个,你会得到一个错误,因为你没有调用 post_id

SELECT * FROM posts WHERE user_id = 1;

但我的查询中不需要 post_id 或 user_id 我只需要其中之一,而不需要两者。那么我现在如何避免分区大小?

1 个答案:

答案 0 :(得分:2)

你可以有如下表格设计 -

CREATE TABLE user_post_by_month (
userid int,
year int,
month int,
postid int, 
post text,
PRIMARY KEY ((userid,year,month),postid);

这种设计不会产生很宽的行。您可以按用户获取特定月份的帖子。如果您预计一个月内某个用户的帖子过多,您可以添加另一个存储桶,例如一周。

CREATE TABLE user_post_by_week (
userid int,
year int,
month int,
week int,
postid int, 
post text,
PRIMARY KEY ((userid,year,month,week),postid);
相关问题