为什么在Cassandra键中通常定义为UUID。看起来密钥是在客户端生成的,为什么不直接存储为字符串?作为UUID专门存储有什么好处?Cassandra uuid作为行键
3
A
回答
3
Cassandra Keys可以被定义为任何类型(或其组合),因此您不受UUID限制。
但是,为什么你会使用UUID在一个字符串:
UUID是一个128位。字符串是可变长度,UUID的字符串十六进制表示将需要32个字符。如果您使用的是16位unicode字符,则意味着每个密钥需要512位或4倍的空间。
4
一个可能与卡桑德拉任意键,一键是bytearray
反正。如果客户想要拥有像“foobar”或其他任意长度的字符串,那么它没有任何问题。 Cassandra客户端在传输到Cassandra服务器之前将其转换为字节数组。从技术上讲,它将作为“foobar”存储在服务器端。
还有其他的事情之一需要考虑的关键方式决定时:
- 密钥长度对Cassandra的性能直接影响。保持它们尽可能短,以便它们对于所需的数据访问仍然有用。对数据访问无用的短密钥并不比具有更好获取/扫描属性的更长密钥更好。设计钥匙时需要权衡。如果你有很长的字符串作为键,那么把它们散列成UUID可能是个好主意。 您可以存储UUID为具有UUID像“f5606950-98d1-11e3-a5e2-0800200c9a66”而是一种更好的主意人类可读的字符串
- 注意是使用,只需占用16个字节来存储它的内部数据类型。
- 你需要做出决定是否使用OrderedPreservingPartitioner or RandomPartitioner前期,有取舍的数量,但什么是最重要的是它将如何影响整个集群密钥分发。通常使用OrderedPreservingPartitioner,因为它允许进行有意义的扫描,具体取决于它通常导致热/冷Cassandra节点的关键值。为了再次提供帮助,要么使用原始密钥的散列 - UUID,要么使用某个UUID预先输入一个真正的密钥。
- 你打算如何来访问你的钥匙,这正好从简单
get
,以slice
和过于忽略delete
,人们往往发现,UUID是一个很好的妥协 - 你打算如何进行负载均衡数据
1
当存在大量行时,这节省了磁盘空间。
当行数较多时,通过减少取出磁盘的数据量来降低性能。
相关问题
- 1. UUID Cassandra
- 2. 将Guid转换为Cassandra UUID
- 3. HashMap UUID或String作为键?
- 4. UUID cassandra排序?
- 5. Cassandra CompositeType作为行键验证程序
- 6. 作为主键不工作的UUID Laravel
- 7. 使用UUID作为主键的Laravel 4
- 8. Android:使用UUID作为SQLite的主键
- 9. 自定义UUID作为主键
- 10. 实现作为主键的UUID
- 11. Cassandra - 如何插入UUID
- 12. 复制,uuid字段作为主键,基于行的复制
- 13. 获取Cassandra行键
- 14. 可读行键cassandra
- 15. 为IndexedDB键生成UUID?
- 16. 从cassandra cli删除行键
- 17. 行键作为长型
- 18. Cassandra中的UUID真的“有必要吗?”
- 19. Cassandra UUID与TimeUUID的优点和缺点
- 20. Cassandra的数据建模和uuid
- 21. Postgresql UUID []给Cassandra:转换错误
- 22. Cassandra:如何从CLI中删除UUID?
- 23. UUID主键和Memcached
- 24. 作为列默认SQLite UUID
- 25. MySQL Workbench为主键自动生成UUID
- 26. PHP的mysql_insert_id()为MySQL的UUID()主键?
- 27. 在OpenSuse上运行Cassandra作为服务
- 28. cassandra未作为服务运行
- 29. MySQL为多行生成UUID()
- 30. Cassandra将UUID转换为字符串并返回