UUID:アプリやデータソースをまたいでレコードを識別する

UUIDは中央データベースへの接続前に識別子を作り、複数の情報源からレコードをまとめるのに役立ちます。レコード識別の役割を理解したうえで、作成順、アクセス制御、操作の重複は別々に管理します。

識別子から分かることはバージョン次第

ToolRoofが生成するのはバージョン4のUUIDです。ランダムに構成され、作成日を読み取れるタイムスタンプではありません。

通常の表記は16進数32桁とハイフン4つです。128ビットのうちバージョンとバリアントの分を除く122ビットがランダムで、表示文字数がそのままランダム桁数ではありません。

参考資料: RFC 9562 — UUID version 4

一度作った識別子を保つ

編集のたびにUUIDを変えると同じレコードを追いにくくなります。v4のUUIDを文字順に並べても作成日時順にはなりません。

再試行時に識別子を変えると、新しい操作と見なされる場合があります。重複実行の防止はUUID形式の選択とは別の設計です。

衝突しにくさは権限ではない

適切なランダム識別子は重複確率を減らしますが、不可能だと証明しません。一意性が必要なら保存先にも制約を設けます。

識別子を知るだけで読み取りや変更を許可してはいけません。UUIDは権限確認の代わりにならず、記事の例をコピーしても自分専用の値は生成されません。

参考資料: RFC 9562 — UUID version 4

例:在庫品を識別する

8c5b7f20-6a91-4f3d-9b62-2e740a1c8d35はv4の構造例で、あなた専用の予約値ではありません。第3グループは4で始まり、ハイフンを含めて36文字です。

実際の在庫品には新しく生成した識別子を付け、名前や場所が変わっても保持します。作成日時は別に保存し、要求者の権限を確認します。「どの記録か」には答えても「誰が開けるか」には答えません。

参考資料