鉴于 TimeUUID 可以方便地使用 now()
在 CQL 中,您是否有任何理由不继续使用 TimeUUID 而不是普通的旧 UUID?
最佳答案
UUID
和 TIMEUUID
在 Cassandra 中以相同的方式存储,它们只真正代表两种不同的排序实现。TIMEUUID
列首先按时间分量排序,然后按原始字节排序,而 UUID
列首先按它们的版本排序,然后如果它们都是版本 1,则按它们的时间组件,最后按它们的原始字节。奇怪的是,时间分量排序实现在 UUIDType
之间是重复的。和 TimeUUIDType
在 Cassandra 代码中,除了不同的格式。
我想到了UUID
对比 TIMEUUID
问题主要作为文档:如果您选择 TIMEUUID
你是说你按时间顺序存储东西,而且这些东西可以同时发生,所以一个简单的时间戳是不够的。使用 UUID
说您不关心顺序(即使在实践中,如果您将版本 1 的 UUID 放入其中,列将按时间排序),您只想确保事物具有唯一的 ID。
即使使用 NOW()
生成 UUID
values 很方便,其他人阅读你的代码也很惊讶。
从总体上看,这可能无关紧要,但是排序非版本 1 UUID 比版本 1 快一点,所以如果您有 UUID
列并自己生成 UUID,换一个版本。
关于Cassandra UUID 与 TimeUUID 的优缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17945677/