将不同格式和长度的ID转换为标准化的非序列ID

问题描述 投票:0回答:1

考虑一个问题,您希望为已经分配了不同格式标识号的对象分配固定格式的唯一标识号,基于其已分配的 ID

例如,您可能拥有具有以下 ID 的对象:

  • 207641
  • 200038018401
  • 23/1110/7611
  • 0.11.0800/B

并且您希望使用标准格式(即固定长度等)的标识符来识别它们。不必担心预先分配的 ID 不唯一。

标准方法(零填充等)在这里不起作用,因为还可能存在具有未知标识符号的对象。

我一直在思考的一些事情:

  1. 将每个字符转换为 ASCII 代码,并对基于质数或基于指数的乘积进行某种求和(朝这个方向进行)
  2. 散列(看起来有点像显而易见的答案,并且在某种程度上与选项 1 相关)
  3. 创建自己的UUID类型字符串或数字,但长度较小等(也非常相关)

我在这里缺少直观的解决方案吗?

database-design hash cryptography ids
1个回答
0
投票

尝试这个想法:

首先。识别现有标识符组。例如,

格式为

23/1110/7611
(第一组)

格式为

207641
(第二组)

等等

第二。对于每个组,定义一个函数将标识符转换为某些位组。

第三。定义新标识符的格式,其中某些部分将编码组编号。

第四。将每个组中的标识符转换为新格式。

第五。以新格式生成所有新 ID(具有单独的组编号)。


P.S. 我会使用 UUID 作为新格式。放置在时间部分中的旧组的数量(过去)。新的 uuid 将以标准方式生成。

© www.soinside.com 2019 - 2024. All rights reserved.