Cassandra - 在布尔值上过滤结果

Cassandra - filtering results on a boolean

我有一个 table 看起来像这样:

CREATE TABLE table(
  user text,
  gender boolean,
  ...,
  PRIMARY KEY(user)
);

其中 gender 代表 true 代表男性,false 代表女性。

我想进行 3 种类型的查询:

我想到了在主键上加上gender参数。这将使查询 2 和 3 变得简单明了,要检索所有用户,我需要进行查询 2 和 3,然后连接结果。

问题是我的用户 table 变得非常大,我必须对结果进行分页。当 gender 是主键的一部分时,这会造成问题,因为我必须在 API 响应中同时传递 pageState 以使用户能够查询更多结果。

是否有更好的方法来启用这种使分页相对简单直接的请求?

非常感谢

一题有2题。

首先是查询。如果您需要这 3 种类型的查询,那么反规范化并创建 3 个 tables:users、male_users 和 female_users.

二、分页一。如果您通过在 table 级别查询来列出所有用户(或 male/Female 用户),结果将是未排序的,因为多个节点将参与详细说明结果并且分区是散列的。如果您谈论的是 UI 级别的分页(仅获取和显示前 100 个用户),它将是 tricky。如果您是在驱动程序级别谈论分页(所有用户都由 chunks/pages 获取),那么它可能更容易。