多くの Web サイトが、データベース テーブルで 1 からインクリメントするのではなく、ランダムな id:s を使用することを選択するのはなぜでしょうか。正当な理由が見つからずに検索しましたが、何かありますか?
また、どの方法を使用するのが最善ですか?データを挿入する前にIDがすでに存在するかどうかを確認するのは非常に非効率的です(2番目のクエリが必要です)。
ご協力いただきありがとうございます!
内部では、行を識別するためにデータベース内の増分 ID を使用している可能性がありますが、URL パラメータを介してエンド ユーザーに公開される値は、多くの場合、使用可能なオブジェクトのシーケンスを推測しにくくするためにランダムな文字列になります。 .
それは、あいまいさによるセキュリティの問題です。自動化されたスクリプトが増分値を処理して URL を介して攻撃を試みるのを妨げ、サイト コンテンツの自動スクレイピングを妨げます。
たとえば、YouTube が のような値の代わりに増分 ID を使用した場合、その値v=HSsdaX4s
から始めて何百万回も増分するだけで、すべてをダウンロードできますv=1
。
シーケンシャル ID はうまくスケーリングできません (分散システムでは同期のボトルネックになります)。
また、新しく生成されたランダム ID が既に存在するかどうかを確認する必要はありません。存在しないと想定できます (非常に多くの ID があるため)。
IDがランダムだと確信していますか?またはそれらはエンコードされていますか?いずれにしても安全のためです。