すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:UUID-OSSP

最終更新日:Mar 28, 2026

uuid-ossp 拡張機能は、汎用一意識別子 (UUID) を生成するための関数を提供します。分散システムにおいて、UUID はシーケンスよりも強力な一意性を保証するため、ノードをまたいだプライマリキーやレコード識別子として信頼性の高い選択肢となります。

UUID フォーマット

UUID は 32 桁の 16 進数で構成され、ハイフンで 8-4-4-4-12 の 5 つのグループに区切られます。例:

a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11

PostgreSQL は、いくつかの同等のフォーマットで UUID を受け入れます:

フォーマット
標準 (小文字)a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
大文字A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
中かっこ{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
ハイフンなしa0eebc999c0b4ef8bb6d6bb9bd380a11
4 桁ごとのハイフンa0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
混合{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
UUID フィールドは、AnalyticDB for PostgreSQL で分散キーとして使用することはできません。

拡張機能のインストール

UUID を生成する前に、ご利用のインスタンスの [拡張機能] ページから uuid-ossp 拡張機能をインストールしてください。詳細については、「拡張機能のインストール、更新、アンインストール」をご参照ください。

UUID 生成関数

バージョン 1:時間ベース

uuid_generate_v1() は、現在のタイムスタンプとホストマシンの MAC アドレスから UUID を生成します。

uuid_generate_v1mc()uuid_generate_v1() と同様に動作しますが、実際の MAC アドレスの代わりにランダムなマルチキャスト MAC アドレスを使用するため、マシンのハードウェア識別子が直接公開されるのを防ぎます。

警告

バージョン 1 の UUID は、生成元マシンの MAC アドレスを埋め込み、時間コンポーネントを含むため、ある程度予測可能です。セキュリティが重視されるアプリケーションでは、バージョン 1 の UUID の使用を避けてください。

バージョン 3:名前ベース (MD5)

uuid_generate_v3(namespace uuid, name text) は、MD5 を使用して namespace 内の name をハッシュ化することにより、決定的な UUID を生成します。

  • namespaceuuid_ns_*() 関数のいずれかによって返される定数です (「名前空間定数」をご参照ください)。

  • name:名前空間内の識別子です。

SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');

同じ入力は常に同じ UUID を生成します。ランダムなアルゴリズムやシステム環境は関与しないため、結果は完全に再現可能です。

バージョン 4:ランダム

uuid_generate_v4() は、乱数に基づいて UUID を生成します。

バージョン 5:名前ベース (SHA-1)

uuid_generate_v5(namespace uuid, name text)uuid_generate_v3() と同様に動作しますが、MD5 の代わりに SHA-1 を使用します。SHA-1 は MD5 よりも安全であるため、名前に基づく UUID が必要な場合は、バージョン 3 よりもバージョン 5 を使用することを推奨します。

名前空間定数

これらの定数を namespace 引数として uuid_generate_v3() および uuid_generate_v5() で使用します。

関数名前空間
uuid_ns_dns()ドメインネームシステム (DNS)
uuid_ns_url()URL
uuid_ns_oid()ISO オブジェクト識別子 (OID) — ASN.1 (Abstract Syntax Notation One) 標準で定義されており、PostgreSQL の OID とは異なります
uuid_ns_x500()X.500 識別名 (DN)

uuid_nil() は nil UUID 定数を返しますが、これは実際の UUID ではありません。

-- バージョン 1 (時間ベース)
SELECT uuid_generate_v1();
 uuid_generate_v1
--------------------------------------
 c7f83ba4-bd93-11e9-8674-40a8f01ec4e8
(1 row)
-- バージョン 3 (名前ベース, MD5)
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');
 uuid_generate_v3
--------------------------------------
 a0473a67-27a1-3c05-a2d1-5c134639347f
(1 row)
-- バージョン 4 (ランダム)
SELECT uuid_generate_v4();
 uuid_generate_v4
--------------------------------------
 d7a8d47e-58e3-4bd9-9340-8553ac03d144
(1 row)
-- バージョン 5 (名前ベース, SHA-1)
SELECT uuid_generate_v5(uuid_ns_url(), 'example.com');
 uuid_generate_v5
--------------------------------------
 a5cf6e8e-4cfa-5f31-a804-6de6d1245e26
(1 row)

参考情報