【入門編】 UUID型 – PostgreSQL

こんにちは!データベースの世界へようこそ。
普段、エンジニアとしてバリバリとデータベースを設計していると、「主キー(データの識別番号)」の決め方に悩むシーンって本当に多いんですよね。

今日は、そんな主キー選びの強い味方、「UUID」についてお話しします。難しそうな名前ですが、実は私たちの生活にも通じる、とっても便利な仕組みなんですよ。

—

そもそも「主キー」ってなに?

データベースにおいて、主キーというのは「そのデータが誰なのかを特定するための背番号」だと思ってください。

例えば、学校のクラス名簿を想像してみてください。「出席番号1番」は必ず一人しかいませんよね。もし「名前」を背番号にしてしまうと、同姓同名の人がいたときに困ってしまいます。だからこそ、重複しない「世界に一つだけの番号」を振る必要があるんです。

連番(オートインクリメント)の限界

初心者の方が最初によく使うのが「1, 2, 3…」と順番に増えていく番号です。これはこれで分かりやすくて良いのですが、最近のシステムではちょっと困ることがあります。

例えば、世界中の人が同時に使うアプリを作るとしましょう。

  • Aさんがスマホで「データ1」を作った。
  • Bさんも別の場所で「データ1」を作ってしまった!

……あれ?これだとデータベースを合体させたときに、番号がぶつかって大混乱ですよね。これを避けるために、サーバー同士で「次の番号は何番?」と相談し続けるのは、実はすごく効率が悪いんです。

そこで登場!「UUID」という名の魔法の文字列

ここで登場するのがUUIDです。
これは「128ビット」という、人間には到底覚えられないほど大きな数字を、ランダムに生成する仕組みのこと。

見た目はこんな感じです:
`550e8400-e29b-41d4-a716-446655440000`

なんだか暗号みたいですよね。でも、これがすごいんです。

UUIDのここがすごい!

1. 誰とも被らない: あまりにも数字が巨大なので、地球上のどこで、誰が、いつ生成しても、偶然同じ番号が生まれる確率は、天文学的に低いんです。
2. 相談がいらない: 「前の番号はいくつだっけ?」とデータベースに聞く必要はありません。自分の手元で勝手に生成しても、他の誰とも被らないことが保証されているからです。
3. 分散システムに最適: 複数のサーバーを連携させるような、今の時代のシステムにはまさにうってつけなんですね。

PostgreSQLで使ってみよう

PostgreSQLなら、このUUIDを扱うのは驚くほど簡単です。

— テーブルを作るときにUUID型を指定するだけ!
CREATE TABLE users (
id uuid PRIMARY KEY,
name text
);

「どうやって番号を生成するの?」という疑問も、PostgreSQLには標準で便利な機能(`gen_random_uuid()`)が備わっているので、特別な準備はほとんどいりません。

最後に:使いどきを見極めよう

UUIDはとっても便利ですが、一つだけ注意点があります。それは「数字だけの連番に比べると、データサイズが少し大きくなる」ということ。

  • 小規模なシステムで、シンプルに管理したい: 連番(整数型)で十分。
  • 将来的にデータが増える、あるいは複数サーバーで連携する: UUIDが安心。

こんなふうに、状況に合わせて使い分けるのが「プロの設計」への第一歩です。

最初は少し難しく感じるかもしれませんが、UUIDは一度使い始めると、その「どこでも被らない」安心感から手放せなくなるはずですよ。ぜひ、次のプロジェクトで試してみてくださいね。

それでは、また次回の記事でお会いしましょう!

コメント

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