Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cassandra 卡桑德拉;按操作排序_Cassandra - Fatal编程技术网

Cassandra 卡桑德拉;按操作排序

Cassandra 卡桑德拉;按操作排序,cassandra,Cassandra,我想在Cassandra-0.7.8上使用ASC/DSC ORDER执行SQL操作,例如BETWEEN、ORDER BY 据我所知,Cassandra-0.7.8对这些操作没有直接支持。请让我知道有没有办法通过调整二级索引来实现这些 下面是我的数据模型设计 Emp(KS){ User(CF):{ bsanderson(RowKey): { eno, name, dept, dob, email } prothfuss(RowKey): { eno, name,

我想在Cassandra-0.7.8上使用ASC/DSC ORDER执行SQL操作,例如BETWEEN、ORDER BY

据我所知,Cassandra-0.7.8对这些操作没有直接支持。请让我知道有没有办法通过调整二级索引来实现这些

下面是我的数据模型设计

Emp(KS){
    User(CF):{
         bsanderson(RowKey): { eno, name, dept, dob, email }
     prothfuss(RowKey): { eno, name, dept, dob, email }
}
}
查询:

 - Select * from emp where dept='IT' ORDER BY dob ASC. 
 - Select * from emp where eno BETWEEN ? AND ? ORDER BY dob ASC.
提前谢谢

问候,

塔米扎南尔

Select * from emp where dept='IT' ORDER BY dob ASC.
通过使用内置的二级索引,可以选择“dept”列具有特定值的行。但是,行将按照分区器(RandomPartitioner或OrderPreservingPartitioner)确定的顺序返回。要按任意值(如DOB)排序,需要在客户端进行排序

或者,您可以直接支持此查询,方法是为每个部门设置一行,为每个员工设置一列,并按DOB键控(因此进行排序)。但要小心共享生日!而且,您仍然需要后续查询来检索所选员工的其他数据(SELECT*的结果),除非您进行反规范化,以便所需的数据也存储在索引中

Select * from emp where eno BETWEEN ? AND ? ORDER BY dob ASC.

Cassandra中的二级索引查询至少需要一个相等项,因此我认为您可以执行dept='IT'和eno>=X和eno,因为我知道在创建列族时,列将由comparator排序,您可以使用clustring键根据您的意见进行排序 列族中的行将按分区器排序 我建议你读一下这篇文章

卡桑德拉权威指南第6章

您是否使用CQL(卡桑德拉查询语言)进行查询?非常感谢。我将试验这些想法。