Nosql 随机分割下Cassandra中的二级索引

Nosql 随机分割下Cassandra中的二级索引,nosql,cassandra,cassandra-0.7,Nosql,Cassandra,Cassandra 0.7,我正在研究使用Aquiles在Cassandra中使用二级索引功能的可能性。我知道对于主索引(键),必须使用OrderPreservingPartitioner才能进行查询。起初,我认为对于二级索引,没有这样的限制,但我注意到start键是GetIndexedSlicesCommand的一部分。这是否意味着在RandomPartitioner下,此命令不可用?您不需要OrderPreservingPartitioner按行键进行查询,仅当您希望按行键获取有意义的行范围时才需要此命令,如“键在5到

我正在研究使用Aquiles在Cassandra中使用二级索引功能的可能性。我知道对于主索引(键),必须使用OrderPreservingPartitioner才能进行查询。起初,我认为对于二级索引,没有这样的限制,但我注意到start键是GetIndexedSlicesCommand的一部分。这是否意味着在RandomPartitioner下,此命令不可用?

您不需要OrderPreservingPartitioner按行键进行查询,仅当您希望按行键获取有意义的行范围时才需要此命令,如“键在5到9之间的所有行”。(请注意,几乎总是可以而且应该这样做。)


get_indexed_切片的开始键的行为与get_range_切片的行为相同。也就是说,当使用RandomPartitioner时,它对于检查两个键之间的一系列行不是很有意义,但是对于在许多行之间进行分页是很有用的。在这个话题上甚至有一个新的话题。基本上,如果要从获取索引切片的调用中获得大量结果,您不希望一次获取所有结果,而是希望一次获取一个块(10、100或1000,取决于大小),然后将开始键设置为您在上一个区块中看到的最后一个键,以获取下一个区块。

您是说可以使用RandomPartitioner获取键在5到9之间的行范围吗?因为根据我正在阅读的内容,这不仅是不推荐的,而且是不可能的。不,这需要一个OrderPreservingPartitioner。所以当我有RP时,我需要如何调用get_indexed_slices,第一次调用时提供哪个启动键?我的理解是,在幕后,它将被转换为MD5,因此会跳过所有MD5低于起始键的键吗?在第一页的起始键中使用空字符串——它具有比其他所有键都“少”的特殊属性。第一页之后的每一页都将使用上一页的最后一个键作为其开始键;请注意,您还需要忽略第一行之后所有页面上的第一行,因为这是您之前已经看到的一行。