Ric*_*ard 29
您可以使用TimeUUIDCassandra中的类型,它支持Type 1 UUID.这使用当前时间和创建者的MAC地址和序列号.如果正确生成了TimeUUID号,则可以通过零冲突完成(您可以使用CQL now() 方法或插入自己的方法,java SDK提供一些线程安全的实现).主要优点TimeUUIDs是ID可以按时间排序.有关详细信息,请参阅http://wiki.apache.org/cassandra/TimeBaseUUIDNotes.
但是,时间排序不太可能对行主键有用,因为使用散列分区器时排序是无用的,尽管可能使用集群键.而且,如果您自己动手,生成唯一ID的复杂性可能会成为错误的根源.Cassandra还通过使用类型支持Type 4 UUIDUUID.这些只是随机位.存在碰撞概率,但碰撞概率(假设不相关的随机数源,如果您在Java中生成则会非常低) - 如果您在100年内创造10亿秒,则一次碰撞的概率约为50% .(有关详细信息,请参阅http://en.wikipedia.org/wiki/Universally_unique_identifier#Random_UUID_probability_of_duplicates.)
您应该使用Twitter Snowflake进行调查.从项目自述:
当我们在Twitter上从Mysql转向Cassandra时,我们需要一种新的方法来生成id号.在Cassandra中没有顺序id生成设施,也不应该存在.
Snowflake使用直观的算法生成长度,这些长度既有时间顺序又有独特性.由于您的数据库是分布式的,因此该服务应该很适合您的需求.
| 归档时间: |
|
| 查看次数: |
32899 次 |
| 最近记录: |