【发布时间】:2014-02-18 18:31:04
【问题描述】:
为什么在 Cassandra 中键通常定义为 UUID。看起来密钥是在客户端生成的,那么为什么不直接存储为字符串呢?专门存储为 UUID 有什么好处?
【问题讨论】:
标签: architecture nosql cassandra uuid
为什么在 Cassandra 中键通常定义为 UUID。看起来密钥是在客户端生成的,那么为什么不直接存储为字符串呢?专门存储为 UUID 有什么好处?
【问题讨论】:
标签: architecture nosql cassandra uuid
Cassandra 可能有任何密钥,无论如何,密钥都是bytearray。如果客户想要拥有像“foobar”这样的键或任何其他任意长度的字符串,它没有任何问题。 Cassandra 客户端在传输到 Cassandra 服务器之前将其转换为字节数组。从技术上讲,它将在服务器端存储为“foobar”。
在决定密钥格式时还需要考虑其他事项:
get,到slice 和过度忽略的delete,人们经常发现UUID 是一个很好的折衷方案【讨论】:
Cassandra Keys 可以定义为任何类型(或它们的组合),因此您不受 UUID 的限制。
但至于为什么要在字符串上使用 UUID:
UUID 是 128 位。字符串是可变长度的,UUID 的字符串十六进制表示需要 32 个字符。如果您使用 16 位 unicode 字符,则意味着每个键将需要 512 位或 4 倍的空间。
【讨论】:
当有大量行时,这可以节省磁盘空间。
当存在大量 if 行时,通过减少从磁盘获取的数据量来提高性能。
【讨论】: