API 标识符与标准方法详解
1. 标识符校验与数据库存储
在处理标识符时,有几个关键步骤。首先是将标识符拆分为值和校验字符,接着把 Base 32 值解码为原始字节,最后检查计算出的校验值是否与提供的一致。
1.1 数据库存储选择
在数据库中存储标识符时,我们只需存储实际的标识符,校验字符和其他元数据不应存储在数据库中,而是在接收到 ID 时动态计算校验值进行验证,在输出 ID 时动态添加校验字符。这样做的好处是,如果需要更改校验值的计算算法,无需重写数据库中的每个条目。
存储标识符有以下三种常见方式:
- 字符串存储 :许多数据库(特别是键值存储系统)擅长使用字符串值作为标识符。我们可以直接存储资源标识符的字符串表示(去除校验字符)。Crockford 的 Base 32 编码能保持排序顺序,确保数据库和客户端的排序行为一致。但并非所有数据库都擅长存储和索引字符串值,而且存储字符串表示会浪费空间,因为每个 8 位字符仅代表 5 位实际数据。
- 原始字节存储 :许多数据库善于使用原始字节字段作为标识符。我们可以使用原始字节数据类型(如 MySQL 的 BINARY)作为主键,实施唯一性约束并添加索引,使单键查找查询快速简单。
- 整数存储 :如果合理选择标识符的大小,使其能适配常见的整数类型(如 32 或 64 位),这可能是最佳选择。因为几乎所有数据库都擅长存储和索引数值。我们只需将标识符表示的字节视为整数即可。
1.2 UUID 的使用与比较
UUID(通用唯一标
超级会员免费看
订阅专栏 解锁全文
1019

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



