UUID
Stop using numbers as IDs. Just use UUIDs. seriously
メリット
外と通信せずに重複しない ID を採番できる
ID を推測できない。ID を外に公開するようなシステムの場合、特に重要
連番ではユーザー数を推測できることがある
総数が少ないとバレたり
IDを操作すると次のデータにアクセスできたり
うっかり別の ID を渡したり、別の ID で処理する確率がシーケンシャルなIDの場合に比べて低い
複数のデータベースで分散してデータを持つ場合やデータを移行する場合にもプライマリーキーの重複を避けられる シャーディングしているとき、それぞれのノードでユニークなキーを持つことを補償しないといけない 64bit uintとか
InnoDB のテーブルは主キーによるインデックスのツリー構造(B+Tree)で、リーフページにテーブルの値を持つクラスタインデックス構造です。 この場合、主キーがUUIDだとパフォーマンスの問題が生じやすい
時系列ではなくまばらに分布しているため
ULIDによってシーケンシャルにするテクニックもある UUIDv6,7,8