Cassandra:分区键的数据类型-十进制或UUID
我想先描述一下我正在处理的问题:Cassandra:分区键的数据类型-十进制或UUID,cassandra,Cassandra,我想先描述一下我正在处理的问题: 目前,我试图找到一种策略,允许我将现有PostgreSQL数据库中的数据迁移到Cassandra集群中。PostgreSQL中的主键是一个25位的十进制值。当我迁移数据时,如果我能以这样或那样的方式保留当前主键的值,并使用它在Cassandra中唯一地标识数据,那就太好了。这个键应该用作Cassandra中的分区键(我所说的表中不涉及其他列)。在做了一些研究之后,我发现一个很好的实践是在Cassandra中使用UUID。因此,现在我有两种可能的解决方案来解决我的
目前,我试图找到一种策略,允许我将现有PostgreSQL数据库中的数据迁移到Cassandra集群中。PostgreSQL中的主键是一个25位的十进制值。当我迁移数据时,如果我能以这样或那样的方式保留当前主键的值,并使用它在Cassandra中唯一地标识数据,那就太好了。这个键应该用作Cassandra中的分区键(我所说的表中不涉及其他列)。在做了一些研究之后,我发现一个很好的实践是在Cassandra中使用UUID。因此,现在我有两种可能的解决方案来解决我的问题:
提前感谢您的回答。我知道UUID有两个好处 首先,它们可以独立生成,几乎不会发生碰撞。这在分布式系统中非常有用,因为您经常有多个客户端希望插入具有唯一密钥的数据。在RDBMS中,我们拥有自动递增字段以提供唯一性的特权,因为这可以很容易地以原子方式完成,但在分布式数据库中,我们没有高效的全局原子锁来完成这一点 第二个优点是UUID的存储效率相当高,只需要8个字节
只要您的旧十进制值是唯一的,您就应该能够将它们用作分区键。我知道这样做的好处是,它们可以在几乎没有冲突的情况下生成(至少在几百年内)。但因为我有一个转换规则,可以将UUID转换为25位十进制值,所以我不应该失去这个好处。转换将考虑UUID的每个字节,因此不会丢失任何信息,并且仍然保存唯一性。您确定UUID只需要8个字节来存储它们吗?据我所知,UUID是128位(16字节)的值。因此我不明白为什么它们需要更少的字节来存储它们。我认为你是对的。UUID看起来使用了16个字节。我可能一直在想时间戳,它是8个字节。