他のバージョンの文書9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

F.44. uuid-ossp

uuid-osspモジュールは複数の標準的なアルゴリズムの1つを使用して汎用一意識別子(UUID)を生成する関数を提供します。 また、特殊なUUID定数を生成する関数も提供します。

F.44.1. uuid-ossp関数

UUIDを生成するために利用できる関数を表F-30に示します。関連する標準ITU-T Rec. X.667、ISO/IEC 9834-8:2005、RFC 4122はUUIDの生成に関して、バージョン番号1、3、4、5で識別される4つのアルゴリズムを規定します。 (バージョン2アルゴリズムは存在しません。) これらのアルゴリズムのそれぞれは、異なるアプリケーション群に適切でしょう。

表 F-30. UUID生成用関数

関数説明
uuid_generate_v1()

この関数はバージョン1 UUIDを生成します。 これはコンピュータのMACアドレスとタイムスタンプが含まれます。 この種のUUIDは識別子を生成したコンピュータを識別できる情報や生成した時刻をあばくことができますので、ある種のセキュリティに注意すべきアプリケーションでは適しません。

uuid_generate_v1mc()

この関数は、コンピュータの実MACアドレスではなくランダムなマルチキャストMACアドレスを使用して、バージョン1 UUIDを作成します。

uuid_generate_v3(namespace uuid, name text)

この関数は、入力で指定されたnameを使用して、与えられた名前空間でバージョン3 UUIDを生成します。 名前空間は、表F-31で示す uuid_ns_*()関数で生成される特殊な定数の1つでなければなりません。(理論上これは何らかのUUIDになります。) nameは選択された名前空間内の識別子です。

例えば以下の様になります。

SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org');

nameパラメータはMD5でハッシュ化されます。 このため、生成されたUUIDから平文が分かることはありません。 この方法によるUUIDの生成は不規則性はなく、また、環境に依存する要素もないため、再度生成されます。

uuid_generate_v4()

この関数はバージョン4 UUIDを生成します。 これは完全にランダムな数から生成されます。

uuid_generate_v5(namespace uuid, name text)

この関数はバージョン5 UUIDを生成します。 バージョン3 UUIDと似ていますが、ハッシュ方式としてSHA-1を使用することが異なります。 SHA-1がMD5より安全であることから、バージョン5はバージョン3に比べて好まれるはずです。

表 F-31. UUID定数を返す関数

uuid_nil()

"nil" UUID定数です。 これは実際のUUIDになることはありません。

uuid_ns_dns()

DNS名前空間をUUIDに選定した定数です。

uuid_ns_url()

URL名前空間をUUIDに選定した定数です。

uuid_ns_oid()

ISOオブジェクト識別子(OID)をUUIDに選定した定数です。 (これはASN.1のOIDに関するもので、PostgreSQLで使われるOIDとは関係ありません。)

uuid_ns_x500()

X.500区分名(DN)をUIDに選定した定数です。

F.44.2. uuid-osspの構築

歴史的にこのモジュールは、モジュールの名前の由来となったOSSP UUIDライブラリに依存していました。 OSSP UUIDライブラリはまだhttp://www.ossp.org/pkg/lib/uuid/にありますが、あまりよく維持されておらず、より新しいプラットフォームへ移植することがますます困難になってきています。 uuid-osspは今やいくつかのプラットフォームではOSSPライブラリなしで構築できます。 FreeBSD、NetBSD、その他のBSDから派生したプラットフォームでは、適切なUUID生成関数がコアlibcライブラリに含まれています。 Linux、OS X、その他のプラットフォームでは、適切な関数がlibuuidライブラリで提供されており、(現在のLinuxではutil-linux-ngの一部と考えられていますが)そのライブラリはe2fsprogsプロジェクトに由来します。 configureを実行する時に、BSD関数を使うのなら--with-uuid=bsdを、e2fsprogslibuuidを使うのなら--with-uuid=e2fsを、OSSP UUIDライブラリを使うのなら--with-uuid=osspを指定してください。 あるマシンではこのライブラリのうち二つ以上が利用可能かもしれませんので、configureは自動的に一つを選びません。

注意: ランダムに生成された(バージョン4)UUIDのみが必要な場合には、代わりにpgcryptoモジュールのgen_random_uuid()を利用すること検討してください。

F.44.3. 作者

Peter Eisentraut