RDBのPrimary KeyにUUIDかAuto IncrementなBigintを使うか問題その2
昨日の続きで思い出したことを書く。
UUIDのメリットは追加で2つある。
-
異なるテーブル間でもユニークなIDとして機能する。グローバルIDとして使えるということだ。Bigintだと例えば userモデルのID:1とgroupモデルのID:1みたいにIDが同じことは当たり前だけどある。けどUUIDだと違う値になり混同しづらい。普通は混同するわけないんだけど、手でSQL書いてたりすると、 where user_id = で group_idの値を入れちゃったりとかいうミスはある。UUIDなら間違えたID入れちゃう問題は起きにくい。該当のレコードが存在しないからだ。ちゃんとやってればこういう事は起きない、はそのとおりだけど。
-
ログをGrepしやすい。これはこれ以上説明不要だろう。特定のIDに関する履歴を追いたいみたいなケースは割とある。これもきちんとイベントログとして設計して構造化ログ出そうねといわれたらそのとおりなんだが。