资源标识符:从生成到存储的全面解析
1. 资源标识符概述
在资源管理中,我们常常需要为资源分配唯一的标识符。例如,像 books/AHM6A83HENMP~ 这样的标识符,它可以有不同的表现形式,如使用小写字母和连字符来提高可读性,像 books/ahm6a83henmp~ 或 books/ahm6-a83h-enmp~ 。在某些情况下,我们需要全局唯一的标识符,其数量应至少与标准 UUID(通用唯一标识符)相当。UUID 是一个 128 位的 ID,由 32 个十六进制数字表示,其中 6 位用于存储 ID 的元数据,剩下 122 位作为标识符的值。使用 Crockford 的 Base32 编码,大约需要 24 个字符来表示 120 位的标识符,再加上一个校验位,总共 25 个字符,可能会得到类似 books/64s36d-1n6rv-kge9g-c5h66~ 的标识符,这里的连字符是可选的,且字母大小写不敏感。此外,为了区分标识符和别名,我们可能会在标识符前加一个 “0” 字符。
2. 标识符的生成
2.1 生成者的选择
在生成标识符时,首先要考虑由谁来创建这些标识符。允许 API 用户选择自己的标识符是非常危险的,应该避免,原因如下:
- ID 冲突问题 :由于标识符具有永久性,不能被重复使用,当用户想要重新创建一个资源时,可能会收到 ID 冲突的错误消息,即使他们确定该 ID 的资源现在不存在,但它在过去曾被使用过。而且人类不擅长从给定集合中随机选择值,这会增加冲突的可能性。 <
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



