Cassandra 卡桑德拉的排序

Cassandra 卡桑德拉的排序,cassandra,cqlsh,clustering-key,Cassandra,Cqlsh,Clustering Key,是的,所以我已经研究了一段时间,发现人们在Cassandra中排序数据时遇到问题并不罕见,但我仍然不明白为什么我的选择没有以正确的方式排序。 下面是我的表创建查询: CREATE TABLE library.query1 ( id int, gender text, surname text, email text, addinfo text, endid int, name text, phone int, PRIMARY

是的,所以我已经研究了一段时间,发现人们在Cassandra中排序数据时遇到问题并不罕见,但我仍然不明白为什么我的选择没有以正确的方式排序。 下面是我的表创建查询:

CREATE TABLE library.query1 (
    id int,
    gender text,
    surname text,
    email text,
    addinfo text,
    endid int,
    name text,
    phone int,
    PRIMARY KEY ((id), gender, surname, email)
) WITH CLUSTERING ORDER BY (gender DESC, surname DESC, email DESC);
作为暗示,我想按性别>姓氏>电子邮件对数据进行排序

然后我通过CVN导入数据,就像我从PostgreSQL表导入数据一样。以下是我正在使用的选择:

SELECT id, gender, name, surname, phone, email
FROM library.query1;

在查询要完成的排序时,我是否忘记了什么,或者我的建模是错误的

例如,您可以为男性用户创建分区。那你点的菜就行了

CREATE TABLE library.query1 (
    id int,
    gender text,
    surname text,
    email text,
    addinfo text,
    endid int,
    name text,
    phone int,
    PRIMARY KEY (gender, surname, email)
) WITH CLUSTERING ORDER BY (surname DESC, email DESC);

您的数据将仅在分区内排序。在您的情况下,分区是id。我可以在分区中包括其他列吗?我尝试将主键设置为(id、性别、姓氏、电子邮件),但似乎也不起作用。此外,我发现我可能不得不在某些WHERE子句中包含'id'以便对列进行排序,但这也失败了。是的,它确实起到了作用。你能解释一下为什么当按“性别”划分时,每一列都按所需的顺序排列,但当“id”是分区键时,没有任何东西按顺序排列吗?当使用id作为群集列时,会为每个id创建一个分区。在这个分区内,只有一个条目,因为每个id都不同。这就是为什么你不能对我进行分类,我现在完全明白了。非常感谢。这不是一个很好的设计-您将有太大的分区,因为您将
性别
限制为极少数可能的值。这是正确的,我的回答只是作为一个示例,这样他就可以理解分区排序。如果我们谈论的是很多用户,那么您可以引入诸如registerWeek之类的其他集群列