鉴于TimeUUID可以方便地在CQL中使用now(),是否有任何原因使您不只是继续使用TimeUUID而不是普通的旧UUID?

最佳答案

UUIDTIMEUUID在Cassandra中的存储方式相同,它们实际上仅表示两种不同的排序实现。
TIMEUUID列首先按其时间分量排序,然后按其原始字节排序,而UUID列首先按其版本排序,然后如果两者均为版本1,则按其时间分量排序,最后按其原始字节排序。有趣的是,时间组件排序实现在Cassandra代码中的UUIDTypeTimeUUIDType之间重复,除了格式不同。

我认为UUIDTIMEUUID问题主要是作为文档:如果选择TIMEUUID,则表示您是按时间顺序存储事物,并且这些事物可以同时发生,因此简单的时间戳是不够的。使用UUID表示您不关心顺序(即使实际上,如果您将版本1 UUID放入列中,列也会按时间排序),您只想确保事物具有唯一的ID。

即使使用NOW()生成UUID值很方便,其他人阅读您的代码也非常令人惊讶。

在总体方案中,这可能无关紧要,但是对非版本1 UUID进行排序的速度比版本1快一点,因此,如果您有UUID列并自己生成UUID,请使用其他版本。

关于cassandra - Cassandra UUID与TimeUUID的优缺点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17945677/

10-13 02:31