Cassandra - 在布尔值上过滤结果

时间:2015-02-23 10:43:27

标签: cassandra

我的桌子看起来像这样:

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

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

我想提出3种类型的查询:

    1. 检索所有用户,无论性别
    1. 检索所有男性
    1. 检索所有女性

我想过将gender参数添加到主键。这将使查询2和3直截了当并检索所有用户,我需要进行查询2和3,然后连接结果。

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

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

非常感谢

1 个答案:

答案 0 :(得分:2)

一个问题有两个问题。

首先,查询一个。如果您需要这3种类型的查询,那么非规范化并创建3个表:users,male_users和female_users。

其次,分页一个。如果您通过在表级查询列出所有用户(或男性/女性用户),则结果将不会被排序,因为多个节点将参与详细说明结果并且分区已经过哈希处理。如果您正在谈论UI级别的分页(只提取并显示前100个用户),它将是tricky。如果你在谈论驱动程序级别的分页(所有用户都是由块/页面提取的),那么它可能会更容易。