Cassandra UUID 与 TimeUUID 的优缺点

标签 cassandra uuid cql cql3 timeuuid

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

最佳答案

UUIDTIMEUUID在 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/

相关文章:

android - 如何使用Qt从iOS连接到蓝牙低功耗设备?

c++ - rpcrt4.dll 是否是开源/免费库?我可以将该库捆绑到我的应用程序吗

Cassandra 时间序列排序

cassandra - 如何在 CQL 3 中仅返回一些映射键(又名,切片一系列映射/集合元素)?

cassandra - 在 Cassandra 中,如果我运行一个递增计数器的查询,那么从该计数器中选择是原子的吗?

cassandra - noSQL 回滚功能

使用 CQL3 的 Hadoop 多输出

java - Datastax DSE Cassandra、Spark、Shark、独立程序

select - 在 select 语句 Cassandra 中的 where 子句之后替代 OR 条件

database - 我应该使用 UUID 还是其他什么?