1
1

UUIDを使った一意識別子の生成方法

Posted at

はじめに

UUID(Universally Unique Identifier)は、128ビット長の一意識別子であり、データベースやネットワーク上での一意性を確保するために広く使われています。Pythonの標準ライブラリuuidを使うと、簡単にUUIDを生成できます。

UUIDの種類

UUIDにはいくつかのバージョンがあり、それぞれ異なる方法で識別子を生成します。以下は主なUUIDの種類です:

  1. UUID1: タイムベースUUID

    • タイムスタンプとノード(通常はMACアドレス)に基づいて生成されます。
    • 時間順に生成されるため、タイムスタンプを元にした一意性が保証されます。
  2. UUID2: DCEセキュリティUUID

    • ローカルドメイン、POSIX UID/GID、およびタイムスタンプに基づいて生成されます。
    • 一般的には使用されません。
  3. UUID3: 名前ベースUUID(MD5)

    • 名前空間と名前のMD5ハッシュに基づいて生成されます。
    • 同じ名前空間と名前に対しては常に同じUUIDを生成します。
    • 名前空間には、uuid.NAMESPACE_DNSuuid.NAMESPACE_URLuuid.NAMESPACE_OIDuuid.NAMESPACE_X500などがあります。
  4. UUID4: ランダムUUID

    • ランダムまたは擬似乱数に基づいて生成されます。
    • 非常に高い一意性が保証されますが、完全にランダムです。
  5. UUID5: 名前ベースUUID(SHA-1)

    • 名前空間と名前のSHA-1ハッシュに基づいて生成されます。
    • UUID3と同様に、同じ名前空間と名前に対しては常に同じUUIDを生成します。

UUIDの生成方法

import uuid

# UUID1: タイムベース
print(f"UUID1: {uuid.uuid1()}")

# UUID3: 名前ベース(MD5)
print(f"UUID3: {uuid.uuid3(uuid.NAMESPACE_DNS, 'example.com')}")

# UUID4: ランダム
print(f"UUID4: {uuid.uuid4()}")

# UUID5: 名前ベース(SHA-1)
print(f"UUID5: {uuid.uuid5(uuid.NAMESPACE_DNS, 'example.com')}")

UUIDの用途

  • データベース: 一意のプライマリキーとして利用。
  • ソフトウェア: モジュールやコンポーネントの識別子。
  • ネットワーク: データパケットの識別子。
  • ファイルシステム: ファイルの一意識別子。
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1