Cassandra NOT EQUAL算子

Bab*_*mes 12 mapreduce cassandra cql3

向所有Cassandra专家提问.

我有一个有大约一百万条记录的列族.

我想以这样的方式查询这些记录,以便我能够执行Not-Equal-To某种操作.

我用Google搜索,似乎我必须使用某种方式Map-Reduce.

有人可以告诉我这方面有哪些选择.

Dan*_* S. 12

我可以建议一些方法.

1)如果您想要测试不相等的有限数量的值,请考虑将这些值建模为boolean列(即:列为isEqualToUnitedStatestrue或false).

2)否则,考虑!= X通过组合两个单独查询的结果< X> X在客户端上模拟不支持的查询.

3)如果您的模式不能支持上述任何类型的查询,您可能不得不求助于编写将执行客户端过滤的自定义例程并动态构造不相等的集合.如果您可以首先将搜索空间缩小到可管理的比例,这将有效,这样在没有不相等的情况下运行查询相对便宜.

因此,假设您对除Widget之外的每种产品类型的特定客户的所有购买感兴趣.一个理想的查询看起来像SELECT * FROM purchases WHERE customer = 'Bob' AND item != 'Widget'; 现在,当然,你不能运行它,但在这种情况下,你应该能够运行SELECT * FROM purchases WHERE customer = 'Bob'而不浪费太多的资源和过滤器item != 'Widget'在客户端应用程序中.

4)最后,如果在进行扫描之前没有办法以有意义的方式限制数据(没有相等性检查的查询将返回太多行以便舒适地处理),您可能不得不求助于MapReduce.这意味着运行分布式作业,该作业将扫描整个群集中表中的所有行.这样的工作显然比本机查询运行得慢很多,而且设置起来相当复杂.如果您想这样,请查看Cassandra Hadoop集成.