RDBの主キーはUUID使った方がいいのかという話
以前に見た動画につながる話なので読んだ
UUIDにも色々あってどれを使うか、そもそもUUIDが良いのかを考える必要がある
記事にもあるが、主キーをDBの自動採番を任せた場合、ビジネスロジック内では生成ができない
なので、そういうアーキテクチャの場合には自動採番を採用しない方がいいと理解している(サイズの問題は残るので、RAM/DISKサイズ比が大きくなったり、JOINするテーブルが増えるなら注意する)
ところでUUID以外のGUID(標準化されている規格)ってどんなのがあるのか?というのも記事にまとめられていて大変参考になる
どれを使うかだが、個人的には今使っているPostgreSQLにはuuid型があるので、uuidが無難そう
あとは、分散DBとか完全ランダムがいいならv4、それ以外ならv7が良さそう(これも記事にある結論通り)という判断
主キーを外部公開したらダメな理由
記事ではさらに主キーを外部公開したらダメな理由が書かれている
まとめると
- 自動採番されたIDは類推される可能性がある
- UUID v7はタイムスタンプが含まれるので逆算できてしまう
- UUID v4でも外部に公開したいレコードと公開したくないレコードの判別が必要になってくる
- あと128bitのUUID(32文字)はURLにくっつける文字列として長い(YouTube動画IDは11桁の文字列だし)
実務を考えるなら、主キーは連番かUUID、副キーで外部公開用IDとしてより短いID(乱数)にするのが良いアプローチだと思った