【入門編】 UUID型 – PostgreSQL

こんにちは!データベースの世界へようこそ。

今日は、アプリを作るときに誰もが一度は悩む「データの名前(ID)の付け方」について、ちょっとお話ししましょう。

皆さんは、Webサイトのユーザー登録や注文履歴を作る時、データの「背番号」をどうやって決めていますか?「1, 2, 3…」と順番に番号を振る方法(連番)が一般的ですよね。でも、実はこの連番、データが数百万、数千万と増えてくると、意外な落とし穴があったりするんです。

そこで登場するのが「UUID」という魔法の文字列です。

—

そもそも、なんで連番じゃダメなの?

例えば、あなたがカフェの店員さんだとしましょう。お客さんに整理券を配るとき、「1番の方、2番の方…」と渡すのはとてもスムーズですよね。でも、もしお店が世界中にあって、全店舗の整理券をひとつの巨大なノートに記録しなきゃいけないとしたら?

「A店もB店も『1番』を発行しちゃった!」なんてパニックになりますよね。また、連番だと「次は100番だ」と予測できてしまうので、悪い人に「次は101番目のデータを盗んでやろう」と狙われるリスクもあります。

ここでUUIDの出番です。UUIDは、いわば「世界でひとつだけの、めちゃくちゃ長いランダムな文字列」のこと。

UUIDってどんなもの?

UUIDは、こんな感じの文字列です。

`550e8400-e29b-41d4-a716-446655440000`

これ、パッと見ると暗号みたいで怖いですよね(笑)。でも、意味はすごくシンプル。「宇宙のどこで誰が作っても、絶対に他の誰とも被らない確率が極めて高い文字列」なんです。

これを使えば、たとえ世界中の支店が別々にデータを作っても、後から全部ひとつのデータベースに集めた時に「あ、IDが被ってる!」なんて事故が起きることはまずありません。

PostgreSQLで使ってみよう

PostgreSQLを使っているなら、UUIDの扱いは本当に簡単です。いちいち複雑なプログラムを書く必要はありません。

まずは、UUIDを使えるように魔法の呪文(拡張機能)を唱えます。

CREATE EXTENSION IF NOT EXISTS “uuid-ossp”;

そして、データを作る時には、こう書くだけ。

INSERT INTO users (id, name) VALUES (gen_random_uuid(), ‘田中さん’);

`gen_random_uuid()` というのが、「今すぐ世界でひとつだけのIDを作って!」という命令です。これを実行するたびに、PostgreSQLが自動的にさっきのような長い文字列を作って、田中さんの背番号にしてくれます。

ただし、ひとつだけ注意点!

UUIDはすごく便利でかっこいいんですが、ひとつだけ覚えておいてほしいことがあります。

それは、「インデックス(索引)が少しだけ重くなる」ということ。

本屋さんで例えると、連番(1, 2, 3…)は「ページ番号順」に並んでいるので探すのが楽ですが、UUIDは「ランダムに生成された長い名前」なので、本棚のどこに置けばいいか探すのに少し手間がかかるんです。

なので、「とりあえず全部UUIDにすればOK!」というわけではなく、

  • 世界規模でデータを統合する可能性があるならUUID
  • ひとつのアプリ内で完結して、速度を最優先したいなら連番

というふうに、状況に合わせて使い分けるのが「通」なやり方です。

—

まとめ:まずは使ってみよう!

難しい理論を並べましたが、まずは一度、自分のデータベースで `gen_random_uuid()` を試してみてください。自分の手で、世界にたったひとつしかないユニークなIDが生成されるのを見るのは、なんだか宝探しみたいでワクワクしますよ。

データベース設計は、まるで自分の街を作るようなもの。UUIDという新しい道具を手に入れて、ぜひ皆さんのデータという街を、もっと安全で広大なものにしていってくださいね。

また次回の記事でお会いしましょう!応援しています!

コメント

タイトルとURLをコピーしました