このトピックでは、AnalyticDB for PostgreSQLでuuid-ossp拡張機能を使用する方法について説明します。
概要
UUIDデータ型は、汎用一意識別子 (UUID) を格納するために使用される。 UUIDは、分散システムにおけるシーケンスよりも一意である。
UUIDは32の16進数で構成されています。 標準フォーマットは、8文字のグループとそれに続く4桁の3つのグループと12桁のグループです。 グループはハイフン (-) で区切られています。 例:
a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
大文字または中かっこ ({}) を使用して、UUIDを標準形式で囲んだり、一部またはすべてのハイフン (-) を省略したり、4桁のグループの後にハイフンを追加したりできます。 例:
A0EEBC99-9C0B-4EF8-BB6D-6BB9BD380A11
{a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11}
a0eebc999c0b4ef8bb6d6bb9bd380a11
a0ee-bc99-9c0b-4ef8-bb6d-6bb9-bd38-0a11
{a0eebc99-9c0b4ef8-bb6d6bb9-bd380a11}
利用可能なバージョンのAnalyticDB for PostgreSQLでは、UUIDデータ型のフィールドを配布キーとして使用できません。
uuid-osspのビルド方法については、「uuid-osspのビルド」をご参照ください。
インストール
AnalyticDB for PostgreSQLインスタンスでuuid-ossp拡張機能を使用する前に、インスタンスの [拡張機能] ページにuuid-ossp拡張機能をインストールする必要があります。 詳細については、「拡張機能のインストール、更新、およびアンインストール」をご参照ください。
関数
UUID生成のための関数
関数
説明
uuid_generate_v1()
この関数は、バージョン1のUUIDを生成します。 これには、コンピュータのMACアドレスとタイムスタンプが含まれます。
説明このタイプのUUIDは、識別子を作成したコンピューターのIDと、識別子が作成された時刻を表示します。 このタイプのUUIDは、セキュリティに敏感なアプリケーションには適していません。
uuid_generate_v1mc()
この関数は、バージョン1のUUIDを生成します。 この関数は
uuid_generate_v1()
関数とは異なり、uuid_generate_v1mc()
関数はランダムマルチキャストMACアドレスを使用してUUIDを生成し、uuid_generate_v1()
関数はコンピュータの実際のMACアドレスを使用してUUIDを生成します。uuid_generate_v3 (名前空間uuid, name text)
この関数は、指定した
名前
を使用して、指定した名前空間
にバージョン3のUUIDを生成します。名前空間は、
uuid_ns_*()
関数の1つによって返される定数です。 次の表に、関数を示します。name
は、指定された名前空間
の識別子です。
例:
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');
name
パラメーターは、MD5ハッシュアルゴリズムを使用してハッシュされます。 生成されたUUIDから平文を導出することはできない。 この関数を使用して生成されるUUIDは、ランダムアルゴリズムを必要とせず、システムを実行するために必要な環境変数から独立しています。 これにより、UUIDを再生できます。uuid_generate_v4()
この関数は、乱数に基づいてバージョン4のUUIDを生成します。
uuid_generate_v5 (名前空間uuid, name text)
この関数は、バージョン3のUUIDが生成されるのと同様の方法で、バージョン5のUUIDを生成する。 バージョン5のUUIDを生成するために使用されるSHA-1ハッシュアルゴリズムは、MD5ハッシュアルゴリズムよりも安全です。 したがって、バージョン5のUUIDが推奨されます。
UUID定数を返す関数
関数
説明
uuid_nil()
この関数は、実際のUUIDとは見なされないnil UUID定数を返します。
uuid_ns_dns()
この関数は、UUIDのドメインネームシステム (DNS) 名前空間を指定する定数を返します。
uuid_ns_url()
この関数は、UUIDのURL名前空間を指定する定数を返します。
uuid_ns_oid()
この関数は、UUIDのISOオブジェクト識別子 (OID) 名前空間を指定する定数を返します。
説明ISO OIDは、ASN.1 (Abstract Syntax Notation One) 標準を使用して定義され、PostgreSQLで使用されるOIDとは異なります。
uuid_ns_x500()
この関数は、UUIDのX.500識別名 (DN) 名前空間を指定する定数を返します。
例
次のステートメントを実行して、バージョン1のUUIDを生成します。
SELECT uuid_generate_v1();
サンプル結果:
uuid_generate_v1 -------------------------------------- c7f83ba4-bd93-11e9-8674-40a8f01ec4e8 (1 row)
次のステートメントを実行して、バージョン3のUUIDを生成します。
SELECT uuid_generate_v3(uuid_ns_url(), 'example.com');
サンプル結果:
uuid_generate_v3 -------------------------------------- a0473a67-27a1-3c05-a2d1-5c134639347f (1行)
次のステートメントを実行して、バージョン4のUUIDを生成します。
SELECT uuid_generate_v4();
サンプル結果:
uuid_generate_v4 -------------------------------------- d7a8d47e-58e3-4bd9-9340-8553ac03d144 (1行)
次のステートメントを実行して、バージョン5のUUIDを生成します。
SELECT uuid_generate_v5(uuid_ns_url(), 'example.com ');
サンプル結果:
uuid_generate_v3 -------------------------------------- a0473a67-27a1-3c05-a2d1-5c134639347f (1 row)