【发布时间】:2015-12-09 03:56:45
【问题描述】:
假设我们有一个系统,它将电子商务订单作为一行存储在数据库中,并且使用顺序递增的 int 作为主键。
现在我们想向客户公开订单 ID,但通过使用数据库行 ID 作为订单 ID,客户将能够计算出订单量。
建议使用 Lehmer 随机数生成器 来混淆 ID。系统的上限设置为 2^31 -1,这是推荐的素数,并在许多库中使用。由于许多库使用的素数和乘数已经是provided it,因此最好使用其中之一,因为该数字已作为素数进行验证和测试。
但是使用这些数字不会提供任何混淆,因为它很容易为增量序列重新生成结果。
订单ID,客户ID通常由系统生成而不暴露数据库序列。
UUID不是一个选项,上限是2^31 -1
【问题讨论】:
标签: random database-design uniqueidentifier