我想知道为什么许多网站选择使用随机id:s而不是在数据库表上从1递增。我没有找到任何合理的理由进行搜索,有没有?
另外,哪种方法最好?在插入数据之前检查id是否已经存在似乎是非常低效的(接受第二次查询)。
感谢您的帮助!
答案 0 :(得分:9)
在幕后,很可能他们在数据库中使用增量ID来识别行,但是通过URL参数向最终用户公开的值通常被制成随机字符串以生成可用对象的序列更难猜测。
通过默默无闻的确是一个安全问题。它阻碍了自动脚本继续通过增量值并通过URL尝试攻击,并且阻碍了对站点内容的自动抓取。
例如,如果youtube使用增量ID而不是像v=HSsdaX4s
这样的值,则只需从v=1
开始并将该值增加数百万次即可下载每个。
答案 1 :(得分:4)
顺序ID不能很好地扩展(它们成为分布式系统中的同步瓶颈)。
此外,您不需要检查新生成的随机ID是否已经存在,您可以假设它不存在(因为它们有很多)。
答案 2 :(得分:1)
你确定id是随机的吗?或者他们编码?无论哪种方式都是为了安全。