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