【WEB】UUIDとULIDの違いって?(’21 6月更新)

違いシリーズ第三弾!

第一弾と第二弾はこちら↓。(シリーズ化するつもりもない)

bonoponz.hatenablog.com

bonoponz.hatenablog.com

似て非なるもの多すぎ問題

いや、多いのよまじで。

故に、初心者にとって単語が理解できずに話についていけないシーン多いです。似た単語の違いを調べることがまだあるかもしれないので、先にシリーズ化を予兆する。

UUIDとULIDの違い

根本的には同じものなのかもしれない、と調べていて感じました。

とはいえ違いはあるので、それぞれ見ていきましょう。

(結論としては、あまりわかっていません。しっかり知りたい人は回れ右!)

UUID(Universally Unique Identifier)

ソフトウェア上でオブジェクトを一意に識別するための識別子である。

出典: UUID - Wikipedia

ULID(Universally Unique Lexicographically Sortable Identifier)

そもそも、各言語のライブラリを有志が実装している感じです。

ミリ秒単位でユニークでソート可能だそうです。

UUIDとの128ビット互換性
1ミリ秒あたり1.21e + 24の一意のULID
辞書式にソート可能
36文字のUUIDとは対照的に、標準的に26文字の文字列としてエンコードされます。
効率性と読みやすさのためにCrockfordのbase32を使用します(1文字あたり5ビット)
大文字小文字を区別しません
特殊文字なし(URLセーフ)
単調ソート順(同じミリ秒を正しく検出して処理します)

よくわからない

結局、根本にUUIDがあって、そこからULIDが派生というか改良?されたものなのかな、という印象。

もう少し違いがわかるようになったら追記しようと思います。

ソートの可否(’21 6月追記)

見出しにもあるように、ソートができるのかできないのかという認識でいったんよさそうです。

UUID

重複しない一意なIDを生成できるがランダムな値

ULID

重複しない一意なIDを生成し、かつミリ秒単位で時系列ソートができる値

一意性にかわりない

一意であればいいってだけならUUID、さらにソートもしたいのであればULIDを使えばいいようです。

参考URL

ソート可能なUUID互換のulidが便利そう | cloudpack.media