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 获取),那么它可能更容易。
我有一个 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 获取),那么它可能更容易。