【发布时间】:2017-05-29 11:44:37
【问题描述】:
我们有存储用户令牌的表(即 accessTokens)。
问题是,有时令牌的长度可能超过 255,而 MySQL/MariaDB 无法将其存储到在该列上具有唯一索引的表中。
我们需要唯一索引,因此一种解决方案是添加具有最大 255 长度的令牌哈希的附加列,并为其添加唯一索引。任何搜索/保存都会经过这个哈希,匹配后,我们选择整个令牌并将其发回。经过大量思考和谷歌搜索,这可能是此用例唯一可行的解决方案(但您可以尝试再给我们一个)。
我们现在生成的每个令牌至少是部分随机的,因此哈希冲突的可能性很小,用户不会永远卡在下一个请求中,它应该通过。
你知道2017年有什么好的现代方法吗?有一些有关此方法的哈希冲突的统计数据将不胜感激。
哈希仅供内部使用 - 我们不需要它是安全的(快速不安全的哈希对我们来说是最好的),它应该足够长以降低冲突的可能性,但绝对不能超过 255 长度限制。
PS:设置允许更多长度的特殊版本的数据库/表是不可行的,我们在一些不迁移的旧系统中也需要它。
【问题讨论】:
标签: mysql indexing hash token mariadb