8.12. UUID

uuidデータ型は、RFC 4122、ISO/IEC 9834-8:2005、および関連する標準に従う、汎用一意識別子(UUID)を格納します。 (一部のシステムでは、このデータ型をグローバル一意識別子やGUIDの代わりに参照します。) こうした識別子は、同一のアルゴリズムを使用しても既知の世界上の他の誰かが同一識別子が生成される可能性がほとんどないように選択されたアルゴリズムで生成された128ビット量の値です。 したがって、分散システムにおいて、この識別子は、単一データベース内でしか一意にならないシーケンスジェネレータを使用して実現した識別子よりも優れた一意性保証を提供します。

UUIDは、小文字の16進数表記桁の並びをいくつかのグループでハイフンで区切って表現されます。 具体的には、8桁のグループが1つ、4桁のグループが3つ、次いで、12桁のグループが1つとなり、合計32桁で128ビットを表します。 この標準形式のUUIDの例を以下に示します。

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

また、PostgreSQLは入力として、大文字表記の桁、中括弧で括った標準形式、ハイフンを省略したものといった別形式も受け付けます。 以下に例を示します。

A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11

出力は常に標準形式になります。

PostgreSQLは、UUIDについて格納関数と比較関数を提供します。 しかし、すべてのアプリケーションで十分適切な単一アルゴリズムが存在しませんので、データベースの中核ぬはUUIDを生成する関数はまったく含んでいません。 contrib/uuid-ossp contribモジュールは、複数の標準的なアルゴリズムを実装した関数を提供します。 この他にも、UUIDをクライアントアプリケーションで生成することも、サーバサイドで他のライブラリを呼び出して生成することもできます。