给定一个 Cassandra 数据库,是否有一种以 FIFO 方式获取记录的机制,以便可以按插入时间的升序读取记录。我基本上需要分批读取 N 最旧的行,处理它们并在处理完成后删除该批次。
据我了解,列按其类型排序(由 CompareWith 指定),行按其分区器排序。
我可以使用 OrderPreservingPartitioner 按插入时间的升序对行进行排序吗?我在单个节点上运行 Cassandra,所以我并不担心密钥的分配。如果可以使用 OrderPreservingPartitioner,如何配置我的键的排序条件,以便记录按插入的升序维护?
或者,Hector 是否提供了一种始终获取行的机制,以便首先获取最旧的行?
编辑 :
看完rs_atl的帖子后,我还有一些疑问:
如果我正确理解了这一点,我将创建一个以 TimeUUIDType 作为比较器的列族。然后,我将不得不对列名使用时间戳。我想到的直接问题是如何将列名的排序顺序定义为升序或降序?我可以在创建列族时执行此操作,还是必须通过客户端 API 执行此操作?
如果我决定使用“小时”作为我的分片间隔,即,如果我将小时附加到我的键,我如何检索最早一小时的行?