要求:
我们需要为商户分配一个随机的、足够长的数字/字符串,以便他们是唯一可识别的(不希望有人猜测标识符)。这是必需的,因为我们将此数字/字符串打印为二维码并将其提供给商家,以便我们的用户可以读取二维码并获取有关商家的信息。
当前实现:
我们无法打印 id,因为它们将是连续的,因此我们引入了一个新字段 (externalId) 来存储由 JUG UUID 生成器的 TimeBasedGenerator 生成的唯一 id。随着研究的深入,我发现 UUID 存在性能问题。所有的文章都谈到 UUId 作为主键,我没有使用 UUID 作为主键,而是作为辅助标识符。我不担心插入和更新,因为与搜索相比它们会更少。由于用户将从打印的 QR 码读取的 UUID 发送给我们,我们需要使用此 UUID 字段搜索商家,因此会对性能产生巨大影响。
根据我的解决方案:
我们将给出 ID:UUID 的组合,而不是 UUID,这样当我们收到请求时,我们可以使用 ID 拆分和获取商家,并检查我们数据库中存在的 externalId(UUID) 是否与那个匹配提供,如果匹配,我们将返回商家,否则不返回。
此解决方案是否会显着提高性能,或者字符串操作所花费的时间会使效果无效。
有没有更好的方法来做到这一点?
谢谢