UUID v6, v7, v8 : タイムスタンプでソートできる新しい UUID のドラフト仕様
UUID v6, v7, v8 : タイムスタンプでソートできる新しい UUID のドラフト仕様 - kakakakakku blog
ドラフト仕様を読むと,UUID v6 は UUID v1 を改善するために策定された仕様で,UUID v1 のフィールドの構成を見直したものになる.UUID v1 は「タイムスタンプ情報」を持つけど,最下位部分と上位部分が逆転していて,ソートはできない.UUID v6 はあくまで UUID v1 の課題を解決したものとなり,基本的には UUID v7 を使うとドラフト仕様に書いてある.
UUID v6 のタイムスタンプ情報は UUID v1 と同じく「グレゴリオ暦ベース (60 bit)」で,1582年10月15日からの 100 ns 単位のカウントとなる.記事を書きながら採番した UUID v6 の例を以下に載せておく.
1ed575d3-b55c-6f9c-93a7-e81a4645882c
1ed575d3-c876-609c-9270-7532b69c8a8e
1ed575d3-db8a-669c-8634-8a0ba964ffa3
ドラフト仕様を読むと,UUID v7 はよく使われる Unix Time Stamp (milli, micro, nano を含む 48 bit) を使う. 記事を書きながら採番した UUID v7 の例を以下に載せておく.
018422b2-4843-7a62-935b-b4e65649de3e
018422b2-5013-7f02-830f-2563ce4533df
018422b2-57e8-79b2-8b59-d6926217a9dc
ドラフト仕様を読むと,UUID v8 は限定的な用途のために策定されていて,正確には「実験的」もしくは「ベンダー固有」と書いてある.UUID v8 のフィールド構成も 128 bit 長だけど,UUID v7 と同じく ver と var は必須で,他は自由に設定できる.1点注意点としては,ドラフト仕様に「ランダムで埋めちゃダメ」と書いてあるので,あくまで独自仕様のタイムスタンプ情報を含めることが前提になりそう.例えば「何かしらの理由でタイムスタンプを知られたくない」というときに使えそう?
uuid