このトピックでは、UUID-OSSP拡張機能を使用してユニバーサル一意識別子 (UUID) を生成する方法について説明します。
UUID-OSSP拡張機能の説明
UUID-OSSP拡張は、UUIDを生成するために使用されるいくつかの標準アルゴリズムをサポートする。 UUID-OSSP拡張は、いくつかの特別なUUID定数を生成する関数も提供します。
標準のUUIDには、16進数の32桁とハイフン (-) の合計36文字があり、ハイフン (-) で区切られた5つのグループで記述されています。 UUIDの形式は、Group of 8 characters-Group of 4 characters-Group of 4 characters-Group of 4 characters-Group of 12 charactersです。
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a1 1標準のUUIDは、次のいずれかの方法で表すこともできます。
- 小文字は大文字に置き換えられます。
A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A1 1 - すべての文字は中括弧 {} で囲まれています。
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11} - 一部またはすべてのハイフン (-) は省略されます。
a0eebc999c0b4ef8bb6d6bb9bd380a11 - ハイフン (-) は、16進数の4桁ごとに連結するために使用されます。
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a1 1
UUID-OSSP拡張機能を有効または無効にするステートメント
- UUID-OSSP拡張機能を有効にします。
拡張の作成 "uuid-ossp"; - UUID-OSSP拡張機能を無効にします。
ドロップ延長 "uuid-ossp";
説明 UUID-OSSP拡張機能をインストールするには、特権アカウントを使用する必要があります。
UUID-OSSP拡張機能の機能
- UUIDを返す関数
関数 説明 uuid_generate_v1()この関数は、バージョン1のUUIDを生成します。 バージョン1のUUIDは、タイムスタンプとコンピュータのMACアドレスに基づいて生成されます。 説明 バージョン1のUUIDは、UUIDを生成したコンピューターと、UUIDが生成された時刻を示します。 このタイプのUUIDは、高いセキュリティを必要とするアプリケーションには適していません。uuid_generate_v1mc()この関数は、バージョン1のUUIDを生成します。 この関数は、 uuid_generate_v1()関数とは異なります。uuid_generate_v1mc()関数はランダムなマルチキャストMACアドレスを使用してUUIDを生成し、uuid_generate_v1()関数はコンピュータの実MACアドレスを使用してUUIDを生成します。uuid_generate_v3 (名前空間uuid, name text)この関数は、指定した 名前を使用して、指定した名前空間にバージョン3のUUIDを生成します。- 名前空間は、
uuid_ns_*()関数の1つによって返される定数です。 次の表に、関数を示します。 nameは、指定された名前空間の識別子です。
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');nameパラメーターは、MD5ハッシュアルゴリズムに基づいてハッシュされます。 生成されたUUIDから平文を導出することはできない。 この関数を使用して生成されるUUIDは、ランダムアルゴリズムを必要とせず、システムを実行するために必要な環境変数から独立しています。 この場合、UUIDを再生することができる。uuid_generate_v4()この関数は、乱数に基づいてバージョン4のUUIDを生成します。 uuid_generate_v5 (名前空間uuid, name text)この関数は、バージョン3のUUIDを生成するのと同様に、バージョン5のUUIDを生成する。 違いは、バージョン5のUUIDを生成するためにSHA-1ハッシュアルゴリズムが使用されることです。 このアルゴリズムは、MD5ハッシュアルゴリズムよりも安全です。 したがって、バージョン5のUUIDが推奨されます。 - 名前空間は、
- UUID定数を返す関数
関数 説明 uuid_nil()この関数は、nil UUID定数を返します。 このUUID定数は、実際のUUIDではない。 uuid_ns_dns()この関数は、UUIDのドメインネームシステム (DNS) 名前空間を指定する定数を返します。 uuid_ns_url()この関数は、UUIDのURL (Uniform Resource Locator) 名前空間を指定する定数を返します。 uuid_ns_oid()この関数は、UUIDのISOオブジェクト識別子 (OID) 名前空間を指定する定数を返します。 説明 ISO OIDは、ASN.1 (Abstract Syntax Notation One) 標準を使用して定義され、PostgreSQLで使用されるOIDとは異なります。uuid_ns_x500()この関数は、UUIDのX.500識別名 (DN) 名前空間を指定する定数を返します。
例
- 次のステートメントを実行して、バージョン1のUUIDを生成します。
SELECT uuid_generate_v1();次の情報が返されます。
uuid_generate_v1 -------------------------------------- a6808efc-13c8-11ed-ad4f-00163e010e52 (1行) - 次のステートメントを実行して、バージョン3のUUIDを生成します。
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');次の情報が返されます。
uuid_generate_v3 -------------------------------------- a0473a67-27a1-3c05-a2d1-5c134639347f (1行) - 次のステートメントを実行して、バージョン4のUUIDを生成します。
SELECT uuid_generate_v4();次の情報が返されます。
uuid_generate_v4 -------------------------------------- 170d0eb6-520a-4f93-a1b3-89458fffb54c (1行) - 次のステートメントを実行して、バージョン5のUUIDを生成します。
SELECT uuid_generate_v5(uuid_ns_url(), 'example.com');次の情報が返されます。
uuid_generate_v5 -------------------------------------- a5cf6e8e-4cfa-5f31-a804-6de6d1245e26 (1行)