UUIDとの使い分け
ULIDの先頭48bitはUNIXミリ秒タイムスタンプ、残り80bitがランダム値です。UUID v7と設計思想が近く、辞書順ソートと生成時刻順が一致します。表記は短くて大文字英数字のみ(IとLとOとUは除外)なので、URLやログにも入れやすい形式です。
Crockford Base32 でエンコードされた 26 文字の ULID を生成します。先頭がタイムスタンプなので文字列ソートで時系列に並びます。
Crockford Base32 でエンコードされた 26 文字の ULID(Universally Unique Lexicographically Sortable Identifier)を生成します。 先頭 48 bit がミリ秒タイムスタンプ、残り 80 bit がランダムで、文字列ソートで時系列順に並びます。すべてブラウザ内で crypto.getRandomValues による暗号学的乱数で生成され、サーバーには送信されません。
既存のULIDを貼り付けると、先頭10文字から生成時刻を取り出します。
💡 ULID について
0123456789ABCDEFGHJKMNPQRSTVWXYZ。視認性を上げるため I / L / O / U を除外しています。crypto.getRandomValues による暗号学的に安全な乱数で生成します。Math.random() は使いません。作業の流れに近いツールへすぐ移動できます。
ULID Generator は、Crockford Base32 エンコードの 26 文字 ULID をブラウザ内で生成するツールです。文字列ソートで時系列に並ぶため、ログID、イベントID、DBの主キーで時系列順を維持したい場面に向いています。
ULIDの生成はブラウザ内で行われ、crypto.getRandomValues による暗号学的乱数を使用します。生成結果はサーバーへ送信されません。
ULIDの先頭48bitはUNIXミリ秒タイムスタンプ、残り80bitがランダム値です。UUID v7と設計思想が近く、辞書順ソートと生成時刻順が一致します。表記は短くて大文字英数字のみ(IとLとOとUは除外)なので、URLやログにも入れやすい形式です。
B-treeインデックスでは、挿入順がインデックスのページ末尾に集中するほど断片化が抑えられ書き込みが安定します。完全ランダムなUUID v4と比べて、ULIDやUUID v7は近い時刻のレコードがインデックス上で近接するため、書き込み性能と読み出しキャッシュ効率の両方を高めやすくなります。