假设使用OrderPreservingPartitioner并且行键严格按升序排列,是否有一种简单的方法可以使用Cassandra客户端获取最近添加的行的行键?我知道我可以执行 get_range_slices 查询来获取所有行并迭代直到最后找到最后一个行键。但我觉得这将是一个耗时的操作。
最佳答案
我认为不可能获得最后插入的行键,即使它们按升序排列并且使用了 OPP。
- 一个简单的解决方案是将最后插入的 key 存储在文件中 或者类似的一些手段。不要为此考虑 cassandra :P
- 如果您想继续使用 cassandra,最好将原始 CF (OCF) 的所有插入行键存储在临时 CF (TCF) 中作为列。确保 TCF 的
comparator
与 OCF 的key_validation_class
相同
解决方案 2 会将 OCF 最后插入的 row_key 保留为 TCF 中行的最后一列。您可以在列上使用反向范围切片来获取最后一个中的第一个;)
SELECT FIRST 1 REVERSED * from TCF where KEY='yourkey'
您可以使用列的到期属性来控制 Temporary_CF 中行的大小,并以这种方式对数据进行建模也可以让您选择在最后插入 n 个 row_key。
SELECT FIRST N REVERSED * from TCF where KEY='yourkey'
关于cassandra - 如何获取 Cassandra 中添加的最后一行的行键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10546078/