3 ポイント 投稿者 GN⁺ 2024-08-27 | 1件のコメント | WhatsAppで共有
  • UUIDのさまざまなバージョン

    • UUID Version 1 (v1): タイムスタンプ、単調カウンター、MACアドレスから生成される
    • UUID Version 2 (v2): セキュリティ ID 用に予約されている。詳細は知られていない
    • UUID Version 3 (v3): 与えられたデータの MD5 ハッシュから生成される。DNS と URL が候補データとして提案されている
    • UUID Version 4 (v4): 完全にランダムなデータから生成される。多くの人が UUID と聞いて思い浮かべるもの
    • UUID Version 5 (v5): 与えられたデータの SHA1 ハッシュから生成される。v3 と同様に DNS と URL が候補データとして提案されている
    • UUID Version 6 (v6): タイムスタンプ、単調カウンター、MACアドレスから生成される。v1 と同じデータだが、生成時刻順に並べ替えられるよう順序が変更されている
    • UUID Version 7 (v7): タイムスタンプとランダムデータから生成される
    • UUID Version 8 (v8): 完全にユーザー定義可能(必須のバージョン/バリアントフィールドを除く)
  • 使うタイミング

    • v4: ランダム ID が必要なときに使う。デフォルトの選択として適している
    • v7: ソートが必要な場合に使う。たとえば、データベースキーとして使うのに適している
    • v5 または v8: 一意なデータを UUID に含めたいときに使う。必要になれば分かるはず
  • 他のバージョンについて

    • v7 は v1 と v6 を改善したバージョンで、可能なら v7 を使うのがよい。したがって v1 や v6 は通常使わない
    • v2 はセキュリティ関連用途のために予約されている。使っているなら、詳しい内容を知ることはできない可能性が高い
    • v3 は v5 に置き換えられている。v5 はより強力なハッシュを使う

GN⁺のまとめ

  • UUID にはさまざまなバージョンがあり、それぞれ特定の用途に合わせて設計されている
  • v4 と v7 が最も一般的に使われ、v5 と v8 は特定のデータ要件があるときに使われる
  • UUID のバージョン選択は用途によって異なり、ソートが必要な場合は v7、ランダム ID が必要な場合は v4 を使うとよい
  • UUID のさまざまなバージョンを理解すると、プロジェクトに適した UUID を選ぶのに役立つ

1件のコメント

 
GN⁺ 2024-08-27
Hacker Newsのコメント
  • UUID Version 2 (v2) はセキュリティ ID 用に予約されているが、詳細はあまり知られていない

    • RFC 文書の書き方が曖昧だったため
    • Open Group の文書を参照すると、より多くの情報を得られる
    • "version 0" UUID も存在し、これは後の別バージョンとの互換性確保に貢献した
    • 調査結果は GitHub で確認できる
  • UUID v2 の詳細は RFC 9562 文書で簡単に見つけられる

    • DCE の一部として定義されており、関連リンクをクリックすると詳細を確認できる
    • リンクをクリックすることが重要
  • UUID v7 のタイムスタンプは、Databend でメタデータファイルをすばやく見つけるのに役立つ

    • AWS S3 での処理速度を大幅に向上させる
    • 関連 PR は GitHub で確認できる
  • 短い UUID の標準があればよいと思う

    • 例: 73WakrfVbNJBaAmhQtEeDv または bK7nP9xM
    • 短くて覚えやすい ID が必要
  • UUID2 の目的は理解しにくい

    • Xandr で個人データの削除をリクエストしたときにだけ UUID2 に遭遇した
    • Wikipedia のページを読んでも、なぜさまざまな種類の UUID が必要なのか理解しにくい
    • Mac コードとの混合が UUID2 のランダム性を高める理由なのか、それとも別の理由があるのか気になる
    • プライバシーのために非常に長い識別子を使うなら、重複しない UUID を使える
  • UUID v4 は単なるランダムバイト生成器

    • ハイフンやバージョン情報などを省いてランダムバイトを生成するほうが効率的
  • MAC ベースのバージョンは使わないほうがよい

    • 理論上は v4 と v7 を除くすべてのバージョンが該当する
    • 特に v1 は最悪で、v3 の MD5 も非常に脆弱
  • SHA256 データとカウンターを使う UUID は有用かもしれない

    • PBKDF2 に似た方法で、プライバシーを保護する識別子として使える
  • v7 を使うのがよい

    • セキュリティ専門家は反対するかもしれない
  • 興味深い読み物だった

    • 毎日新しいことを学べる