假设使用OrderPreservingPartitioner并且rowkeys严格按升序排列,是否有一种简单的方法可以使用Cassandra客户端获取最近添加的行的行密钥?我知道我可以执行get_range_slices查询来获取所有行并迭代,直到找到最后一行键为止。但我觉得这将是一个耗时的操作。如何获取在Cassandra中添加的最后一行的行密钥
4
A
回答
3
即使按升序排列&使用OPP,我不认为有可能得到最后插入的rowkey。
- 一个天真的解决方案是将最后插入的密钥存储在文件 或类似的一些手段。不要联想到cassandra:P
- 如果您想卡住cassandra,最好将所有原始CF(OCF)插入的行键存储在临时CF(TCF)列中。请确保您的TCF的
comparator
是与您的OCF解决方案2将让您的OCF的最后插入row_key作为排在TCF最后一列的key_validation_class
。您可以使用反向范围切片上一列以获得从去年第一;)
SELECT FIRST 1 REVERSED * from TCF where KEY='yourkey'
您可以控制使用列的到期财产Temporary_CF行的大小和数据建模这种方式可以给你一个选择最后还要插入n个row_keys。
SELECT FIRST N REVERSED * from TCF where KEY='yourkey'
1
使用模式:我们经常需要加载最后添加的行
实施:序列化之前的 “反向” RowKey;使用OrderPreservingPartitioner;使用“timestamp”作为RowKey。
例如,您的RowKey是一个很长的数字(表示时间戳)。然后,使用还原的(Long.MAX_VALUE - timestamp)来序列化时间戳。第一行将是插入的最后一行。
0
如果您绝对需要知道节点网络中时间戳详细信息的最后一行......我无法想到任何事情。
但cassandra通过most-recent-timestamp-wins解决了竞争的单元(行+列)更新,所以对于所有插入也更新与该表对应的单个行中的单个列,并使用ALL查询该单元。我建议为每个columnfamily/table使用不同的行,以防止使一行的更新过多地成为瓶颈。
如果有两个相互竞争的相同时间戳更新......那么我们可能在这一点上是哲学问题。除非你想要网络化的序列发生器的一些放缓点,这很糟糕。
删除从ALL到QUORUM或ONE的一致性可能会加快速度行插入的速度,这取决于您需要的结果的确切程度。
相关问题
- 1. 如何获取cassandra的长行中的最后一行“
- 2. 如何获取textarea的最后一行?
- 3. 在cassandra中添加一列的行
- 4. 如何使用Cassandra CQL获取此表的最后50行?
- 5. Cassandra如何在表中添加集群密钥?
- 6. 监视添加的文件并获取最后添加的行
- 7. cassandra中的密钥库密码如何加密?
- 8. 如何查询cassandra的一组密钥?
- 9. 如何在linux的最后一行添加行数
- 10. 如何使用Javascript在tbody的最后一行添加行
- 11. 如何在uitableview的最后一行添加新行
- 12. 在最后一行下方添加行
- 13. 如何获取cassandra(php)中主键的最后一个值?
- 14. 如何在最后一行之前添加一行C
- 15. 如何从DataFrame获取最后一行?
- 16. 如何添加类=“最后”到最后一行在环路
- 17. 获取最后唯一的行Excel中
- 18. PHP - 获取CouchDB中的最后一行
- 19. Cassandra:获取密钥空间大小
- 20. 如何在Ruby on Rails中获取数组的最后一行?
- 21. 如何在iOS中添加一行字符串到UITableView的最后一行?
- 22. 将行添加到使用前一行的当前密钥
- 23. 在Cassandra中获取密钥空间的创建时间
- 24. 添加行后获取唯一字段?
- 25. 如何向特定类的最后一行添加表格行?
- 26. 获取最后一行PER
- 27. Codeigniter获取行对象的密钥
- 28. 获取SortList中的最大密钥
- 29. 获取字典中的最大密钥
- 30. 如何从分组行中的第一行/最后一行获取值?