我有一个以 timeuuid 作为集群键的表。
CREATE TABLE event (
domain TEXT,
createdAt TIMEUUID,
kind TEXT,
PRIMARY KEY (domain, createdAt)
);
我希望按此集群键的顺序选择数据,并提供以下保证 - 如果我选择了某些内容,将来这些记录之前将不会有任何插入(因此我可以遍历记录检查发生的新情况,而不会有跳过任何内容的风险事件)
SELECT kind FROM event WHERE domain = ? AND createdAt > lastCreatedAtWeAreAwareOf
如果我在客户端上生成 timeuuid 并使用并行插入到 scylla,那么从技术上讲,最近的 timeuuid 可能会在几个较旧的之前被首先插入(比如由于说一些网络问题),我可能会在我的选择中错过这些记录。
有什么可能的方法来解决这个问题?
我尝试使用currentTimeUUID
函数,它似乎可以工作(在同一个分区键内单调增加)但会创建很多重复项(每个分区键有 20-40 个重复项),即我最终得到了很多完全相同的记录currentTimeUUID
(我真的想要一种避免重复的方法,它会使选择过程复杂化并消耗不必要的资源)
我也很好奇使用currentTimeUUID
函数时是否存在向后时钟跳跃的威胁?