The <filename>uuid-ossp</filename> module provides functions to generate universally
unique identifiers (UUIDs) using one of several standard algorithms. There
are also functions to produce certain special UUID constants.
This module is only necessary for special requirements beyond what is
available in core <productname>PostgreSQL</productname>. See <xref
linkend="functions-uuid"/> for built-in ways to generate UUIDs.
uuid-ossp
モジュールは複数の標準的なアルゴリズムの1つを使用して汎用一意識別子(UUID)を生成する関数を提供します。
また、特殊なUUID定数を生成する関数も提供します。
このモジュールは、コアのPostgreSQLで利用可能なものを超える特別な要件にのみ必要となります。
UUIDを生成する組み込みの方法は9.14を参照してください。
This module is considered <quote>trusted</quote>, that is, it can be
installed by non-superusers who have <literal>CREATE</literal> privilege
on the current database.
このモジュールは「trusted」と見なされます。
つまり、現在のデータベースに対してCREATE
権限を持つ非スーパーユーザがインストールできます。
uuid-ossp
関数 #<xref linkend="uuid-ossp-functions"/> shows the functions available to generate UUIDs. The relevant standards ITU-T Rec. X.667, ISO/IEC 9834-8:2005, and <ulink url="https://datatracker.ietf.org/doc/html/rfc4122">RFC 4122</ulink> specify four algorithms for generating UUIDs, identified by the version numbers 1, 3, 4, and 5. (There is no version 2 algorithm.) Each of these algorithms could be suitable for a different set of applications. UUIDを生成するために利用できる関数を表 F.33に示します。 関連する標準ITU-T Rec. X.667、ISO/IEC 9834-8:2005、RFC 4122はUUIDの生成に関して、バージョン番号1、3、4、5で識別される4つのアルゴリズムを規定します。 (バージョン2アルゴリズムは存在しません。) これらのアルゴリズムのそれぞれは、異なるアプリケーション群に適切でしょう。
表F.33 UUID生成用関数
Function 関数 Description 説明 |
---|
Generates a version 1 UUID. This involves the MAC address of the computer and a time stamp. Note that UUIDs of this kind reveal the identity of the computer that created the identifier and the time at which it did so, which might make it unsuitable for certain security-sensitive applications. バージョン1 UUIDを生成します。 これはコンピュータのMACアドレスとタイムスタンプが含まれます。 この種のUUIDは識別子を生成したコンピュータを識別できる情報や生成した時刻をあばくことができますので、ある種のセキュリティに注意すべきアプリケーションでは適しません。 |
Generates a version 1 UUID, but uses a random multicast MAC address instead of the real MAC address of the computer. コンピュータの実MACアドレスではなくランダムなマルチキャストMACアドレスを使用して、バージョン1 UUIDを作成します。 |
Generates a version 3 UUID in the given namespace using
the specified input name. The namespace should be one of the special
constants produced by the <function>uuid_ns_*()</function> functions
shown in <xref linkend="uuid-ossp-constants"/>. (It could be any UUID
in theory.) The name is an identifier in the selected namespace.
入力で指定されたnameを使用して、与えられた名前空間でバージョン3 UUIDを生成します。
名前空間は、表 F.34に示される For example: 例えば以下の様になります。 SELECT uuid_generate_v3(uuid_ns_url(), 'http://www.postgresql.org'); The name parameter will be MD5-hashed, so the cleartext cannot be derived from the generated UUID. The generation of UUIDs by this method has no random or environment-dependent element and is therefore reproducible. nameパラメータはMD5でハッシュ化されます。 このため、生成されたUUIDから平文が分かることはありません。 この方法によるUUIDの生成は不規則性はなく、また、環境に依存する要素もないため、再度生成されます。 |
Generates a version 4 UUID, which is derived entirely from random numbers. バージョン4 UUIDを生成します。 これは完全にランダムな数から生成されます。 |
Generates a version 5 UUID, which works like a version 3 UUID except that SHA-1 is used as a hashing method. Version 5 should be preferred over version 3 because SHA-1 is thought to be more secure than MD5. バージョン5 UUIDを生成します。 バージョン3 UUIDと似ていますが、ハッシュ方式としてSHA-1を使用することが異なります。 SHA-1がMD5より安全であることから、バージョン5はバージョン3に比べて好まれるはずです。 |
表F.34 UUID定数を返す関数
Function 関数 Description 説明 |
---|
Returns a <quote>nil</quote> UUID constant, which does not occur as a real UUID. 「「nil」」UUID定数を返します。これは実際のUUIDになることはありません。 |
Returns a constant designating the DNS namespace for UUIDs. DNS名前空間をUUIDに選定した定数を返します。 |
Returns a constant designating the URL namespace for UUIDs. URL名前空間をUUIDに選定した定数を返します。 |
Returns a constant designating the ISO object identifier (OID) namespace for UUIDs. (This pertains to ASN.1 OIDs, which are unrelated to the OIDs used in <productname>PostgreSQL</productname>.) ISOオブジェクト識別子(OID)をUUIDに選定した定数を返します。 (これはASN.1のOIDに関するもので、PostgreSQLで使われるOIDとは関係ありません。) |
Returns a constant designating the X.500 distinguished name (DN) namespace for UUIDs. X.500区分名(DN)をUIDに選定した定数を返します。 |
uuid-ossp
の構築 #
Historically this module depended on the OSSP UUID library, which accounts
for the module's name. While the OSSP UUID library can still be found
at <ulink url="http://www.ossp.org/pkg/lib/uuid/"></ulink>, it is not well
maintained, and is becoming increasingly difficult to port to newer
platforms. <filename>uuid-ossp</filename> can now be built without the OSSP
library on some platforms. On FreeBSD and some other BSD-derived
platforms, suitable UUID creation functions are included in the
core <filename>libc</filename> library. On Linux, macOS, and some other
platforms, suitable functions are provided in the <filename>libuuid</filename>
library, which originally came from the <literal>e2fsprogs</literal> project
(though on modern Linux it is considered part
of <literal>util-linux-ng</literal>). When invoking <filename>configure</filename>,
specify <option>--with-uuid=bsd</option> to use the BSD functions,
or <option>--with-uuid=e2fs</option> to
use <literal>e2fsprogs</literal>' <filename>libuuid</filename>, or
<option>--with-uuid=ossp</option> to use the OSSP UUID library.
More than one of these libraries might be available on a particular
machine, so <filename>configure</filename> does not automatically choose one.
歴史的にこのモジュールは、モジュールの名前の由来となった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
は自動的に一つを選びません。