Cassandra 卡桑德拉;按操作排序
我想在Cassandra-0.7.8上使用ASC/DSC ORDER执行SQL操作,例如BETWEEN、ORDER BY 据我所知,Cassandra-0.7.8对这些操作没有直接支持。请让我知道有没有办法通过调整二级索引来实现这些 下面是我的数据模型设计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,
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(卡桑德拉查询语言)进行查询?非常感谢。我将试验这些想法。