【发布时间】:2016-08-13 02:26:47
【问题描述】:
要求:
我们需要为商家分配一个随机的、足够长的数字/字符串,以便它们是唯一可识别的(不希望有人猜测标识符)。这是必需的,因为我们将此数字/字符串打印为二维码并将其提供给商家,以便我们的用户可以读取二维码并获取有关商家的信息。
当前实施:
我们无法打印 id,因为它们是连续的,因此我们引入了一个新字段(externalId)来存储由 JUG UUID 生成器的 TimeBasedGenerator 生成的唯一 id。随着研究的深入,我发现 UUID 存在性能问题。所有文章都谈到 UUId 作为主键,我没有使用 UUID 作为主键,而是作为辅助标识符。我不担心插入和更新,因为与搜索相比它们会更少。由于用户将从打印的二维码中读取的 UUID 发送给我们,我们需要使用此 UUID 字段搜索商家,因此会对性能产生巨大影响。
根据我的解决方案:
我们将给出 ID:UUID 的组合,而不是 UUID,这样当我们收到请求时,我们可以使用 ID 拆分和获取商家,并检查我们数据库中存在的 externalId(UUID) 是否与提供的匹配,如果匹配否则我们不会退回商家。
此解决方案是否会显着提高性能,或者字符串操作所花费的时间将使效果无效。
有没有更好的方法来做到这一点?
谢谢
【问题讨论】:
-
您是否搜索/阅读过有关 RSA 的任何内容? Java 中有一个可以创建 RSA 密钥的安全包。它是随机生成的,可以编码和解码。这是一些文档:docs.oracle.com/javase/tutorial/security/apisign/gensig.html
标签: java mysql performance uuid timeuuid