生成简短的唯一标识符

整理

我正在寻找一种算法,该算法可生成既适用于URL的外部使用又符合以下要求的持久性的标识符:

  • ,最大。共8个字符
  • 网址友好,因此没有特殊字符
  • 人性化,例如没有像L / l,0 / O这样的模棱两可的字符
  • 增量式快速索引
  • 随机以防止在不知道算法的情况下进行猜测(会很好,但并不重要)
  • 唯一,无需检查数据库

我研究了各种解决方案,但发现的所有问题都有一些重大的折衷。例如:

  • GUID:太长,不能增量
  • GUID base64编码:仍然太长,不能增量
  • GUID ascii85编码:简短,不能增量,太多不合适的字符
  • 诸如base32,base36之类的GUID编码:简短,但信息丢失
  • 梳状GUID:太长,但增量
  • 所有其他基于随机性:要求检查数据库的唯一性
  • 基于时间:在群集或多线程环境中容易发生冲突

编辑:为什么这被标记为脱题?需求描述了可以为之提供众多合法解决方案的特定问题。实际上,这里的一些解决方案非常好,我在选择一个标记为答案的解决方案时很挣扎。

斯科特·汉嫩

如果可能的话,我会将用户需求(简短,易读)和数据库需求(增量,快速索引)分开。面向用户的需求发生了变化。您不需要修改表,因为明天您决定更改面向用户ID的长度或其他详细信息。

一种方法是使用用户友好的字符(例如
23456789ABCDEFGHJKLMNPQRSTUVWXYZ随机生成)来生成您的ID

但是,当插入数据库时​​,不要使该值成为它引用的记录的主键,甚至不要将其存储在该表中。使用标识主键将其插入到自己的表中,然后将其intbigint键与您的记录一起存储

这样,您的主表可以具有增量主键。如果您需要通过记录的“友好” ID来引用记录,则可以加入友好ID表。

我的猜测是,如果您生成的这些ID数量足够大而您担心索引性能,那么人类用户检索这些值的速度将大大降低。因此,在友好ID表中对随机值的查找稍微慢一点将不会成为问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

生成简短的唯一标识符

来自分类Dev

Facebook 如何生成唯一标识符

来自分类Dev

星号,每次调用生成唯一标识符

来自分类Dev

如何生成8位数字的唯一标识符以替换python pandas中的现有标识符

来自分类Dev

如何生成8位数字的唯一标识符以替换python pandas中的现有标识符

来自分类Dev

iCloud唯一标识符

来自分类Dev

添加唯一标识符

来自分类Dev

唯一的Linux系统标识符

来自分类Dev

获取对象的唯一标识符

来自分类Dev

Excel:创建唯一标识符

来自分类Dev

tvOS唯一设备标识符

来自分类Dev

用唯一标识符标识WebElement

来自分类Dev

如何为具有特定内容的哈希生成唯一标识符?

来自分类Dev

构建唯一标识符生成器的最佳方法

来自分类Dev

生成可以区分ID(Foo :: a())与ID(Foo :: b())的唯一标识符

来自分类Dev

如何自动生成复杂标识符并确保唯一性?

来自分类Dev

生成带有校验位的唯一公共用户标识符

来自分类Dev

可以使用Ticks of DateTime.Now生成重复的唯一标识符吗?

来自分类Dev

如何自动生成复杂的标识符并确保唯一性?

来自分类Dev

在RavenDB中为文档生成唯一标识符的策略

来自分类Dev

如何生成与给定模式匹配的随机看起来唯一的标识符

来自分类Dev

尝试实现从方法生成的 UUID(随机唯一标识符)

来自分类Dev

Javascript GUID(全局唯一标识符)生成器说明

来自分类Dev

Angular 2 没有为选择箭头 div 生成唯一的组件标识符

来自分类Dev

如何为具有唯一键的一组记录生成唯一标识符?

来自分类Dev

使用UUID为特定字符串生成唯一标识符是否安全(就唯一性而言)?

来自分类Dev

使用UUID为特定字符串生成唯一标识符是否安全(就唯一性而言)?

来自分类Dev

如何获得唯一的线程标识符?

来自分类Dev

为给定类别创建唯一标识符(Python)

Related 相关文章

  1. 1

    生成简短的唯一标识符

  2. 2

    Facebook 如何生成唯一标识符

  3. 3

    星号,每次调用生成唯一标识符

  4. 4

    如何生成8位数字的唯一标识符以替换python pandas中的现有标识符

  5. 5

    如何生成8位数字的唯一标识符以替换python pandas中的现有标识符

  6. 6

    iCloud唯一标识符

  7. 7

    添加唯一标识符

  8. 8

    唯一的Linux系统标识符

  9. 9

    获取对象的唯一标识符

  10. 10

    Excel:创建唯一标识符

  11. 11

    tvOS唯一设备标识符

  12. 12

    用唯一标识符标识WebElement

  13. 13

    如何为具有特定内容的哈希生成唯一标识符?

  14. 14

    构建唯一标识符生成器的最佳方法

  15. 15

    生成可以区分ID(Foo :: a())与ID(Foo :: b())的唯一标识符

  16. 16

    如何自动生成复杂标识符并确保唯一性?

  17. 17

    生成带有校验位的唯一公共用户标识符

  18. 18

    可以使用Ticks of DateTime.Now生成重复的唯一标识符吗?

  19. 19

    如何自动生成复杂的标识符并确保唯一性?

  20. 20

    在RavenDB中为文档生成唯一标识符的策略

  21. 21

    如何生成与给定模式匹配的随机看起来唯一的标识符

  22. 22

    尝试实现从方法生成的 UUID(随机唯一标识符)

  23. 23

    Javascript GUID(全局唯一标识符)生成器说明

  24. 24

    Angular 2 没有为选择箭头 div 生成唯一的组件标识符

  25. 25

    如何为具有唯一键的一组记录生成唯一标识符?

  26. 26

    使用UUID为特定字符串生成唯一标识符是否安全(就唯一性而言)?

  27. 27

    使用UUID为特定字符串生成唯一标识符是否安全(就唯一性而言)?

  28. 28

    如何获得唯一的线程标识符?

  29. 29

    为给定类别创建唯一标识符(Python)

热门标签

归档