PostgreSQLのサードパーティ'uuid-ossp'を使ってuuidの生成方法とテーブル定義を行う

みなさん、こんにちは。id:ogxwxです。

今回はPostgreSQLサードパーティuuid-osspを使って、uuidの生成方法とテーブル定義を行う方法について記事を書いてみました。

uuidとは

uuidとは(Universally Unique IDentifier)の略で、そのままの意味で一意に識別されるIDというものです。なので、PRIMARY KEYとして定義します。

tools.ietf.org

導入

PostgreSQLでuuidを生成させるには、'uuid-ossp'というサードパーティをインストールする必要があります。

インストールは以下のSQLコマンドを実行することで、設定が完了します。インストール後、uuid生成機能とUUIDデータ型が追加されます。

CREATE EXTENSION IF NOT EXISTS "uuid-ossp";

実行

インストール完了後、実際にuuidが生成できるか確認してみます。

以下のSQLコマンドを実行してみます。

SELECT uuid_generate_v1();

画像のように表示されれば、uuidの設定は完了です。

f:id:ogxwx:20190422131233p:plain
uuid-generate-v1

uuid生成関数について

今回は、uuid_generate_v1()と,uuid_generate_v4()の2つの関数について説明したいと思います。uuid_generate_v1()の生成関数は、現在時刻+PCのMACアドレスの組み合わせでuuidが生成されています。一方で、uuid_generate_v4()では、ランダムな数を元にuuidが生成されます。

個人的にですが、uuidの値をpcに依存させたくないのでuuid_generate_v4()をよく使用しています。

他にもuuid生成するための関数があるので、興味のある人はみてみてください。

www.postgresql.org

実際に使用してみる

実際に食べ物テーブルを定義してみましょう。

CREATE TABLE foods (
  id uuid DEFAULT uuid_generate_v4(),
  name char(32) NOT NULL,
  PRIMARY KEY (id)
);

ここでは、食べ物の識別IDをUUIDで識別していることがわかります。また、'uuid-ossp'というサードパーティをインストールしたことでuuid型で定義できていることもわかります。

uuid生成関数には、uuid_generate_v4()を使用しています。

次にfoodsテーブルにデータを追加していきます。

INSERT INTO foods VALUES (uuid_generate_v4(), 'アイスクリーム');
INSERT INTO foods VALUES (uuid_generate_v4(), 'ケーキ');
INSERT INTO foods VALUES (uuid_generate_v4(), 'チョコレート');

追加後、select * from foodsと実行すると以下のように表示されると思います。

f:id:ogxwx:20190422135102p:plain
foods

ちゃんと、idがUUIDで識別されていることがわかります。

以下、gistの方にまとめました。

gist.github.com

最後に

この記事を読んでくださりありがとうございます! 今回は、uuidとは何か、PostgreSQLでの使用方法について簡単ではありますが説明させてもらいました。

今後も何かあればブログ等で発信していきたいと思います!