こんにちは!データベースの世界へようこそ。
普段、エンジニアとしてバリバリとデータベースを設計していると、「主キー(データの識別番号)」の決め方に悩むシーンって本当に多いんですよね。
今日は、そんな主キー選びの強い味方、「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は一度使い始めると、その「どこでも被らない」安心感から手放せなくなるはずですよ。ぜひ、次のプロジェクトで試してみてくださいね。
それでは、また次回の記事でお会いしましょう!
コメント