gpt4 book ai didi

java - 使用填充 0 进行整数到 UUID 的转换

转载 作者:行者123 更新时间:2023-11-29 07:23:13 25 4
gpt4 key购买 nike

我有一个关于 UUID 生成的问题。

通常,当我生成 UUID 时,我将使用随机或基于时间的生成方法。

但是,我正在将旧数据从 MySQL 迁移到 C* 数据存储,并且需要将旧(自动递增)整数 ID 更改为 UUIDS。我没有创建另一个使用旧整数 ID 作为主键并复制所有数据的非规范化表,而是想知道人们如何看待将 0 填充到整数 ID 的前面以形成 UUID。下面的例子。

*需要注意的是,旧版 ID 的最高值永远不会超过 100 万,因此溢出并不是真正的问题。

这个想法看起来像这样:

旧 ID:123456 ---> UUID:00000000-0000-0000-0000-000000123456

这可以使用一些字符串连接和 UUID.fromString("00000000-0000-0000-0000-000000123456"方法来完成。

这对任何人来说都是一个不好的模式吗?我不太喜欢这个想法,这让我觉得不好,但我没有技术原因,哈哈。

就碰撞而言,发生碰撞的概率仍然低得离谱。所以我并不担心碰撞会增加。我想这对我来说似乎是一种不好的做法,因为它“太容易了”。

最佳答案

之前,当我们从使用序列生成的 id 的 Oracle 迁移到使用生成的 UUID 的 Cassandra 时,我们也遇到过同样的问题。

我们必须设计一种类型来支持来自 Oracle 的旧数据,类型为 long和新数据 uuid .

显而易见的解决方案是使用类型 blob来存储id。一个 blob 可以编码 longuuid .

此解决方案仅适用于分区键,因为您使用 = 查询它们。它不适用于使用 > 等运算符的聚类列。或<因为我们需要对它们的值进行排序。

当时有一个小小的反对意见,就是使用blob存储 id 使其对用户不透明,例如在 cqlsh 中,当您执行 SELECT 并且需要提供 id 时,您将如何创建 blob?

还好,CQL的原生函数bigIntAsBlob() , blobAsBigInt() , uuidAsBlob()blobAsUUID()非常方便。

关于java - 使用填充 0 进行整数到 UUID 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35372052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com