Cassandra Slice查询CompositeType的部分内容

时间:2011-11-25 06:21:42

标签: cassandra composite-key

我有一个由四个字段组成的复合列:(field1,field2,field3,field4)。我需要执行以下切片查询: 1.获取所有复合列,其中field2具有特定值,其他字段无关紧要。假设我有一个行键的三个复合列:('ACTIVE','35','Name','Time'),('INACTIVE','35','City','Country'),以及('被动','25','时间','区')。给定行键和field3的值为'35',我应该得到前两个复合列的结果。任何建议将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

field1可以有多少个不同的值?具有复合键的列首先按第一个维度排序,然后按下一个维度排序,依此类推。要使用field2 = x检索所有值,您必须至少执行| field1 |读取或扫描整行。你考虑过交换field2和field1吗?这将使这个查询更容易。

如果您需要使用field1 = x对所有值进行查询,并且您还想单独使用field2 = y进行查询,则还可以考虑将数据插入两次,并对复合键的维度进行不同的排序。如果您的日期是一次性写入,则效果最佳。如果这是不可接受的,那么唯一的选择是进行三个查询:

[“ACTIVE”; y;“”;“”] - > [ “ACTIVE”; Y; ​​“”; “”]  [“非活动”; y:“”;“”] - > [ “INACTIVE”; Y: “”; “”]  [“被动”; y;“”;“” - > [ “被动”; Y: “”; “”]

如果field1有三个以上的可能值,那么效果不会很好。