uuid-ossp
モジュールは複数の標準的なアルゴリズムの1つを使用して汎用一意識別子(UUID)を生成する関数を提供します。
また、特殊なUUID定数を生成する関数も提供します。
このモジュールは、コアのPostgreSQLで利用可能なものを超える特別な要件にのみ必要となります。
UUIDを生成する組み込みの方法は9.14を参照してください。
このモジュールは「trusted」と見なされます。
つまり、現在のデータベースに対してCREATE
権限を持つ非スーパーユーザがインストールできます。
uuid-ossp
関数 #UUIDを生成するために利用できる関数を表 F.34に示します。 関連する標準ITU-T Rec. X.667、ISO/IEC 9834-8:2005、RFC 4122はUUIDの生成に関して、バージョン番号1、3、4、5で識別される4つのアルゴリズムを規定します。 (バージョン2アルゴリズムは存在しません。) これらのアルゴリズムのそれぞれは、異なるアプリケーション群に適切でしょう。
表F.34 UUID生成用関数
関数 説明 |
---|
バージョン1 UUIDを生成します。 これはコンピュータのMACアドレスとタイムスタンプが含まれます。 この種のUUIDは識別子を生成したコンピュータを識別できる情報や生成した時刻をあばくことができますので、ある種のセキュリティに注意すべきアプリケーションでは適しません。 |
コンピュータの実MACアドレスではなくランダムなマルチキャストMACアドレスを使用して、バージョン1 UUIDを作成します。 |
入力で指定されたnameを使用して、与えられた名前空間でバージョン3 UUIDを生成します。
名前空間は、表 F.35に示される 例えば以下の様になります。 SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org'); nameパラメータはMD5でハッシュ化されます。 このため、生成されたUUIDから平文が分かることはありません。 この方法によるUUIDの生成は不規則性はなく、また、環境に依存する要素もないため、再度生成されます。 |
バージョン4 UUIDを生成します。 これは完全にランダムな数から生成されます。 |
バージョン5 UUIDを生成します。 バージョン3 UUIDと似ていますが、ハッシュ方式としてSHA-1を使用することが異なります。 SHA-1がMD5より安全であることから、バージョン5はバージョン3に比べて好まれるはずです。 |
表F.35 UUID定数を返す関数
関数 説明 |
---|
「「nil」」UUID定数を返します。これは実際のUUIDになることはありません。 |
DNS名前空間をUUIDに選定した定数を返します。 |
URL名前空間をUUIDに選定した定数を返します。 |
ISOオブジェクト識別子(OID)をUUIDに選定した定数を返します。 (これはASN.1のOIDに関するもので、PostgreSQLで使われるOIDとは関係ありません。) |
X.500区分名(DN)をUIDに選定した定数を返します。 |
uuid-ossp
の構築 #
歴史的にこのモジュールは、モジュールの名前の由来となったOSSP UUIDライブラリに依存していました。
OSSP UUIDライブラリはまだhttp://www.ossp.org/pkg/lib/uuid/にありますが、あまりよく維持されておらず、より新しいプラットフォームへ移植することがますます困難になってきています。
uuid-ossp
は今やいくつかのプラットフォームではOSSPライブラリなしで構築できます。
FreeBSD、その他のBSDから派生したプラットフォームでは、適切なUUID生成関数がコアlibc
ライブラリに含まれています。
Linux、macOS、その他のプラットフォームでは、適切な関数がlibuuid
ライブラリで提供されており、(現在のLinuxではutil-linux-ng
の一部と考えられていますが)そのライブラリはe2fsprogs
プロジェクトに由来します。
configure
を実行する時に、BSD関数を使うのなら--with-uuid=bsd
を、e2fsprogs
のlibuuid
を使うのなら--with-uuid=e2fs
を、OSSP UUIDライブラリを使うのなら--with-uuid=ossp
を指定してください。
あるマシンではこのライブラリのうち二つ以上が利用可能かもしれませんので、configure
は自動的に一つを選びません。
Peter Eisentraut <peter_e@gmx.net>