Laravel ID 主要自动增量替代方案

are*_*ty_ 2 php auto-increment laravel

在我的应用程序中,大多数 ID(user_id、classroom_id、post_id、assessment_id 等)都是公开可用的,这意味着它们要么位于 URL 中,要么位于目录名称中。出于安全原因,我\xe2\x80\x98d 希望每个表都有 10 个字符的随机 ID,而不是自动递增的 ID。

\n\n

我可以使用时间戳,但这并不是\xe2\x80\x98t 真正唯一的,并且添加随机数后,它会变得更长(例如,我必须添加 4 个随机数来处理每秒最多 10.000 个数据库插入到表中的操作。 ..纯粹是假设它是不可扩展的)。

\n\n

现在我\xe2\x80\x99d更喜欢创建一个10个字符的随机ID,这会给我100亿种可能的ID组合。所以生成重复的机会很小,长度也可以接受。

\n\n
use Keygen;\n\n$id = Keygen::numeric(10)->generate();\n
Run Code Online (Sandbox Code Playgroud)\n\n

你觉得我的想法有道理吗?有谁知道使用 10 个字符的主 ID 是否会对我的数据库性能产生负面影响?谢谢!

\n

Rez*_*azi 6

我可以推荐三个用于 ID 生成的包。

  1. Webpatser 的 Laravel UUID 包
    允许为模型生成 UUID,设置和使用相当简单。这种类型的 ID 是不可预测的,可能被认为更安全,但无法在数据库中排序。 吉图布
  2. Vinkla 的 Laravel Hashids 包
    保留您当前的 ids 并获取可以解密以公开混淆 ids 的哈希值。吉图布
  3. Hafael的Laraflake封装了
    Twitter雪花一样的id生成,性能好,功能也比较好,id可以排序。吉图布

您可以查看所有三个可用的软件包,然后选择一个,或者您也可以从这些软件包中获得灵感来制作 DIY 解决方案。