我正在研究一个存储单词出现次数的cassandra数据库。我想找出最多出现100个单词。在关系数据库中,它是这样的:
select * FROM wordcounter ORDER BY counts DESC LIMIT 100;
但是在cassandra中按counter-column
排序是不可能的。
所以,我必须定期(可能每天一次)获取所有行,并将具有最高计数器的100个单词写入数据库。以下不是一个选项;
select * FROM wordcounter
因为这会返回过多的数据。我必须以增量的方式进行,但是如何(以及每个查询可以接受多少行)?
更新
据说可以迭代所有cassandra行,但我使用PHP pdo
与cassandra&就我所见,它肯定没有迭代功能。但我发现我可以通过token
进行查询,因此这是可能的;
select * FROM wordcounter LIMIT 100;
然后继续循环,直到返回0结果
select * FROM wordcounter WHERE token(word) > token('lastword') LIMIT 100;
所以这基本上是OFFSET
的等价物,这将允许我处理数据集的一部分,而不必一次查询所有数据集。但我想这确实意味着我无法在多个系统上分发查询。有没有人知道任何替代方案?