cassandra - 如何获取 Cassandra 中添加的最后一行的行键

标签 cassandra thrift

假设使用OrderPreservingPartitioner并且行键严格按升序排列,是否有一种简单的方法可以使用Cassandra客户端获取最近添加的行的行键?我知道我可以执行 get_range_slices 查询来获取所有行并迭代直到最后找到最后一个行键。但我觉得这将是一个耗时的操作。

最佳答案

我认为不可能获得最后插入的行键,即使它们按升序排列并且使用了 OPP。

  1. 一个简单的解决方案是将最后插入的 key 存储在文件中 或者类似的一些手段。不要为此考虑 cassandra :P
  2. 如果您想继续使用 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/

相关文章:

cassandra - 在模式中适当使用 Supercolum

java - Jackson FAIL_ON_UNKNOWN_PROPERTIES 到 false 不工作

out-of-memory - 同时运行多个 Hive 查询时 Thrift 驱动程序 OutOfMemory

scala - Apache thrift 是否与 Scala 一起工作

docker - Cassandra 的 cqlsh 无法连接到任何服务器 : Last error: [SSL] internal error (_ssl. c:727)")

database - 如何为 Cassandra 中的列添加 NOT NULL 约束?

database - cassandra GUI有什么软件或者工具吗?

Cassandra - 具有相同时间戳的混合列更新的冲突解决方案

java - 没有 servlet 的 Guice 请求范围注入(inject)(在 RPC 服务器中)