我正在阅读the Datastax CQL reference:
可能会覆盖非预期数据的冲突 被覆盖不会发生。
有人可以向我解释为什么永远不会发生碰撞吗?这是不可能的还是"高度"不可能?
答案 0 :(得分:5)
Cassandra的timeuuid是Version 1 UUID,它基于生成UUID的机器的时间和MAC地址。
使用的时间精确到100ns,因此碰撞的可能性非常小(纳秒是百万分之一毫秒)。
答案 1 :(得分:2)
Cassandra timeuuid是版本1 UUID(Type 1 UUID),它基于:
对序列号使用伪随机数可提供16,384个机会中的1,即每个UUID类具有唯一ID。
如果每毫秒生成超过10000 UUID,则它们可能会发生冲突。
1毫秒= 10 ^ 6 ns
如果我们采用ns级时间戳,你可以生成10 ^ 6 UUID 因为我们把时间戳记作为100ns计数。
我们将在一毫秒内拥有最多10000个唯一时间戳。
现在在一台机器上产生的数量超过一台(具有相同的MAC地址),有可能发生碰撞,我们还需要考虑序列号。
如果您的应用程序每毫秒产生的次数超过10000,请使用另一列制作复合键,以避免冲突。